Страница 1 из 1

Вызов ХП из Delphi

Добавлено: 03 мар 2009, 18:11
Bychok
Доброго времени суток.
Подскажите, будьте добры.
Процедура-выборка, при вызове в IBExpert отрабатывает беспроблемно.
При вызове из Delphi 7 через свойство SQL компонента TIBQuery ничего не происходит. При повторном вызове отрабатывает, но результат тот, который должен был быть при первом вызове. Описания подобной проблемы не нашел.

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 09:41
kdv
небось, suspend?

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 10:45
Bychok
Ну да) А как же без suspend'a?)

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 11:04
kdv
ну и. тогда процедуру вызываем как select * from myproc?

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 11:17
Bychok

Код: Выделить всё

CREATE PROCEDURE SP_S_MGR (
    mgr INTEGER)
RETURNS (
    maname VARCHAR(20),
    moid INTEGER,
    moname VARCHAR(60),
    ...
    c1970 INTEGER)
AS
BEGIN
    FOR     SELECT Marka.Name AS Ma_Name, Model.Model_id,
            ...
            Cost."_1971", Cost."_1970"
            FROM Marka JOIN Model ON Marka.Marka_id =Model.Marka_id
            ...
            ORDER BY Model.marka_id, Model.order_by
    INTO    :MaName, :MoId, :MoName, :BA45, :BA44, :BA43, :BA42, :BA41, :BA40,
            ...
            :c1970
    DO
    BEGIN
        SUSPEND;
    END
END

Код: Выделить всё

  DM.qMGR.Close;
  DM.qMGR.SQL.Clear;
  DM.qMGR.SQL.Add('SELECT * FROM Sp_s_mgr('
  	+ IntToStr(DM.tModel.FieldByName('Modelgroup').AsInteger) + ')');
  DM.qMGR.Open;

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 12:23
kdv
программу копайте. никаких причин чтобы не получить результат при первом вызове, не вижу, абсолютно.
так что скорее всего глючит Ваш код. А еще лучше, вот это
DM.tModel.FieldByName('Modelgroup').AsInteger
сначала лучше присвоить отдельной переменной, и только потом втыкать в текст запроса.
Хотя бы при отладке будет видно, "первый раз" там есть что-либо или нет (или то или не то).

p.s. код положено оформлять кнопочкой code. В первый раз сделал это за Вас, во второй раз будет предупреждение.

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 12:26
Bychok
Извините, об оформлении запамятовал. Не так уж часто отписываюсь.

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 12:27
Bychok
Спасибо, буду колупать код.

Re: Вызов ХП из Delphi

Добавлено: 04 мар 2009, 12:34
Bychok
Потрясающе)

Код: Выделить всё

  MGR := IntToStr(DM.tModel.FieldByName('Modelgroup').AsInteger);
  DM.qMGR.Close;
  DM.qMGR.SQL.Clear;
  DM.qMGR.SQL.Add('SELECT * FROM Sp_s_mgr(' + MGR + ')');
  DM.qMGR.Open;
Это работает без проблем) Не думал, что здесь может быть проблема)
Еще раз спасибо.