![]() |
Datenbank: Sqlite • Version: 3 • Zugriff über: TFDQuery
SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute :-D
habe folgendes Problem und bin schon am Verzweifeln: Ich mache in einer Procedure 2 SQL Abfragen. Die erst liefert mir die Daten die ich will ABER die 2 liefert mir nichts. Zuerst habe ich einen Fehler in meiner Abfrage gesucht. Nachdem ich aber den SQL String in einen DB-Browser (Heidi-SQL) eingegeben hab und dieser auch Daten lieferte kann es nicht daran liegen.
Delphi-Quellcode:
Im Anhang ein Screenshot von HeidiSQL mit Ergebinsdaten.
procedure TForm1.Grid1SelChanged(Sender: TObject);
begin DataModule1.FDConnection1.Connected:= true; // Abfrage Tel.Nr. welche die Versicherer liefern. with DataModule1.FDQuery_TelNr do begin SQL.Clear; SQL.Text:=SqlAbfragen.Sql_Text('TelNrVersicherung'); ParamByName('PNR').AsString := FDQueryPerson.FieldByName('Personennr').AsString; Open; end; Edit_Person_privat_Vers.Text:= DataModule1.FDQuery_TelNr.FieldByName('PT').AsString; Edit_Person_email_Vers.Text:= DataModule1.FDQuery_TelNr.FieldByName('PE').AsString; Edit_Person_handy_Vers.Text:= DataModule1.FDQuery_TelNr.FieldByName('MT').AsString; Edit_Person_fax_Vers.Text:= DataModule1.FDQuery_TelNr.FieldByName('GF').AsString; Edit_Person_arbeit_Vers.Text:= DataModule1.FDQuery_TelNr.FieldByName('GT').AsString; Edit_Person_url_Vers.Text:= DataModule1.FDQuery_TelNr.FieldByName('GW').AsString; // Abfrage Tel.Nr. welche der Betreuer selbst eingegeben hat. with DataModule1.FDQuery_TelNr do begin SQL.Clear; // SQL.Text:=SqlAbfragen.Sql_Text('TelNrMakler'); // ParamByName('PNR').AsString := FDQueryPerson.FieldByName('Personennr').AsString; sql.Text:= 'SELECT Mobil AS MT, Privat AS PT, Arbeit AS GT, Fax AS GF, EMail AS PE, URL AS GW FROM KONTAKTPERSON WHERE Personnr LIKE ''11025177''' ; Open; //HIER KOMMT NICHTS - IM DB-BROWSER ABER SCHON end; ShowMessage(DataModule1.FDQuery_TelNr.SQL.GetText + ' Count: '+ IntToStr(DataModule1.FDQuery_TelNr.RecordCount)); Edit_Person_privat_Makler.Text:= DataModule1.FDQuery_TelNr.FieldByName('PT').AsString; Edit_Person_email_Makler.Text:= DataModule1.FDQuery_TelNr.FieldByName('PE').AsString; Edit_Person_handy_Makler.Text:= DataModule1.FDQuery_TelNr.FieldByName('MT').AsString; Edit_Person_fax_Makler.Text:= DataModule1.FDQuery_TelNr.FieldByName('GF').AsString; Edit_Person_Arbeit_Makler.Text:= DataModule1.FDQuery_TelNr.FieldByName('GT').AsString; Edit_Person_url_Makler.Text:= DataModule1.FDQuery_TelNr.FieldByName('GW').AsString; end; Wenn ich aber die Abfrage Nr. 2 über einen anderen Table der DB mache kommen Daten zurück. Hat wer eine Idee an was es liegen kann?? |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zu jedem Open gehört auch ein Close, das fehlt mir irgendwie, oder ich habe es übersehen.
[edit] Nachtrag: Du solltest auch die 2. Abfrage parametrisieren, das schützt vor SQL-Injection und macht den Code einfacher zu lesen. Außerdem solltest Du schnell wieder vergessen, dass es das unsägliche "with" überhaupt gibt, Du nimmst Dir damit jede Chance, ordentlich zu debuggen. [/edit] |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Bei ''11025177''' fehlt wohl noch ein '
|
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Und ich sach noch: Parameter, dann passiert das nicht.
|
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zitat:
Aber wie DeddyH schon sagte: Parameter sind trotzdem immer besser. |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Die Abfrage mache ich eh mit Parameter.
Das hab ich nur zum testen so gemacht. Bin schon auf den Fehler gekommen: ich depp hatte noch im Debugger Ordner eine alte DB drinnen. Und diese hatte noch keine Daten in den Table. Dafür habe ich einige Stunden gesucht. :oops: |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Moin...:P
[Gebetsmühle ON] ...bitte kein WITH mehr benutzen. :warn: [Gebetsmühle OFF] :zwinker: |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zitat:
Und irgendwann habe ich mir eine Tabelle angelegt, die es im Prinzip auch aus anderen Gründen geben musste. DB Customizing, ein paar spezifische Konfigurationsangaben des System Setups und schlicht und ergreifend ein Name, Dev XY alpha, .. Prod <Standort> .. Ist irgendwie hilfreich. Ich kann die DB einfach (ab)fragen, wer sie ist. Letztlich ist das sogar im Frontend gelandet und es gibt auch eine Version bzw. sogar 2, eine für das Datenmodell und eine für den Stand der Applikationsstammdaten. Die Versionen kommen natürlich aus Scripten. Kehrseite der Medaille ist natürlich, dass auch diese Information gepflegt werden muss. Tatsächlich ist aber der Umgang mit dem DB Namen*, mit der DB ein anderer als mit Codezeilen, Connectionstrings, Versionierungstools usw. Es klappt gut. *Nicht der technische, sondern der "Taufname" |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zitat:
Frank |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zitat:
Ich bin aber auch schon abgewichen, weil:
SQL-Code:
Die erste Abfrage verwendet den Index, die zweite nicht. Ist bei mir zumindest bei Firebird so.
select * from adresse a where a.ort like 'Dresd%'
select * from adresse a where a.ort like :ort Grund ist, dass beim Prepare der oberen Abfrage schon bekannt ist, dass der Index benutzbar ist. Bei der zweiten Abfrage könnte ja statt 'Dres%' '%Dresd%' kommen, deshalb ist Like mit Parametern immer ein full table scan. Wie gesagt, deine Aussage ist koerrekt. Man sollte diese eine AUsnahme dennoch auf dem Schirm haben. Frank |
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
@Frank
like ist in diesem Fall möglicherweise auch der falsche Operator. Vergleichbar mit der ersten Variante wäre eher
SQL-Code:
Dann klappt es auch mit dem Index.
select * from adresse a where a.ort starting with :ort;
|
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Da hast du allerdings recht!
|
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zitat:
|
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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