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

Вниз

Из базы данных в массив   Найти похожие ветки 

 
elf   (2003-07-10 19:22) [0]

Кто нибудь знает, как информацию из базы данных (поле таблицы), через компонент TQuery или что-то другое, поместить в массив, например array[i]. Если несложно листинг напишите.


 
AkaSaint ©   (2003-07-11 00:11) [1]

Если тебе нужно информацию из столбца в массив, то по-моему тебе придется просто перебрать все записи, вроде:

Table.First;
while (Table.EOF = False) do begin
Array[Table.RecNo-1] = Table.FieldByName["IntegerField"].AsInteger;
Table.Next;
end;
Массив, конечно, должен содержать не меньше элементов, чем записей в таблице (для этого примера).
Если ты имеешь в виду что-то другое, напиши.


 
Andriano ©   (2003-07-11 08:56) [2]

Посмотри вариантные массивы. Очень сильная штука и Ole поддерживается. Можно сохранить любой набор данных, лишь бы памяти хватило. BLOB конечно не запихнешь.

В примере sl:TStringList-список полей в DataSet. DataSet или Query - никакой разницы, просто у меня FIB-ы. Это пример вставки в Excel целиком всей таблицы сразу. Работает гораздо! быстрее, чем по одной ячейке.

XArr := VarArrayCreate([1, DataSet.RecordCount, 0, sl.Count-1], varVariant);

row:=1;
DataSet.First;
while not(DataSet.Eof) do begin
for i:=0 to sl.Count-1 do
XArr[row,i]:=DataSet.FieldByName(sl[i]).AsString;
inc(row);
DataSet.Next;
end;
WorkSheet.Range[Lett(StartCol)+IntToStr(StartRow), Lett(StartCol+sl.Count-1)+IntToStr(StartRow+DataSet.RecordCount-1)].Value := XArr;


 
KDS ©   (2003-07-11 12:44) [3]

Я использую всегда динамические массивы зарание определенного типа подобного набору полей таблицы
type
TCrossRec=record
crInd :LongInt;
crFlag :Char;
crMakName: AnsiString;
crSklCod: AnsiString;
crCommen: Boolean;
end;
var crList: array of TCrossRec;

DataSet.First;
while not DataSet.Eof do begin
SetLength(crList,DataSet.RecNo+1); {увеличиваю на 1 с каждой записью длину массив}
crList[DataSet.RecNo].crInd:=DataSet.FieldByName("f1").AsInteger;
crList[DataSet.RecNo].crSklCod:=DataSet.FieldByName("f1").AsString;
//набираешь все поля
DataSet.Next;
end;



 
Um   (2003-07-14 07:05) [4]


rc:=ADOTable1.RecordCount;
fc:=ADOTable1.FieldCount-1;
flds:=VarArrayCreate([0,fc],varVariant);
for x:=0 to fc do
flds[x]:=ADOTable1.Fields[x].FieldName;
varData:=ADOTable1.Recordset.getrows(RC,1,Flds);


 
Семен Сорокин ©   (2003-07-14 08:57) [5]

elf (10.07.03 19:22)
а я предпочитаю динамическому массиву использовать TList - там множество удобных свойств и методов реализовано (в т.ч. сортировка данных)


 
seregin   (2003-07-14 10:04) [6]

а лучше заранее сделать FetchAll
не помню нужен ли он с Next...


 
from_shadow   (2003-07-15 14:15) [7]

Если меня не подводит память, то в sql есть такая опция у select-а (ms sql)



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
3-10126
polluks
2003-07-15 10:27
2003.08.04
Создание dbf


3-10082
AkaSaint
2003-07-11 00:22
2003.08.04
Either BOF or EOF is true...


14-10445
Vorobyev Sergey
2003-07-17 09:38
2003.08.04
Кто-нибудь встречал конверторы hlp файлов в chm?


6-10323
NikB
2003-05-28 18:49
2003.08.04
Polzuiu SMS cherez HTTP i poluchaiu inogda ACCESS VIOLATION


3-10106
Shota_body
2003-07-07 11:32
2003.08.04
отчет на дельфи