![]() |
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: ![]() Beim auslesen in einer While-Schleife kommt es zu Problemen.
Delphi-Quellcode:
Die Ergebnismenge beträgt 4 Zeilen bei der Abrage, SELECT * FROM dbo.irgendwas
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; 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? |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Hallo...
als Tip versuche mal folgendes... ersetze die while Schleife durch
Delphi-Quellcode:
vieleicht kommt er mit dem Eof nicht klar :gruebel:repeat .... until SQLQuery1.FindNext = False |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Danke für deine Antwort.
Jetzt kommt kein Fehler mehr, aber nur ein Datensatz. |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Ist in der 4. Zeile ein NULL-Wert?
|
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:
[/edit] |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
@haentschman: Wie funktioniert das, wenn die Datenmenge komplett leer ist?
|
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 |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
das Problem schreit deshalb nach einer While-Schleife
|
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:
und in FindRecord steht:
Result := FindRecord(False, True);
Delphi-Quellcode:
:shock: was ist das für ein murks?
Result := false;
|
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: |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Wenn man es in einem Satz Ausdrückem kann, warum nicht. Außerdem bin ich schreibfaul :mrgreen:
|
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
if not Query.IsEmpty then
ist auch nicht viel länger als while not Query.EoF then ...so viel zum Thema Stil beim Programmieren...jeder hat seine Macke :-D [edit] ...das alles hilft aber dem Thema nicht. Ich denke immer noch, das die Schleife zu oft durchlaufen wird ( warum auch immer ) und der Fehler durch das Next aufläuft weil der Datensatzzeiger nicht positioniert werden kann. [/edit] |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Zitat:
|
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Mit einer zusätzlichen WHERE-Klausel, die für eine leere Datenmenge sorgt, gab es einen Fehler. Abfrage eingegeben und die TSQLQuery-Komponente auf aktiv gesetzt, da kam sie, die gleiche Fehlermeldung.
Wenn mindestens ein Datensatz zurückgegeben wird, kommt keine Fehlermeldung. |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Zitat:
:?: muß mit der Überprüfung mit Eof nicht mindestens ein Datensatz vorhanden sein ? :gruebel: ...ich meine mich erinnern zu können und habe dann auf repeat/until mit Überprüfung auf leere Datenmenge (IsEmpty) gewechselt. ...aber du hast ja den Fehler gefunden. :thumb: |
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Zitat:
|
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Schön wärs ja wenn das Programm soweit kommen würde. Es scheitert aber gleich am Anfang wenn man im Quelltext SQLQuery1.Open schreibt oder die query-Komp. in der IDE auf aktiv setzt, bei einer leeren Datenmenge.
|
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Sind irgendwelche Komponenten mit dem DataSet verknüpft?
|
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Nein, es sind nur die TSQLConnection- und die TSQLQuery-Komponente auf dem Formular.
|
Re: TSQLQuery.Next gibt einen Fehler bei MSSQL-ODBC-Verbindu
Liste der Anhänge anzeigen (Anzahl: 1)
Um das ganze besser zu veranschaulichen, gibt es jetzt ein Zip-Archiv mit den Projektdateien.
Ich weiß es ist umständlich, aber es wird noch eine ODBC-Verbindung und eine beliebige MSSQL-Datenbank benötigt. Das Delphi-Projekt wurde so eingerichtet: ![]() Danke schon im vorraus für jede Hilfe, zu diesem schwierigen Problem. Es muss doch einen Weg geben es zu lösen. :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr. |
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