AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TADOQuery-Komponente

Ein Thema von Jumpy · begonnen am 8. Feb 2011 · letzter Beitrag vom 8. Feb 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#1

TADOQuery-Komponente

  Alt 8. Feb 2011, 08:55
Datenbank: Oracle • Version: 10g • Zugriff über: ODBC
Ich hab eine Frage zur Komponente TADOQuery (hier q), also bitte ggf. verschieben, falls das hier am falschen Ort gefragt ist.

Ich verstehe nicht den Unterschied zwischen den Fields und Recordset. Hintergrund: Ich will die Datenmenge sequentiell durchgehen.

Delphi-Quellcode:
q.recordset.MoveFirst
while not q.Recordset.EOF do
  begin
  showmessage(q.recordset.Fields[1].Value); //Kommt oft Fehlermeldung von wegen Konvertierung von Typ variabel geht nicht.

  showmessage(q.Fields[i].AsString); //Das geht, zeigt aber immer nur (RecordsetCount mal) den ersten Datensatz an.
  q.Recordset.MoveNext;
  end;
Die folgende Variante ist ein Mischmasch, der irgendwie läuft, aber richtig kommts mir nicht vor:

Delphi-Quellcode:
q.recordset.MoveFirst
while not q.Recordset.EOF do
  begin
  showmessage(q.Fields[i].AsString);
  q.MoveBy(1);
  end;
Was ist nun der Unterschied zw. Fields und Recordset.Fields? Wie mach man das sauber?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.539 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TADOQuery-Komponente

  Alt 8. Feb 2011, 09:09
Auf das Recordset musst Du im Normalfall gar nicht direkt zugreifen. Das Recordset ist die Ergebnismenge der Abfrage (also die Zeilen), Fields sind die Felder (also die Spalten), die Du abgefragt hast. Auf Fields kannst Du direkten Einfluss nehmen, auf das Recordset nicht.
Delphi-Quellcode:
q.First;
//zeilenweise durchgehen
while not q.EOF do
  begin
    //spaltenweise durchgehen
    for i := 0 to q.Fields.Count - 1 do
      ShowMessage(q.Fields[i].AsString);
    q.Next;
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: TADOQuery-Komponente

  Alt 8. Feb 2011, 09:25
Ich verstehe nicht den Unterschied zwischen den Fields und Recordset. Hintergrund: Ich will die Datenmenge sequentiell durchgehen.
versuch es doch einmal so:

Delphi-Quellcode:
MyDM.ADOQuery1.open;
if not MyDM.ADOQuery1.eof then begin
  repeat
    ErgList.Add(MyDM.ADOQuery1.fields.FieldByNumber(1).asstring);
    //ErgList.Add(MyDM.ADOQuery1.Fieldbyname('feldname').asstring);
    MyDM.ADOQuery1.Next;
  until MyDM.ADOQuery1.Eof;
end;
MyDM.ADOQuery1.Close;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: TADOQuery-Komponente

  Alt 8. Feb 2011, 10:01
Dank euch beiden, das reicht mir doch schon. Ich werd mal auf die Benutzung des Recordset verzichten und direkt durch die "Query wandern".
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz