2017-03-20 4 views
0

私は現在、データベースに接続してDBGridにデータを表示するプログラムを持っていますが、このデータを抽出して別のアルゴリズムで使用できるようにする必要があります。SQLデータベースのデータを配列に

私はコマンドを使用する場合:クイズ

から選択スコアをそれは、画面上の値を示しています。私は事前に

[0]=23 
[1]=55 
[2]=64 

感謝するように配列にこれらの値を取得するにはどうすればよい(23,55,64)

+3

既存のコードを表示します。 –

+0

あなたは間違った方法で問題を考えています。 TDBGridは、データベースからデータを表示するためのGUIオブジェクトです。あなたが作業しなければならないのは、グリッドを生成するために使用しているTDataSet-子孫オブジェクトです。 – MartynA

答えて

0

TList(これは配列ラッパーオブジェクト)を使用することをお勧めします。以下は、私が使用しているコードの抜粋です。 TSomeRectは各行のフィールドデータを格納するレコードです。

function CreateQuery(pConnection: Tsqlconnection; pTransaction: TSQLTransaction): TSQLQuery; 
begin 
    result := TSQLQuery.Create(nil); 
    result.Database := pConnection; 
    result.Transaction := pTransaction 
end; 
var 
connect: TSQLite3Connection; 
SQLQuery1: TSQLQuery; 
transact: TSQLTransaction; 
Query  : TSQLQuery; 

lst :TList<TSomeRect>; 
    rec :TSomeRect; 
begin 

lst :=TList<TSomeRect>.create; 
connect:=TSQLite3Connection.create(nil); 

connect.LoginPrompt := False; 
connect.DatabaseName := 'c:\path\to\database.sqlite'; 
connect.KeepConnection := False; 
transact:=TSQLTransaction.create(nil); 
transact.action:=caNone; 
transact.database:=connect; 
connect.Transaction:=transact; 

Query := CreateQuery(Connect, Transact); 
Query.SQL.Text := 'select * from table'; 
Connect.Open; 
Query.Open; 
while not Query.Eof do 
    begin 
    rec.field1:= Query.FieldByName('field1').AsInteger; 
    rec.field2:= Query.FieldByName('field2').Asstring; 
    lst.add(rec); 
    Query.Next; 
    end; 
Query.Close; 
Connect.Close; 
Query.Free; 
Transact.Free; 
Connect.Free; 
関連する問題