Загадка при выполнении ХП из VBA

ДАВИД
Дата: 27.02.2008 15:14:34
Всем привет!

Есть зубодробительная хранимая процедура! (279 строк) в SQL 2000+.adp
У нее 1 входной и 1 выходной параметры.
Запускаю ХП, ввожу параметр - выполняется и возвращает результат.
Делаю то-же самое через VBA - шишь. Вылетает и результат пустой.
Проверил соответствие типов параметров. Проверил как передаются в ХП - все нормально.
Что это может быть, ума не прилажу.
Может кто подскажет?
VladimirKr
Дата: 27.02.2008 17:05:26
Код VBA покажите и заголовок ХП. Что вы понимаете под результатом - значение выходного параметра или строки Select-ов ХП?
бухой бык
Дата: 27.02.2008 17:08:34
Меня больше интересовало бы само "вылетание"...
ДАВИД
Дата: 29.02.2008 11:15:51
1. ХП
ALTER PROCEDURE dbo.SpisFifo1 
(@idR int,@ret int output)
AS 
set @ret=0
... ну и т.д
в конце, если ХП отработала до конца
set @ret=1
VBA
    
Public Function FifoT()
    Dim cmd As ADODB.Command, prm As ADODB.Parameter
    Set cnn = CurrentProject.Connection
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = cnn
    cmd.CommandText = "SpisFiFo1"
    cmd.CommandType = adCmdStoredProc
    Set prm = cmd.CreateParameter("@idr", adInteger, adParamInput, , 0)
    cmd.Parameters.Append prm
    Set prm = cmd.CreateParameter("@ret", adInteger, adParamOutput)
    cmd.Parameters.Append prm
    cmd.Execute
    DoEvents
    DoCmd.Hourglass (0)
    If cmd.Parameters("@ret") = 1 Then
        MsgBox "Текущее списание по FIFO проданного товара Закончено!!!", 64, 
        "Списание по FIFO Текущее" 
    Else
        MsgBox "ОШИБКА при Cписании по FIFO !!! ", 64, "Списание по FIFO Текущее"
    End If
End Function

2. Кокда запускаю ХП из окна ACCESS, на запрос параметра idr даю 0, ХП проводит всю обработку до конца (есть ХП - проверяет все ли записи обработаны). В этом случае - ВСЕ.
Когда из программы запускается Function FifoT()
- обрабатываются не все записи
- @ret пустое
Вот такие пироги...
бухой бык
Дата: 29.02.2008 12:28:22
ну да. а чем не подходит CurrentProject.Connection.Execute ?
Программист-Любитель
Дата: 29.02.2008 12:36:04
Выходным параметром, жЫвотное!
бухой бык
Дата: 29.02.2008 12:40:41
А сделать нормальную процедуру и записать его во временную таблицу и потом проверить конечно нельзя? Надо именно вот так через жопу? ПраграмЫст?
Latuk
Дата: 29.02.2008 12:52:54
не вижу объявления cnn да и вообще зачем это дурацкое переприсвоение?
почему напрямую не сделать? почему cmd.ActiveConnection = cnn без set ? это ж вроде ссылка на объект а не текстовая строка подключения...
по ходу ваще ниче не выполняется т.к. команда подключения нету

команда на выполнение без dbo. посему вполне вероятно, что выполняется другая ХП - МойЮзер.SpisFiFo1, а не dbo.SpisFiFo1

PS Грязный код - афтар жми F1 и кури пример для ADODB.Command
бухой бык
Дата: 29.02.2008 13:11:44
автор, да ничё жать не надо.... Не умеешь юзать адо - не надо, есть другие более простые способы.
Одну строчку дописать и делать CurrentProject.Connection.Execute !
ДАВИД
Дата: 01.03.2008 00:30:17
Я просил подсказку, ф не поток дерьма от амбициозных м...
Прошу прощения.