Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Хранимая процедура. Возвращение результата вставки Добавлено: 14.11.06 10:21  

Автор вопроса:  vitus | Web-сайт: www.jgukz.narod.ru
  Здравствуйте все у меня такой вопрос. На сервере MSSQL2000 лежит хранимая процедура которая добавляет запись в одну таблицу и возвращает ее в виде рекордсета. В QA все работает нормально процедура возвращает запись. Проблема в VB6.0 оттуда не возвращает но добавлять добавляет.
Вот код хранимой процедуры

CREATE PROCEDURE abitur_AddAbitur
@Family nvarchar(50), @fldName nvarchar(50), @Otch nvarchar(50),
@kodLang tinyint, @KodSchool smallint
AS
declare @KodMax int
select @KodMax=max(kod_abitur) from tb_abitur
 select @KodMax= isnull(@KodMax,0)
select @KodMax=@KodMax+1

insert into tb_abitur (kod_abitur, family, fld_name, otch, kod_lang, kod_school)
values (@KodMax, @Family, @fldName, @Otch, @kodLang, @KodSchool)
select * from tb_abitur where kod_abitur=@KodMax
go


-- =============================================
-- example to execute the store procedure
-- =============================================
EXECUTE abitur_AddAbitur 'Vitus', 'Vit', 'Vitttt', 1,2

GO
В QA работает.
Теперь код который я использую в VB

Sub RunSQL(strFamily As String, strName As String, strOtch As String, strKodLang As String, strKodSchool As String)
Dim strParametr As String
Dim rstRecordset As ADODB.Recordset
strParametr = "'" & strFamily & "', '" & strName & "', '" & strOtch & "', " & strKodLang & ", " & strKodSchool
Set rstRecordset = pclsConnect.Connect.pcnnConnect.Execute("abitur_AddAbitur (" & strParametr & ")", , adCmdStoredProc)
Debug.Print rstRecordset.Fields("kod_abitur").Value

End Sub

Возникает ошибка №3265
Не удается найти объект в семействе, соответсвующий требуемому имени или порядковому номеру.
Когда я подставляю другую хранимую процедуру которая просто делает выборку все работает, скорее всего это связано с тем что я в хранимой процедуре вставляю новую запись, поэтому она мне не возвращаеться. Подскажите как правильно реализовать возврат в VB6.0 добавленного значения в таблицу при помощи хранимой процедуры.



Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 14.11.06 11:31
select @KodMax=max(kod_abitur) from tb_abitur
select @KodMax= isnull(@KodMax,0)
select @KodMax=@KodMax+1

Уже сразу можно удалять всю базу и ставить кол автору.
Подобная логика увеличения ключа (да ещё тремя запросами, а не одним) гарантирует весь (вообще весь) набор глюков в дальнейшем.

pclsConnect.Connect.pcnnConnect.Execute("abitur_AddAbitur (" & strParametr & ";)", , adCmdStoredProc)

Что сие за маразм? Где можно было такое увидеть вообще?.. :-?
Есть объект ADODB.Command для выполнения процедур и передачи им параметров. А это... я даже не знаю как назвать.

Ответить

Номер ответа: 2
Автор ответа:
 vitus



Вопросов: 9
Ответов: 43
 Web-сайт: www.jgukz.narod.ru
 Профиль | | #2
Добавлено: 15.11.06 06:26
Я согласен что мой код немного необычный. Но ваш ответ содержит только одну критику, но нет ответа на заданый мной вопрос. Если вы спец в программировании, тогда подскажите как правильно, и главное как быстро можно реализовать все это. Вот вы говорите что есть объект ADODB.Command покажите пример, я тоже знаю что есть этот объект, но покажите как его использовать!!!

Ответить

Номер ответа: 3
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 15.11.06 06:28
Не принимай лично - он на всех ругается :-)

Ответить

Номер ответа: 4
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 15.11.06 08:42
Фпоиск. Лентяи.
http://msdn.microsoft.com/library/?url=/library/en-us/ado/html/dade4531-0bcc-4a52-8f86-b110ba2a3f9d.asp?frame=true

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам