2017-03-20 3 views
0

J'ai actuellement un programme qui se connecte à une base de données et affiche les données sur un DBGrid, mais j'ai besoin d'extraire ces données pour pouvoir les utiliser dans un autre algorithme.Données de base de données SQL dans un tableau

Lorsque j'utilise la commande: scores de sélection du jeu-questionnaire

Il montre les valeurs affichées à l'écran. (23,55,64)

Comment puis-je obtenir ces valeurs dans un tableau afin que

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

Merci à l'avance.

+3

Affichez votre code existant. –

+0

Vous pensez au problème de la mauvaise façon. Le TDBGrid est juste un objet gui pour afficher les données de la base de données. Ce que vous devez utiliser est l'objet descendant TDataSet que vous utilisez pour remplir la grille. – MartynA

Répondre

0

Idéal pour utiliser TList (qui est un objet wrapper de tableau). Voici un extrait d'un code que j'utilise. TSomeRect est un enregistrement pour stocker les données de champ de chaque ligne.

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;