Автор вопроса: 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 добавленного значения в таблицу при помощи хранимой процедуры.
select @KodMax=max(kod_abitur) from tb_abitur
select @KodMax= isnull(@KodMax,0)
select @KodMax=@KodMax+1
Уже сразу можно удалять всю базу и ставить кол автору.
Подобная логика увеличения ключа (да ещё тремя запросами, а не одним) гарантирует весь (вообще весь) набор глюков в дальнейшем.
Что сие за маразм? Где можно было такое увидеть вообще?.. :-?
Есть объект ADODB.Command для выполнения процедур и передачи им параметров. А это... я даже не знаю как назвать.
Я согласен что мой код немного необычный. Но ваш ответ содержит только одну критику, но нет ответа на заданый мной вопрос. Если вы спец в программировании, тогда подскажите как правильно, и главное как быстро можно реализовать все это. Вот вы говорите что есть объект ADODB.Command покажите пример, я тоже знаю что есть этот объект, но покажите как его использовать!!!