[Delphi] Query uitlezen

Pagina: 1
Acties:

  • Goldraider
  • Registratie: Oktober 2004
  • Laatst online: 02-05 16:40
Ik ben bezig met het maken van een klein programma. Nu moet ik zeggen dat ik behoorlijk
nieuw ben met Delphi. Hierdoor kwam ik op een probleempje misschien dat iemand hier mij mee
kan helpen?

Het gaat om het uitlezen van een query en deze output neerzetten in een tCheckListBox. Het gaat dus om alle rijen van de tabel COD.

code:
1
2
3
4
5
DMmain.ADOQuery1.SQL.Clear;
DMmain.ADOQuery1.SQL.Add('SELECT COD FROM AR_COD');
DMmain.ADOQuery1.Active := True;
  for I := 0 to DMmain.ADOQuery1.RecordCount -1 do
checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[I].AsString);


Nu weet ik dat het in dit regeltje fout gaat :S

code:
1
checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[I].AsString);


weet iemand het?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
weet iemand het?
Niet als je niet specifieker bent ...

Wat gaat er dan fout ?
Welke fout krijg je ?

Gokje: begint die Fields collectie wel vanaf subscript 0, of begint ie vanaf index 1 ?

[ Voor 70% gewijzigd door whoami op 23-05-2007 15:16 ]

https://fgheysels.github.io/


Verwijderd

Goldraider schreef op woensdag 23 mei 2007 @ 15:06:
Ik ben bezig met het maken van een klein programma. Nu moet ik zeggen dat ik behoorlijk
nieuw ben met Delphi. Hierdoor kwam ik op een probleempje misschien dat iemand hier mij mee
kan helpen?

Het gaat om het uitlezen van een query en deze output neerzetten in een tCheckListBox. Het gaat dus om alle rijen van de tabel COD.

code:
1
2
3
4
5
DMmain.ADOQuery1.SQL.Clear;
DMmain.ADOQuery1.SQL.Add('SELECT COD FROM AR_COD');
DMmain.ADOQuery1.Active := True;
  for I := 0 to DMmain.ADOQuery1.RecordCount -1 do
checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[I].AsString);


Nu weet ik dat het in dit regeltje fout gaat :S

code:
1
checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[I].AsString);


weet iemand het?
Ik denk dat je een listindex out of bounds error krijg ;)
Je itereert over je recordcount, en vervolgens spreek je je fields er mee aan.
ieder record heeft een x aantal fields.
Waarschijnlijk wil je alleen een veld per record uitvragen dus zou je iets moeten krijgen als:
code:
1
  checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[0].AsString);


of

code:
1
  checkListBox1.Items.Add(DMmain.ADOQuery1.FieldByName('description').AsString);

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 00:19
Verwijderd schreef op woensdag 23 mei 2007 @ 15:19:
[...]

Ik denk dat je een listindex out of bounds error krijg ;)
Je itereert over je recordcount, en vervolgens spreek je je fields er mee aan.
ieder record heeft een x aantal fields.
Waarschijnlijk wil je alleen een veld per record uitvragen dus zou je iets moeten krijgen als:
code:
1
  checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[0].AsString);


of

code:
1
  checkListBox1.Items.Add(DMmain.ADOQuery1.FieldByName('description').AsString);
En natuurlijk daarna nog door naar het volgende record:
code:
1
DMmain.ADOQuery1.MoveNext

Verwijderd

jvdmeer schreef op woensdag 23 mei 2007 @ 15:23:
[...]
En natuurlijk daarna nog door naar het volgende record:
code:
1
DMmain.ADOQuery1.MoveNext
Is idd altijd handig :)

  • Goldraider
  • Registratie: Oktober 2004
  • Laatst online: 02-05 16:40
De error die ik krijg is List index out of bounds(1)

Het probleem is denk ik dat ik eerst de records wil ophalen met recordcount
en daarna de fields opvraag met dit regeltje
code:
1
checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[I].AsString);


Wat ik dus wil opvragen is dan ook de records van de query

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Zolang je niet EOF bent met die Query, MoveNexten.

En binnen die lus (loop over alle records), moet je over alle columns gaan loopen en die index gebruiken als fied-index.

Eigenlijk staat de oplossing al volledig in dit topic, verspreid over een paar posts natuurlijk. :)

[ Voor 22% gewijzigd door whoami op 23-05-2007 15:34 ]

https://fgheysels.github.io/


Verwijderd

Goldraider schreef op woensdag 23 mei 2007 @ 15:30:
De error die ik krijg is List index out of bounds(1)

Het probleem is denk ik dat ik eerst de records wil ophalen met recordcount
en daarna de fields opvraag met dit regeltje
code:
1
checkListBox1.Items.Add(DMmain.ADOQuery1.Fields[I].AsString);


Wat ik dus wil opvragen is dan ook de records van de query
dan gebruil je dus fields[0]
of
FieldByName('COD')

zie m'n eerdere post ;)

edit, vooruit danmaar, omdat zaagmans vanmiddag is langs geweest :)
code:
1
2
3
4
5
6
7
8
9
DMmain.ADOQuery1.SQL.Clear;
DMmain.ADOQuery1.SQL.Add('SELECT COD FROM AR_COD');
DMmain.ADOQuery1.Active := True;
DMmain.ADOQuery1.First;
while not  DMmain.ADOQuery1.Eof() do
begin
   checkListBox1.Items.Add(DMmain.ADOQuery1.FieldByName('COD').AsString); 
   DMmain.ADOQuery1.Next;
end;

[ Voor 27% gewijzigd door Verwijderd op 23-05-2007 15:37 ]


  • Goldraider
  • Registratie: Oktober 2004
  • Laatst online: 02-05 16:40
ik dank jullie allemaal hartelijk
Pagina: 1