Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid - DataSource - ADODataSet - Access. Daten auslesen (https://www.delphipraxis.net/13828-dbgrid-datasource-adodataset-access-daten-auslesen.html)

sigi 27. Dez 2003 16:10


DBGrid - DataSource - ADODataSet - Access. Daten auslesen
 
Hallo,
habe DBGrid über DataSource und ADODataSet mit einer Access Datenbank verbunden.

Finde aber keine Möglichkeit die Daten auszulesen, in Basic ging das mit (Data1.Recordset.Fields(1)) problemlos. Mit Recordset in Delphi komm ich nicht weiter, und mit:
Delphi-Quellcode:
ADODataSet1.Recordset.MoveFirst;
Label1.Caption := ADODataSet1.Fields[1].Text;
bekomme ich eine Ausgabe, aber nach:
Delphi-Quellcode:
ADODataSet1.Recordset.MoveNext;
Label1.Caption := ADODataSet1.Fields[1].Text;
kommt nichts. Was mach ich falsch?

Gruß Sigi

woki 27. Dez 2003 17:59

Re: DBGrid - DataSource - ADODataSet - Access. Daten auslese
 
Hi,

die korrekte Vorgehensweise in Delphi lautet:

T(Ado)dataset.first
T(Ado)dataset.next.

Unter Umständen kann es sinnvoll sein, TBetterAdodataset statt TAdodataset zu verwenden, nicht weil das Basickompatibler ist als Tadodatasset, sondern weil es einige unschöne Bugs fixt.

Grüsse
Woki

sigi 29. Dez 2003 16:15

Re: DBGrid - DataSource - ADODataSet - Access. Daten auslese
 
Hallo Woki.

Danke für die Antwort, aber mit:
Delphi-Quellcode:
TAdodataset.first;
TAdodataset.next.;
kommt die Fehlermeldung: Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt.

Mit:
Delphi-Quellcode:
if not ADODataSet1.Recordset.EOF = True then
   ADODataSet1.Recordset.MoveNext
else
   beep;
Kommt keine Meldung, und geht scheinbar bis zum letzten Datensatz, da EOF erreicht wird. Aber der Zeiger im DBGrid bleibt auf dem ersten Datensatz stehen, und ich kann auch nur diesen auslesen. Bin schon am verzweifeln.

TBetterAdodataset finde ich nirgendwo. Muss noch erwähnen, dass ich Anfänger bin.

Gruß Sigi

woki 29. Dez 2003 23:34

Re: DBGrid - DataSource - ADODataSet - Access. Daten auslese
 
Zitat:

Zitat von sigi
Delphi-Quellcode:
TAdodataset.first;
TAdodataset.next.;
kommt die Fehlermeldung: Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt.

ok, mit der Schreibweise

TAdodataset.first

meinte ich verwende die methode first der Klasse TAdodataset, aber da es keine Klassenmethode ist, mußt Du sie auf die Instanz der Klassen anwenden, die du gerade meinst.

also z.B. Adodataset1 :TAdodataset
dann Adodataset1.first, anders ausgedrückt, der Compiler muß ja wissen, welches DAtaset du gerade scrollen willst.

Zitat:

Zitat von sigi

Mit:
Delphi-Quellcode:
if not ADODataSet1.Recordset.EOF = True then
   ADODataSet1.Recordset.MoveNext
else
   beep;

Diese Vorgehensweise ist ein adospezifischer Weg, Delphi unterstützt aber viele verschiedene DB-Techniken. Dieser Weg hätte funktionieren können, muß aber nicht...

Zitat:

Zitat von sigi

TBetterAdodataset finde ich nirgendwo. Muss noch erwähnen, dass ich Anfänger bin.

Suchfunktion hier in der DP oder Googlen hilft sicher weiter. TBetteradodataset gehört nicht zum Lieferumfang von Delphi, ist aber Freeware. Die Probleme die du bis jetzt hast, haben damit aber nichts zu tun.

Grüsse
Woki

sigi 30. Dez 2003 22:34

Re: DBGrid - DataSource - ADODataSet - Access. Daten auslese
 
Hallo Woki,

DANKE für die Hilfe, soweit klappt es. Habe da aber noch ein Problem. Ich möchte während der Dateneingabe im DBGrid je nach Spalte diese auf Logik überprüfen.
Mit:
Delphi-Quellcode:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
  Label1.Caption := DBGrid1.Fields[0].Text;
wird nur den Inhalt der Datenbank angezeigt, nicht die augenblickliche Eingabe. Kannst Du mir einen Tipp geben wie das geht und eine eventuelle Falscheingabe gelöscht werden kann?

Gruß Sigi

woki 31. Dez 2003 01:02

Re: DBGrid - DataSource - ADODataSet - Access. Daten auslese
 
Schau Dir mal die Events der Feldkomponenten an, das sollte dir weiterhelfen.

Ach so, und eigentlich: neue Frage neuer Thread.

Grüsse
Woki


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 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