Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цикл [D7, IB6.x, dBase, FoxPro]


Zalum ©   (2009-03-05 13:18:00) 

Делаю 1-ый запрос. Получаю количество данных. Делаю 2-ой запрос, и из полученного набора данных, мне нужно по порядку
перебрать каждый book_id,
и в зависимости от этого значения производить определенные действия:
( case FieldByName('book_ID').AsInteger of
                             21 : begin
                                  .....
                             22 : begin
)
Моя проблеммазаключается в том, что не знаю как перебирать эти данные. Я пробовал делать в цикле for I := 0 to j-1 do, но так не верно.

with Unit1.IBQuery1 do
     begin
          SQL.Clear;
          SQL.Add(' select count(*) FROM Table1 '+
                        'WHERE .... '+
                        'order by ...');
                  ParamByName('...
                 
                  Open;
                      j := FieldByName('count').AsInteger;
                   Close;

with Unit1.IBQuery1 do
     begin
          SQL.Clear;
          SQL.Add(' select * FROM Table1 '+
                        'WHERE .... '+
                        'order by ...');
                  ParamByName('...
                 
                  Open;
                      for I := 0 to j-1 do
                      begin
                             
                             case FieldByName('book_ID').AsInteger of
                             21 : begin
                                  .....
                             22 : begin
                      end;

                   Close;
        end;


Zalum   (2009-03-05 13:31:00) [1]

Спасибо огромное!


Ega23   (2009-03-05 13:23:00) [2]

Зачем 2 запроса?

with DataSe do
begin
 SQL.Text := 'select * from Table where ....';
 try
   try
     Open;
     First;
     while not Eof do
     begin
       case FieldByName(...).AsInteger of
         21 : begin
                 ......
               end;
         22 : begin
                 ......
               end;
         .......
         else
            begin
              ........
            end;
       end;// case
       Next;
     end;
   except on E : Exception do
     ShowMessage(E.Message);
   end;
 finally
   Close;
 end;
end;


Сергей М.   (2009-03-05 13:21:00) [3]

with Unit1.IBQuery1 do
    begin
         SQL.Clear;
         SQL.Add(' select * FROM Table1 '+
                       'WHERE .... '+
                       'order by ...');
                 ParamByName('...
               
                 Open;
                  while not Eof do
                     begin
                           
                            case FieldByName('book_ID').AsInteger of
                            21 : begin
                                 .....
                            22 : begin
                          Next;
                     end;

                  Close;
       end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо