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

Есть функция получения счетчика в Oracle:

create or replace function genid_ls return number is
Result number;
begin
select SEQ_FACEACCNT.nextval into Result from dual;
return(Result);
end genid_ls;

Работает в Оракле нормально, пытаюсь это значение получить в VB и передать его текстовому полю для дальнейшей обработки следующим кодом:

Set conn2 = CreateObject("ADODB.Connection")
Set Rs2 = CreateObject("ADODB.Recordset")
Set cmd2 = CreateObject("ADODB.Command")
'Dim p As ADODB.Parameters
'On Error GoTo erlabel1

conn2.ConnectionString = Form3.pass
conn2.Open
conn2.CursorLocation = 3
cmd2.ActiveConnection = conn2
cmd2.CommandType = 1
cmd2.Properties("PLSQLRSet") = True
cmd2.CommandText = "{CALL genid_ls('0')}"
Set Rs2 = cmd2.Execute
cmd2.Properties("PLSQLRSet") = False

Text1.AddItem Rs2("result")

Conn.Close

На что дает ошибку что метод Execute не подходит. Подскажите как его получить?
...
Рейтинг: 0 / 0
Выведение result в поле
    #34958418
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где у вас параметр на возвращаемое значение ?
Попробуйте сделать cmd2.Parameters.Refresh и посмотрите коллекцию cmd2.Parameters .
...
Рейтинг: 0 / 0
Выведение result в поле
    #34958652
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понимаю что туплю но работа с параметрами ничего мне не дает, говорит Type Mismatch. Подскажите плз приблизительно как получить это значение...
...
Рейтинг: 0 / 0
Выведение result в поле
    #34958679
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример, правда для скуля.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE PROCEDURE [dbo].[usp_ssp_add_kpi] @parent_id int,@parent_type int
AS
BEGIN 
	
	SET NOCOUNT ON;

	INSERT INTO dbo.SSP_KPI_List(kpi_name,parent_id,parent_type) VALUES('Новый KPI',@parent_id,@parent_type)
	RETURN @@IDENTITY
END
Вот код на васике
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
cmd.CommandText = "dbo.usp_ssp_add_kpi"
    
    cmd.Parameters.Refresh
    cmd.Parameters("@parent_id").Value = ItemKey
    cmd.Parameters("@parent_type").Value = ItemType(Me.trvMain.SelectedItem)
        
    cmd.Execute
    NewNodeId = cmd.Parameters("@RETURN_VALUE")

Посмотрите, может вам поможет.

...
Рейтинг: 0 / 0
Выведение result в поле
    #34964862
Wasup!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть пример получения значения параметра из процедуры, а не функции.

Процедура на Oracle:

Код: plaintext
1.
2.
3.
create or replace PROCEDURE mult(num in NUMBER, res OUT NUMBER) is
BEGIN
  res:=num* 2 ;
end mult;


Visual Basic


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Private Sub Form_Load()

Dim cnn         As ADODB.Connection
Dim rsRec       As ADODB.Recordset
Dim cmdCmd      As ADODB.Command
Dim Prm         As ADODB.Parameter

Set cnn = New ADODB.Connection
Set rsRec = New ADODB.Recordset
Set cmdCmd = New ADODB.Command

cnn.CommandTimeout =  0 
cnn.CursorLocation = adUseClient

cnn.Open "Provider=OraOLEDB.Oracle;Data Source=x;User ID=x;Password=x"

       
Set cmdCmd.ActiveConnection = cnn

cmdCmd.CommandText = "begin mult(?,?); end;"

Set Prm = cmdCmd.CreateParameter("Prm", adDouble, adParamInput, , Null)
cmdCmd.Parameters.Append Prm
cmdCmd.Parameters.Item( 0 ).Value = CInt(InputBox("Введите число", "В процедуру", "2"))

Set Prm = cmdCmd.CreateParameter("Prm", adDouble, adParamOutput, , Null)
cmdCmd.Parameters.Append Prm

cmdCmd.Execute

MsgBox "Результат: " & cmdCmd.Parameters( 1 ).Value, vbInformation, "Из процедуры"

End Sub

Получение значения из функции тоже, как-то можно сделать. Но если надо срочно, то может быть просто заменить функцию на процедуру?

З.ы. А почему нельзя получить значение счетчика простым селектом?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выведение result в поле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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