powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пытаюсь передать данные в Oracle
20 сообщений из 20, страница 1 из 1
Пытаюсь передать данные в Oracle
    #34925043
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время, суток!

Возникла следующая проблема, пытаюсь с помощью данного кода передать значения в процедуру 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
Пытаюсь передать данные в Oracle
    #34925296
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то в этом роде надо:

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
Пытаюсь передать данные в Oracle
    #34926907
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению смог применить вышеуказанное, возможно ли приблизительный вариант для решения данной проблемы. Ошибка в типа передаваемых данных, и она все равно выходит.
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34926918
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за ошибка-то?


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

Пробовал передавать не как техт, ругается оракл. А в этом варианте ругается Vb :(
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34927184
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного разобрался идет расхождение типов отправляемых данных, т.е. если подставляю одни цифры то все работает нормально, а если текст то в это случае и выходит ошибка.
Отсюда думаю и вопрос как добавлять текст?
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34927271
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип параметра какой?
Char, VarChar, ...,
Текст покажите
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34927373
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот процедурка которая делает запись -
------------------------------------------------
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
Пытаюсь передать данные в Oracle
    #34927596
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Пытаюсь передать данные в Oracle
    #34927636
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кавычки
Cmd.CommandText = "{CALL test2('" & sname.Text & "') }"
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34927690
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff
Спс, все заработало..... Кавычки все гениально и просто :) ...
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34929699
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в продолжение темы следующий вопрос:
Cmd.CommandText = "{CALL test2('" & sname.Text & "', '" & Format(Text2, "DD.MM.YYYY") & "' ) }"
передаю дату и получаю билиберду, при этом от переставки DD.MM.YYYY ничего не меняет он своеобразным образом все перемешывает, как решить данную пробему ? плз подскажите...
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34929724
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В оракле вот такой формат 20.01.0001 7:00:00, а должен был быть 01.01.2007, непонятным образом путаются значения.
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34929746
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему решил:
Cmd.CommandText = "{CALL test2('" & sname.Text & "', '" & Format(Text2, "yyyy.MM.dd") & "') }"
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34929971
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартный для оракла синтаксис значения даты при использовании динамического 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
Пытаюсь передать данные в Oracle
    #34958217
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бы сказать я пока незнаком со всеми методами в VB, приходится ознакамлиаться в ходе решения тех или иных проблем.
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34958260
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff....
Еще раз спасибо за помощь.

Возможно ли найти нормальную литературы VB для работы с ADO, даже в больших справочниках информации по этому поводу мизер, приходится питаться с форумов. Хотя проблем возникает все больше и больше в частности по параметрам которые возвращаются с Оракла не посредством SYS_REFCURSOR, а например out number или значения Result, сейчас например ищу метод работы с Сиквенсами, по этой проблеме вообще нигде не нашел никаких описаний приходится импровизировать, поэтому создал дополнительную темку http://www.sql.ru/forum/actualthread.aspx?tid=497724.
С уважением ,
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34963509
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток,
в продолжении темы:
Проблема заключается в следующем у меня существует ряд запросов обновлений определенных строк, в нескольких таблицах код большой, и таблиц много, сам код в 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
Пытаюсь передать данные в Oracle
    #34963824
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такую запись параметров процедуры я не знаю (...,smonth=>9,...).
Все что могу подсказать - поизучать библиотеку oo4o. В директории oracle есть примеры на VB6 как ей пользоваться. Это родная оракловая COM-библиотека доступа. Все что о ней знаю - она может все что может pl+ но не поддерживает привязку к контролам на форме.
...
Рейтинг: 0 / 0
Пытаюсь передать данные в Oracle
    #34964175
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, спасибо библиотека неплохая как жаль, что раньше не знал...
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пытаюсь передать данные в Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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