Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пытаюсь передать данные в Oracle / 20 сообщений из 20, страница 1 из 1
08.11.2007, 13:57
    #34925043
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Доброе время, суток!

Возникла следующая проблема, пытаюсь с помощью данного кода передать значения в процедуру Oracle (для создания записей в таблице), на что получаю ошибку метода передачи данных.
Количество передаваемых значений уменьших до двух, чтобы не усложнять код. Сам код в Оракле работает нормально, а в VB я новичок.

Set Conn = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")
Set Cmd = CreateObject("ADODB.Command")

Conn.Connectionstring = Label20.Caption
Conn.open
Conn.CursorLocation = 3
Cmd.ActiveConnection = Conn
Cmd.CommandType = 1
Cmd.Properties("PLSQLRSet") = True

Cmd.CommandText = "{CALL InsertSubscriber(" & Text1.Text & ", " & Text2.Text & "}"

Set Rs = Cmd.Execute
Cmd.Properties("PLSQLRSet") = False
Conn.Close

Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
08.11.2007, 14:52
    #34925296
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Что-то в этом роде надо:

Set CPw2 = New ADODB.Command

With CPw2
.ActiveConnection = Cn
.CommandText = QSQL
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter(, adInteger, adParamInput)
.Parameters.Append .CreateParameter(, adDouble, adParamOutput)
End With

Нужно параметры добавить в их коллекцию, с указанием что входное, что выходное, их тип данных. Сначала эту коллекцию почистить.
...
Рейтинг: 0 / 0
09.11.2007, 09:17
    #34926907
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
К сожалению смог применить вышеуказанное, возможно ли приблизительный вариант для решения данной проблемы. Ошибка в типа передаваемых данных, и она все равно выходит.
...
Рейтинг: 0 / 0
09.11.2007, 09:21
    #34926918
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
что за ошибка-то?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
09.11.2007, 09:32
    #34926947
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Method or Data member not found.

Пробовал передавать не как техт, ругается оракл. А в этом варианте ругается Vb :(
...
Рейтинг: 0 / 0
09.11.2007, 10:37
    #34927184
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Немного разобрался идет расхождение типов отправляемых данных, т.е. если подставляю одни цифры то все работает нормально, а если текст то в это случае и выходит ошибка.
Отсюда думаю и вопрос как добавлять текст?
...
Рейтинг: 0 / 0
09.11.2007, 10:56
    #34927271
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Тип параметра какой?
Char, VarChar, ...,
Текст покажите
...
Рейтинг: 0 / 0
09.11.2007, 11:16
    #34927373
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Вот процедурка которая делает запись -
------------------------------------------------
create or replace procedure Test2
(
SNAME varchar2
)
as
begin
insert into test1 s (SNAME)
values (SNAME);
end;
------------------------------------------------
Это код на VB
-------------------------------------------------
Dim Conn
Dim Rs
Dim Cmd

Private Sub Command1_Click()
Set Conn = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")
Set Cmd = CreateObject("ADODB.Command")


Cmd.ActiveConnection = Conn
Cmd.CommandType = 2
Cmd.Properties("PLSQLRSet") = True

Cmd.CommandText = "{CALL test2(" & sname(1).Text & ") }"
Set Rs = Cmd.Execute
Cmd.Properties("PLSQLRSet") = False

Conn.Close

End Sub
...
Рейтинг: 0 / 0
09.11.2007, 12:00
    #34927596
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Vb функцию немного подправил верхняя нерабочая:

Set Conn = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")
Set Cmd = CreateObject("ADODB.Command")

Conn.Connectionstring = Label1.Caption
Conn.open
Conn.CursorLocation = 3
Cmd.ActiveConnection = Conn
Cmd.CommandType = 1
Cmd.Properties("PLSQLRSet") = True

Cmd.CommandText = "{CALL test2(" & sname.Text & ") }"
Set Rs = Cmd.Execute
Cmd.Properties("PLSQLRSet") = False

Conn.Close

В данном варианте прекрасно передаются числа, и записываются. Если же хочу передать текст Оракл его вопринимает как переменую. Подскажите лекарствою
...
Рейтинг: 0 / 0
09.11.2007, 12:09
    #34927636
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Кавычки
Cmd.CommandText = "{CALL test2('" & sname.Text & "') }"
...
Рейтинг: 0 / 0
09.11.2007, 12:19
    #34927690
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Worobjoff
Спс, все заработало..... Кавычки все гениально и просто :) ...
...
Рейтинг: 0 / 0
10.11.2007, 08:28
    #34929699
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
в продолжение темы следующий вопрос:
Cmd.CommandText = "{CALL test2('" & sname.Text & "', '" & Format(Text2, "DD.MM.YYYY") & "' ) }"
передаю дату и получаю билиберду, при этом от переставки DD.MM.YYYY ничего не меняет он своеобразным образом все перемешывает, как решить данную пробему ? плз подскажите...
...
Рейтинг: 0 / 0
10.11.2007, 09:27
    #34929724
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
В оракле вот такой формат 20.01.0001 7:00:00, а должен был быть 01.01.2007, непонятным образом путаются значения.
...
Рейтинг: 0 / 0
10.11.2007, 10:48
    #34929746
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Проблему решил:
Cmd.CommandText = "{CALL test2('" & sname.Text & "', '" & Format(Text2, "yyyy.MM.dd") & "') }"
...
Рейтинг: 0 / 0
10.11.2007, 14:58
    #34929971
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Стандартный для оракла синтаксис значения даты при использовании динамического SQL:
" TO_DATE('" & Format(varDate, "dd.MM.YYYY hh:mm:ss") & "', 'dd.mm.yyyy hh24:mi:ss')"

(кстати, в MS SQL то же есть подобная "заморочка")

Почти все СУБД понимают универсальный формат: Format(varDate, "yyyy-MM-dd hh:mm:ss")
но это - на свой страх и риск.

Лучше повозиться с ADO параметрами - универсальней код получится.

Кстати, вопрос не в тему, а почему DTPicker не используем?
...
Рейтинг: 0 / 0
22.11.2007, 13:54
    #34958217
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Как бы сказать я пока незнаком со всеми методами в VB, приходится ознакамлиаться в ходе решения тех или иных проблем.
...
Рейтинг: 0 / 0
22.11.2007, 14:04
    #34958260
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Worobjoff....
Еще раз спасибо за помощь.

Возможно ли найти нормальную литературы VB для работы с ADO, даже в больших справочниках информации по этому поводу мизер, приходится питаться с форумов. Хотя проблем возникает все больше и больше в частности по параметрам которые возвращаются с Оракла не посредством SYS_REFCURSOR, а например out number или значения Result, сейчас например ищу метод работы с Сиквенсами, по этой проблеме вообще нигде не нашел никаких описаний приходится импровизировать, поэтому создал дополнительную темку http://www.sql.ru/forum/actualthread.aspx?tid=497724.
С уважением ,
...
Рейтинг: 0 / 0
25.11.2007, 11:18
    #34963509
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Доброго времени суток,
в продолжении темы:
Проблема заключается в следующем у меня существует ряд запросов обновлений определенных строк, в нескольких таблицах код большой, и таблиц много, сам код в Oracle работает нормально, производит абсолютно логичные действия без ошибок, но вот незадача: я пытаюсь передать такие же строковые данные повторяюсь следующим кодом:

Set con = New ADODB.Connection
Set rst = New ADODB.Recordset

sConString = pass
con.Open sConString

sSQLString = "begin numb_calc(stelnumber => 97556465, smonth => 9,syear => 2007); end;"
Set rst = con.Execute(sSQLString)


в Оракле работает идеально, но с VB выдает
ORA-01861: literal does not format string
Юзал поиск тем, но ничего под свой случай не нашел. Проблема заключается в том чтобы передать данные из VB, и вылетает эта ошибка, пробовал несколько вариантов преобразования передачи чисел Varchar, Varchar2, Number (в Оракле работает со всеми форматами) (Date под мой случай не подходит), ошибка упорно вылетает при обращении со сторонего интерфейса, хотя повторюсь из Plus все работает идеально... В чем беда не пойму. :(
...
Рейтинг: 0 / 0
25.11.2007, 18:35
    #34963824
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
Такую запись параметров процедуры я не знаю (...,smonth=>9,...).
Все что могу подсказать - поизучать библиотеку oo4o. В директории oracle есть примеры на VB6 как ей пользоваться. Это родная оракловая COM-библиотека доступа. Все что о ней знаю - она может все что может pl+ но не поддерживает привязку к контролам на форме.
...
Рейтинг: 0 / 0
26.11.2007, 08:48
    #34964175
kiv-1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь передать данные в Oracle
ок, спасибо библиотека неплохая как жаль, что раньше не знал...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пытаюсь передать данные в Oracle / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]