Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Как разобрать результат селекта где i*j записей?   Найти похожие ветки 

 
vegarulez ©   (2007-05-14 20:23) [0]

Привет всем мастерам.
У меня такой вопрос...

Я обычно делал сеоект который возрашал 1 рекорд с n филдзами и обращался к ним таким образом...


Var
MyList1: Tstringlist;
i,j:integer;
x:string
begin
 i:=0;
 j:=0;

....

          MyList1 := TStringList.Create;
           With Datamodule2.SQLQuery2 do
            begin
             if Active then Close;
              SQL.Text := SELECT * FROM z where a=""+ x +""";
               try
                  Open;
                      While not Eof do
                       begin
                        MyList1.Append(Fields[j].AsString);
                        Next;
                        j:=j+1;
                       end;
                except on E:Exception do
                 ShowMessage(E.Message);
               end;
            end;


Теперь вопрос...
пытаюсь провести селект такого плана:
select a, b from z where Id>1
То бишь возращается i на  j записей...
Вопрос как разобрать? (т.е. обратится к i-ой j-ой записи)


 
DrPass ©   (2007-05-14 20:32) [1]


>                       While not Eof do
>                        begin
>                         MyList1.Append(Fields[j].AsString);
>
>                         Next;
>                         j:=j+1;
>                        end;

И чё, так у тебя работало корректно?


 
Loginov Dmitry ©   (2007-05-14 20:52) [2]

> То бишь возращается i на  j записей...


Это как так?


 
vegarulez ©   (2007-05-15 15:38) [3]

DrPass ©   (14.05.07 20:32) [1]
>                         Next;
>                         j:=j+1;

Местами перепутал
 j:=j+1;                    
 Next;
                   

Loginov Dmitry ©   (14.05.07 20:52) [2]

ну то бишь раньше возращалась  запись 1 вот такого вида

--------------
| Id | a | b | ...
--------------
| 1  | x | y | ...
--------------

Теперь же у меня допустим выдаются данные такого вида

--------
| a | b |
--------
| x | y |
--------
| x | Y |
--------
| x | y |
--------
|...| ...|
--------


 
Desdechado ©   (2007-05-15 15:45) [4]

Чтоб обратиться к содержимому записи, нужно на нее перейти.
Locate, First, Next, Last, Prior
и особнячком GotoBookmark


 
DrPass ©   (2007-05-15 15:51) [5]


> vegarulez ©   (15.05.07 15:38) [3]

А хоть так, хоть так. Правильное перемещение по полям одной записи выглядит как-нибудь так:
For j:=0 to Fields.Count - 1 do
MyList1.Append(Fields[j].AsString);
...и без всяких while not eof, это уже нужно для перемещения по записям
Т.е. если у тебя много полей и много записей, то будет выглядеть так:
While not Eof do
begin
 For j:=0 to Fields.Count - 1 do
 MyList1.Append(Fields[j].AsString);
 Next;
end;


 
Sergey13 ©   (2007-05-15 16:06) [6]

> [3] vegarulez ©   (15.05.07 15:38)
> | x | y |
> --------
> | x | Y |
> --------
> | x | y |

Я бы добавил еще одно поле, хотя бы вычисляемое, строковое, длинной в 1 символ. С буквой "Й".
Тогда вывод примет законченный вид. 8-)



Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.063 c
15-1178537912
Рамиль
2007-05-07 15:38
2007.06.03
Кто нибудь делал фотокниги


2-1178994617
FIL-23
2007-05-12 22:30
2007.06.03
работ с edit


2-1179118293
vamp_avp
2007-05-14 08:51
2007.06.03
Как узнать дату изменения файла?


1-1175761791
DelphiLexx
2007-04-05 12:29
2007.06.03
Delphi 2006 настройка рабочего стола


2-1178960077
mr1Andersen
2007-05-12 12:54
2007.06.03
Что можно(нужно) сделать, чтобы Delphi запомнил