Как вывести все записи, а не только одну

Konstantin555
Дата: 15.11.2007 19:49:49
Обработчик события по кнопке "Определить":
procedure TForm1.Button1Click(Sender: TObject);
var
 s1:String;
 a:Integer;
begin
 with StoredProc1 do
 begin
  ParamByName('FGROUP').AsString:=EGroup.Text;
  ExecProc;
  if ParamByName('FFIOSTUD').AsMemo='' then
   MessageDlg('Информация о данной группе отсутствует',mtError,[mbCancel],0)
  else
  begin
   LBStudents.Items.Text:=ParamByName('FFIOSTUD').AsMemo;
  end;
 end;
end;

Результат после нажатия - в прикреплённом рисунке, т.е. выводит ТОЛЬКО одна запись...

Если созданную процедуру проверить непосредственно в IBConsole, то выводит всё правильно

Отсюда и вопрос - как в Делфи вывести все записи, а не только первую запись?..
Konstantin555
Дата: 15.11.2007 19:53:12
Сам рисунок:
Мимопроходящий
Дата: 15.11.2007 19:55:44

Привет, Konstantin555!
Ты пишешь:

Konstantin555
K> Отсюда и вопрос - как в Делфи вывести все записи, а не только первую запись?..
F1 поможет.

зы: TStoredProc не для этого

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

TPAKTOPA
Дата: 15.11.2007 19:57:43
Не очень внятно, что вы хотите сделать. Но если вы пытаетесть вывести нескольо записей, которые возращает StoredProc1 ( в IBExperte выводит), то проблема здесь :

LBStudents.Items.Text:=ParamByName('FFIOSTUD').AsMemo;

Попробуйте что-то типа:
while not(StoredProc1.Eof)
begin
LBStudents.Items.Add(ParamByName('FFIOSTUD').AsMemo);
StoredProc1.Next;
end;
TPAKTOPA
Дата: 15.11.2007 20:00:34
Да, и как сказал МП, StoredProce не для етого. Selectable Procedure лучше ( и нада) читать в другом компоненте - TIBSQL.

А еще лучше, прикрепи не StringGrid , a пользуйся
TDBGrid and ( TIBQuery or TIBDataSet ) and TIBDataSource
Мимопроходящий
Дата: 15.11.2007 20:01:42

Привет, TPAKTOPA!
Ты пишешь:

TPAKTOPA
T> Попробуйте что-то типа:
T> while not(StoredProc1.Eof)
а получится?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

Konstantin555
Дата: 15.11.2007 20:08:41
Мимопроходящий

Привет, Konstantin555!
Ты пишешь:

Konstantin555
K> Отсюда и вопрос - как в Делфи вывести все записи, а не только первую запись?..
F1 поможет.

зы: TStoredProc не для этого

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4


Возможно и не для этого...
В книжке в качестве примера указан вывод одного значения, а у меня должно вывести несколько...



TPAKTOPA
Не очень внятно, что вы хотите сделать. Но если вы пытаетесть вывести нескольо записей, которые возращает StoredProc1 ( в IBExperte выводит), то проблема здесь :

LBStudents.Items.Text:=ParamByName('FFIOSTUD').AsMemo;

Попробуйте что-то типа:
while not(StoredProc1.Eof)
begin
LBStudents.Items.Add(ParamByName('FFIOSTUD').AsMemo);
StoredProc1.Next;
end;


Возможно не так выразился, сорри.
Но ты правильно понял

Результат - ни одной записи
Трансформировал код на следующий:
procedure TForm1.Button1Click(Sender: TObject);
var
 s1:String;
 a:Integer;
begin
 with StoredProc1 do
 begin
  ParamByName('FGROUP').AsString:=EGroup.Text;
  ExecProc;
  if ParamByName('FFIOSTUD').AsMemo='' then
   MessageDlg('Информация о данной группе отсутствует',mtError,[mbCancel],0)
  else
  begin
   while not (StoredProc1.Eof) do
   begin
    LBStudents.Items.Add(ParamByName('FFIOSTUD').AsMemo);
    StoredProc1.Next;
   end;
  end;
 end;
end;
Konstantin555
Дата: 15.11.2007 20:49:35
На мой взгляд, нужно работать с
StoredProc1.FieldValues('FFIOSTUD')

По идеи, будут возвращены все значения поля FFIOSTUD.

Только загвоздка в том, что возвращаемый результат - типа Variant...

Отсюда и вопрос - как работать с Variant в данном случае?
TPAKTOPA
Дата: 16.11.2007 15:25:46
МП тебе уже косвено ответил
Мимопроходящий
TPAKTOPA
T> Попробуйте что-то типа:
T> while not(StoredProc1.Eof)
а получится?


Компонент у тебя - не тот, не поддерживает больше одного результата. Замени везде StoredProc с IBQuery примерно.

Konstantin555
На мой взгляд....
Только загвоздка в том, что возвращаемый результат - типа Variant...

Отсюда и вопрос - как работать с Variant в данном случае?

А в чем проблема Variant конвертировать в String, или что тебе угодно ?