Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi EDatabaseError - auslesen aus DB (https://www.delphipraxis.net/79998-edatabaseerror-auslesen-aus-db.html)

DocE 1. Nov 2006 11:46

Re: EDatabaseError - auslesen aus DB
 
Im Prinzip musst Du nur eine DataSource auf das Formular ziehen, diese mit der Query verknüpfen und ein DBGrid welches mit der DataSource verknüpft wird...

Grüsse
...Doc

capo 1. Nov 2006 11:51

Re: EDatabaseError - auslesen aus DB
 
Hallo DocE
danke, hab ich gemacht, bekomme folgende Meldung:
Zitat:

---------------------------
Fehler
---------------------------
Query1: Keine SQL-Anweisung verfügbar.
---------------------------
OK
---------------------------

mkinzler 1. Nov 2006 11:56

Re: EDatabaseError - auslesen aus DB
 
Du scheinst immer mehr Änderungen zu machen, als man dir vorschlägt. Poste mal den ganzen aktuellen Code.

DocE 1. Nov 2006 12:01

Re: EDatabaseError - auslesen aus DB
 
...und vielleicht dazu noch, wann die Fehlermeldung auftritt (beim Starten, wenn Du Änderungen im DBGrid vornehmen möchtest). Die Meldung deutet daraufhin, dass Du versuchst im DBGrid Daten anzuzueigen/zu ändern, obwohl die Query noch keine SQL-Anweisung hat...

capo 1. Nov 2006 12:04

Re: EDatabaseError - auslesen aus DB
 
Hallo,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
With Query1 do
 begin
sql.add('select * from Rechnungen where BEZAHLT = :BEZAHLT ');
 //  sql.add('select RGNR,BEZAHLT from Rechnungen where BEZAHLT = :BEZAHLT ');
ParamByName('BEZAHLT').AsString:= 'N'; // falls es ein Char ist
Open;
try
  while not EOF do
  begin

 memo3.Lines.Add(FieldByName('BEZAHLT').AsString +  ' => gefunden!');
  Next;
 End;
finally
  Close;
end;
end;
end;

DocE 1. Nov 2006 12:06

Re: EDatabaseError - auslesen aus DB
 
Das "Close" ist das Problem. Dann ist die Datenmenge ja wieder geschlossen und kann auch nicht mehr angezeigt werden...

hoika 1. Nov 2006 12:08

Re: EDatabaseError - auslesen aus DB
 
Das

Close

muss weg, die Query muss offen bleiben,
wenn du die Daten im DBGrid anzeigen möchtest.

Ausserdem prüfe, ob alles verknüpft ist.

DBGrid.DataSource -> TDataSource.DataSet -> Query

Heiko

capo 1. Nov 2006 13:26

Re: EDatabaseError - auslesen aus DB
 
hallo und danke nun klappt es... bis auf eine kleine Fehlermeldung wenn ich zweimal hintereinander auf den Button klick:


Zitat:

---------------------------
Ungültiges Schlüsselwort

Symbol-String: select

Zeilennummer: 2.
---------------------------
Beim Code hab ich nur das close rausgenommen.

Nunja, jedenfalls klappt das auslesen. Nochmal Danke dafür :-D

hoika 1. Nov 2006 13:37

Re: EDatabaseError - auslesen aus DB
 
Hallo,

naja, das habe ich nun nicht noch gesagt :wall: )
ein bissel solltest du aich selber was machen .. ;)

beim zweiten Drücken ist die Query schon offen,
dann muss man die vorher zumachen

if Query.Active then Query.Active:= False;

oder sogar als 1. Befehl im OnButton

if Query.Active then Exit;

Das kommt aber auf deine Logik an,
bisher macht es ja keinen Sinn, überhaupt einen Button reinzupacken,
da die Query ja immer offen sein muss.


Heiko
PS:
Übrigens würde ich schleunigst die DB wechseln.
Paradox ist out.
Sobald ein "index out of date" kommt, sprechen wir weiter ;)

raiguen 1. Nov 2006 16:15

Re: EDatabaseError - auslesen aus DB
 
Zitat:

Zitat von capo
hallo und danke nun klappt es... bis auf eine kleine Fehlermeldung wenn ich zweimal hintereinander auf den Button klick:


Zitat:

---------------------------
Ungültiges Schlüsselwort

Symbol-String: select

Zeilennummer: 2.
---------------------------
Beim Code hab ich nur das close rausgenommen.

Ist klar, warum diese Meldung kommt:
in deinem Code steht Query1.SQL.Add(...), d.h. bei jedem Click auf den Button wird zur bereits bestehenden SQL-Anweisung eine neue (in diesem Fall die gleiche) hinzugefügt :-). Das Ergebnis ist:
select * from Rechnungen where BEZAHLT = :BEZAHLT
select * from Rechnungen where BEZAHLT = :BEZAHLT

Auf der sicheren Seite bist du, wenn du entweder
Delphi-Quellcode:
Query1.SQL.Clear;    // alle Anweisungen löschen
Query1.SQL.Add('select * from Rechnungen where BEZAHLT = :BEZAHLT ')  // Anweisung hinzufügen
Query1.SQL.Add('ORDER BY KDNR')  // 2. Zeile (hier nur mal als Beispiel)
Query1.Open;
oder
Delphi-Quellcode:
//--neue Anweisung zuweisen: vorhandene Anweisung wird durch die neue ersetzt
Query1.SQL.Text := 'SELECT * FROM Rechnungen WHERE BEZAHLT = :BEZAHLT ORDER BY KDNR';
Query1.Open;
Im Übrigen wird eine offene Query automatisch geschlossen, sobal das SQL-Statement geändert wird; auf der sicheren Seite (und für den Fall des Debuggens) ist es immer besser, expliziet
Code:
Query1.Close
zu schreiben ;-)



Zitat:

Zitat von capo
Hallo DocE
danke, hab ich gemacht, bekomme folgende Meldung:
Zitat:

---------------------------
Fehler
---------------------------
Query1: Keine SQL-Anweisung verfügbar.
---------------------------
OK
---------------------------

Auch das ist klar ;-) du hast versucht im ObjektInspektor Query1 auf Active=True zu setzen, hast aber bei der Eigenschaft SQL keine SQL-Anweisung eingetragen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.
Seite 2 von 4     12 34      

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