Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как подключить Грид к Ораклу / 12 сообщений из 12, страница 1 из 1
15.02.2005, 18:02:03
    #32917041
Piter_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Подскажите, плз, где ошибка. Есть процедура на Оракле с одним входящим параметром. Проверял на Оракле возвращает нужное значение.
Хочу получить данные в Гриде.
Ругает MSHFlexGrid, хотя аналогичная процедура в СКЛ Сервере 2000 работает.


Private Sub Command3_Click()

Dim rst As ADODB.Recordset
Set rst = New Recordset

Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter

pasword = "A1"
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=" & pasword & ";Persist Security Info=False;User ID=AISOIL;Data Source=AIS2"

Set cmd = New ADODB.Command
cnn.Open
Set cmd.ActiveConnection = cnn
cmd.CommandText = "KLIENT_1"
cmd.CommandType = adCmdStoredProc

NomerSpisok = 2 '----- Посылаем параметр

Set rst.ActiveConnection = cnn
Set prm = cmd.CreateParameter("NUM", adInteger, adParamInput, , NomerSpisok)
cmd.Parameters.Append prm

Set rst = cmd.Execute()
Set MSHFlexGrid1.Recordset = rst '-- Ругает,....

rst.Close

End Sub

------------------ Оракл - ХП

CREATE OR REPLACE PROCEDURE Klient_1(NUM IN NUMBER)
IS
IN_KLIENT VARCHAR2(30);
BEGIN
SELECT NAIMKLIENT INTO IN_KLIENT FROM KLIENT
WHERE KLIENT.idklient=NUM;
DBMS_OUTPUT.put_line('Это клиент- '||IN_KLIENT);
END KLIENT_1;
...
Рейтинг: 0 / 0
15.02.2005, 18:04:04
    #32917044
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
укажи имя схемы, например SCOTT.KLIENT_1
...
Рейтинг: 0 / 0
15.02.2005, 18:11:53
    #32917063
Piter_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Так схема в строке подключения, или еще где надо?
User ID=AISOIL
...
Рейтинг: 0 / 0
15.02.2005, 18:23:05
    #32917079
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Никогда не работал на VB, но есть некоторые сомнения, что dbms_output.put_line будет выводить строку в грид. Например, в Delphi используются другие механизмы.
...
Рейтинг: 0 / 0
15.02.2005, 18:24:59
    #32917081
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Оригинальный текст ошибки в студию.

Magnus
...
Рейтинг: 0 / 0
15.02.2005, 18:27:23
    #32917086
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Вдогонку. Если этот SELECT не находит данных, то возбуждается исключение, которое считается хорошим тоном обрабатывать в процедуре, иначе сообщение возвратиться в вызывающую среду

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
BEGIN
........
EXCEPTION
  when no_data_found then
     -- любая обработка, например
     raise_application_error(- 20001 , 'Так тебе и надо');
END;     
...
Рейтинг: 0 / 0
15.02.2005, 19:58:07
    #32917251
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Piter_

Код: plaintext
1.
2.
3.
Set MSHFlexGrid1.Recordset = rst '-- Ругает,....

'Заменить на
'Set MSHFlexGrid1.datasource = rst
...
Рейтинг: 0 / 0
16.02.2005, 09:28:05
    #32917654
_bob
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
оракловые ХП возвращают рекордсет через refcursor, нужно создать пакет, обьявить переменную refcursor уровня пакета, хранимку тоже создавать в этом пакете, refcursor обьявлять как out параметр хранимки, и вот только тогда получишь рекордсет

да, ещё в свойствах adodb.command параметр надо поставить, что это рекордсет из refcursor

переписывать сто раз одно и то же смысла нет, на оракловом форуме поиск по словам "refcursor" и "рекордсет" поможет, там есть примеры и таких хранимок и клиентских кодов
------------------
arbeit macht frei
...
Рейтинг: 0 / 0
16.02.2005, 15:35:41
    #32918819
Piter_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
Спасибо всем откликнувшимся. Ошибка в присоединненом файле.
Действительно нельзя так просто вернуть весь рекордсет из ХП.
Что просто в СКЛ. Никакой из Гридов бейсика с этим не хочет работать.
...
Рейтинг: 0 / 0
17.02.2005, 17:42:39
    #32921684
_bob
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
MSHFlexGrid, DevExpress dxDBGrid и ComponentOneTrueDBGrid прекрасно работают, получаешь Adodb.рекордсет, пихаешь его гриду и все
------------------
arbeit macht frei
...
Рейтинг: 0 / 0
18.02.2005, 10:36:37
    #32922479
Piter_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
to bob
Как в Бейсике вызвать - подключить к одному из указанных Вами Гридов. Как вернуть из
Оракла весь сформированный набор?
В форуме по Ораклу подсказали что процедуру надо формировать так

CREATE PROCEDURE MyProc(MyParam in number, RS OUT SYS_REFCURSOR)
IS
begin
OPEN RS FOR
SELECT *
FROM MyTable
WHERE ID = MyParam;
END MyProc;

У меня под 8-й ОРА это не компилирует. В СКЛ плюсе говорит,
что процедура откомпилирована но с ошибками.
Может это только под 9-й.
Кто знает? Как тогда быть?
...
Рейтинг: 0 / 0
18.02.2005, 17:48:00
    #32924035
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключить Грид к Ораклу
см форум для Oracle , я там тебе ответ уже написал как надо пакет оформлять
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как подключить Грид к Ораклу / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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