Вниз
Скачать: CL | DM;

Извлечение данных посредством ADODataSet   Найти похожие ветки 

 
Barcebel   (2004-08-11 15:51) [0]

Возникла следующая проблема.
TADODataSet содержит свойства FieldCount и RecordCount, а также
свойство Fields. Используя сочетание FieldCount и Fields, я могу получить названия полей. Как мне получить данные, содержищиеся в этих полях, для каждой записи?


 
Соловьев ©   (2004-08-11 15:52) [1]

FieldByName(Fields[i]).Value


 
46_55_41_44 ©   (2004-08-11 15:58) [2]

1)
 TADODataset.FieldByBName(FieldName : String).AsString
                                             .AsInteger
                                             .asVariant
                                             .и т.д.
Пример:
 S := Query1.FieldByName("Name").AsString;
 I := Query1.FieldByName("Age").AsInteger;
в зависимости от типа поля...

2) TADODataset.Fields[i].Value
Пример:
 i := Query1.FieldByName("Age").AsVariant;
где i либо Variant либо Integer


 
Barcebel   (2004-08-11 16:16) [3]

Уточню свой вопрос.
Как, перемещаясь в цикле от начала до RecordCount, получить
значение текущей записи в текущем поле?
Есть ли методы на подобии
ADODataSet1.Records[i].GetValue


 
46_55_41_44 ©   (2004-08-11 16:22) [4]

1)
 repeat
   for i := 0 to ADODataSet.FieldCount - 1 do
   begin
     Variable := ADODataSet.Fields[i].Value;
     ...
   //Ну вобщем делай с этими данными, что хочешь!!!
   end;
   ADODataSet.Next;
 Until ADODataSet.Eof;
2)
 for i := 0 to ADODataSet.RecordCount - 1 do
 begin
   for j := 0 to ADODataSet.FieldCount - 1 do
   begin
     ...ADODataSet.Fields[i].Value;...
   //Ну вобщем делай с этими данными, что хочешь!!! :))
   end;
 end;


 
Соловьев ©   (2004-08-11 16:30) [5]


>  for i := 0 to ADODataSet.RecordCount - 1 do

Да уж...Читайте книги. или хелп хоть чуть-чуть
The dataset component must be active for RecordCount to provide a valid number. Should ADO not be able to determine that actual number of rows, RecordCount will return a value of negative one (-1).

Нужно ждругое свойство юзать

while not ADODataSet.Eof do begin
//тут чего-то делаем с полями
ADODataSet.Next;
end;


 
Barcebel   (2004-08-11 17:43) [6]

Вы абсолютно правы. Используя ADODataSet1.Next, получил нужный
результат. Кстати, пример нашел в хелпе.

P.S. А вообще я все не на Delphi, а на Builder делал.
VCL в сочетании с C++ и WinAPI - отличный инструмент.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
14-1092652587
КаПиБаРа
2004-08-16 14:36
2004.09.05
Человеку который хотел добавить нолики впереди числа


8-1087015047
dimon_programmer
2004-06-12 08:37
2004.09.05
Аналог Scanline в C++


14-1092582660
Дмитрий12
2004-08-15 19:11
2004.09.05
Пожалуйста, помогите перевести код на C++:


1-1093026733
Makssim
2004-08-20 22:32
2004.09.05
Как программно получить время?


14-1092742868
DelphiNew
2004-08-17 15:41
2004.09.05
расчёт Возмещение НДС




   Наверх