AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

Ein Thema von Wiener · begonnen am 27. Apr 2022 · letzter Beitrag vom 29. Apr 2022
Antwort Antwort
Seite 1 von 2  1 2      
Wiener

Registriert seit: 27. Apr 2022
Ort: Wien
15 Beiträge
 
Delphi 10.4 Sydney
 
#1

SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 27. Apr 2022, 16:17
Datenbank: Sqlite • Version: 3 • Zugriff über: TFDQuery
Hallo Leute
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:
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;
Im Anhang ein Screenshot von HeidiSQL mit Ergebinsdaten.
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??
Miniaturansicht angehängter Grafiken
screenshot__1651068868.jpg  
Markus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 27. Apr 2022, 16:20
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (27. Apr 2022 um 16:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 27. Apr 2022, 16:47
Bei ''11025177''' fehlt wohl noch ein '
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 27. Apr 2022, 17:20
Und ich sach noch: Parameter, dann passiert das nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 27. Apr 2022, 17:53
Bei ''11025177''' fehlt wohl noch ein '
Das müsste aber mMn in dem Fall so richtig sein. Entspricht ja so einem ....'+QuotedStr('110025177')
Aber wie DeddyH schon sagte: Parameter sind trotzdem immer besser.
Ralph
  Mit Zitat antworten Zitat
Wiener

Registriert seit: 27. Apr 2022
Ort: Wien
15 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 27. Apr 2022, 18:32
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.
Markus
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 28. Apr 2022, 06:06
Moin...
[Gebetsmühle ON]
...bitte kein WITH mehr benutzen.
[Gebetsmühle OFF]
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 28. Apr 2022, 07:39
Bin schon auf den Fehler gekommen: .. alte DB. Und diese hatte noch keine Daten in den Table. Dafür habe ich einige Stunden gesucht.
Ein Klassiker, ich habe sowas auch schon mindestens einmal gehabt.
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"
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 28. Apr 2022, 10:07
Bei ''11025177''' fehlt wohl noch ein '
Das müsste aber mMn in dem Fall so richtig sein. Entspricht ja so einem ....'+QuotedStr('110025177')
Aber wie DeddyH schon sagte: Parameter sind trotzdem immer besser.
Bei mir kompiliert er das gar nicht, was ja auch zu erwarten ist...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: SQL Abfrage liefert in Delphi keine Ergebnisse in DB-Browser aber schon

  Alt 28. Apr 2022, 10:19
Und ich sach noch: Parameter, dann passiert das nicht.
Deine Aussage ist grundsätzlich korrekt!
Ich bin aber auch schon abgewichen, weil:

SQL-Code:
select * from adresse a where a.ort like 'Dresd%'
select * from adresse a where a.ort like :ort
Die erste Abfrage verwendet den Index, die zweite nicht. Ist bei mir zumindest bei Firebird so.
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
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 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