Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindung (https://www.delphipraxis.net/104055-tsqlquery-next-gibt-einen-fehler-bei-mssql-odbc-verbindung.html)

Painterxyz 26. Nov 2007 19:49

Datenbank: MS-SQL Server 2005 Express • Zugriff über: ODBC

TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nachdem ich nun eine ODBC_Verbindung zu einer ms sql 2005 Datenbankhergestellt, mit der TSQLConnection-Komponente hergestellt hatte, ist es möglich die Daten auszulesen mit der TSQLQuery-Komponente.

So war ich vorgegangen: http://www.delphipraxis.net/internal...ct.php?t=99598

Beim auslesen in einer While-Schleife kommt es zu Problemen.

Delphi-Quellcode:
procedure TForm1.sqlquery();
var c,r: Integer;
begin
  r:=0;
  with SQLQuery1 do
  begin
    Close;
    Open;
    First;
  end;
  with SQLQuery1 do begin
    if FieldList.Count > 0 then
    begin
      StringGrid1.ColCount := FieldList.Count;
      while not SQLQuery1.Eof do
      begin
        for c := 0 to FieldList.Count - 1 do
        begin
          StringGrid1.Cells[c,r] := Fields.Fields[c].AsString;
        end;
        Inc(r);
        SQLQuery1.Next;
      end;
    end;
  end;
end;
Die Ergebnismenge beträgt 4 Zeilen bei der Abrage, SELECT * FROM dbo.irgendwas

An sich funktioniert es, aber beim 4. SQLQuery1.Next kommt eine Fehlermeldung.

Datenbank-Server-Fehler: dbExpress for ODBC: Failed to get an error message

Weiss jemand, wo der Fehler liegt und wie kann man den beheben?

haentschman 26. Nov 2007 20:10

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
Hallo...


als Tip versuche mal folgendes...

ersetze die while Schleife durch
Delphi-Quellcode:

repeat
  ....
until SQLQuery1.FindNext = False
vieleicht kommt er mit dem Eof nicht klar :gruebel:

Painterxyz 26. Nov 2007 20:19

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
Danke für deine Antwort.

Jetzt kommt kein Fehler mehr, aber nur ein Datensatz.

mkinzler 26. Nov 2007 20:25

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
Ist in der 4. Zeile ein NULL-Wert?

haentschman 26. Nov 2007 20:25

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
... :wiejetzt:

ich benutze bei mir immer repeat/until... :roll:
...er müßte normal alle durchlaufen bis er keinen nächsten mehr findet...
...im Prinzip umgekehrt zu Deiner Lösung, welche eigentlich genauso funtionieren müßte.

Find.Next setzt normal immer auf den nächsten Datensatz (sofern vorhanden) ansonsten ist das Result 'False'.

... :gruebel:

[edit]
die Ergebnismenge hat nur 4 Zeilen--> Datensatzzeiger auf Zeile1...
d.h. nach 3 Next ist der Datensatzzeiger schon auf dem letzten.
Zitat:

beim 4. SQLQuery1.Next
... ist einfach ein Next / Schleifendurchlauf zu viel.
[/edit]

alzaimar 26. Nov 2007 20:27

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
@haentschman: Wie funktioniert das, wenn die Datenmenge komplett leer ist?

haentschman 26. Nov 2007 20:30

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
mit einer Überprüfung vorher... :-D
...hast ja Recht...

PS: Fehler suchen heißt Fehlerquellen ausschließen...oder ? :-D

mkinzler 26. Nov 2007 20:33

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
das Problem schreit deshalb nach einer While-Schleife

Painterxyz 26. Nov 2007 20:34

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
In der 4. Zeile steht kein NULL-Wert.

Im Quelltext beim FindNext ist mir eine Merkwüridkeit aufgefallen.

Bei TDataSet.FindNext steht:
Delphi-Quellcode:
Result := FindRecord(False, True);
und in FindRecord steht:
Delphi-Quellcode:
Result := false;
:shock: was ist das für ein murks?

alzaimar 26. Nov 2007 20:36

Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
 
@haentschman: In der Kürz' liegt die Würz'.

@mkinzler: Deine Ein-Satz-Antworten sind immer wieder zum Schmunzeln. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz