AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme mit SELECT und Strings
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit SELECT und Strings

Ein Thema von Puke · begonnen am 20. Jan 2014 · letzter Beitrag vom 21. Jan 2014
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#11

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 12:28
SendSQlSelect('SELECT * FROM ' + IN_Table + ' WHERE ' + IN_Table + 'Name = ''' + IN_Data + ''''; Da fehlt der Feldtrenner, es komt ja so was raus
Code:
SELECT * from TABELLE WHERE TABELLENAME = 'Beispiel'
Eine weiter Möglichkeit wäre noch zu prüfen, ob die Abfrage synchron oder asynchron ausgeführt wird.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Puke
Puke

Registriert seit: 7. Nov 2012
123 Beiträge
 
Delphi XE5 Architect
 
#12

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 12:31
das Feld heißt so.

Syncron und Asyncron? Damit kann ich momentan nichts anfangen
Gruß Puke
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 12:34
Wie wäre es denn hiermit:
Delphi-Quellcode:
Procedure TFireBird.SendSQLSelect(IN_Command: String);
 Begin
 FdbquerySelect.SQL.Close;
 FdbquerySelect.SQL.Clear;
 FdbquerySelect.SQL.Add(IN_Command);
 FdbquerySelect.Open; // Debugger gibt hier den Fehler aus!!!
 FdbquerySelect.First;
 End;
Es soll Komponenten geben, die ein Close vor irgendwelchen Änderungen mögen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Puke
Puke

Registriert seit: 7. Nov 2012
123 Beiträge
 
Delphi XE5 Architect
 
#14

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 12:41
Du meinst
FdbquerySelect.Close; ???

Das funktioniert auch nicht!
Gruß Puke
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#15

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 12:47
Warum nehmt Ihr keine Parameter. Hier braucht man sich keine Sorgen um die Formatierung in der SQL Anweisung machen.

Delphi-Quellcode:
query.sql.text = 'SELECT * FROM Tabelle WHERE Name = :IN_Data';
query.parambyname('IN_Data').AsString := 'blablabla';
{oder}
query.parambyname('IN_Data').AsInteger = 1;
query.open;
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Puke
Puke

Registriert seit: 7. Nov 2012
123 Beiträge
 
Delphi XE5 Architect
 
#16

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 12:57
Dadurch bekomme ich die Fehlermeldung:
Code:
[...] raised Exception class EDatabaseError with Message 'Parameter 'x' Not found'.
X ist dann der IN_Data Wert.
Gruß Puke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 13:00
Wer steht denn im IN_Data?
Wenn da z.B. \ oder ' drin vorkommt, dann muß es ja knallen.

Warum nehmt Ihr keine Parameter.
Und Makros.
Der Name des Feldes kann ja nicht als Parameter übergeben werden.

Nja, oder alternativ die entsprechenden Funktion zum Quoten der Strings und Namen verwenden.

Delphi-Quellcode:
Query.Sql.Text = 'SELECT * FROM &Table WHERE &Field = :Data';
Query.MacroByName('Table').Value := QuoteIdent(IN_Table); // Ich glaub Makros werden nicht automatisch gequotet, bzw. ich bin mir relativ sicher.
Query.MacroByName('Field').Value := QuoteIdent(IN_Table + 'Name');
Query.ParamByName('Data').AsString := IN_Data;
Query.Open;

Query.Sql.Text = 'SELECT * FROM ' + QuoteIdent(IN_Table) + ' WHERE ' + QuoteIdent(IN_Table + 'Name') + ' = ' + QuoteText(IN_Data);
Query.Open;

// QuoteIdent und QuoteText entsprechend anpassen ... die heißen ja überall irgendwie anders
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Puke
Puke

Registriert seit: 7. Nov 2012
123 Beiträge
 
Delphi XE5 Architect
 
#18

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 13:10
Nein, getestet hatte ich mit 'Hallo'.
Bei mir hat die TZQuery kein MacroByName!
Gruß Puke
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#19

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 15:47
Nicht MakroByName, sondern nur ParamByName. Hier noch mal ein anderes Beispiel, welches definitiv funktioniert :

Delphi-Quellcode:
  UniQuery_MessageTypes.SQL.Clear;
  UniQuery_MessageTypes.SQL.Add('SELECT * FROM Message_Types WHERE IsStandard = :IsStandard;');
  UniQuery_MessageTypes.ParamByName('IsStandard').AsInteger := 1;
  UniQuery_MessageTypes.Open;
  while not UniQuery_MessageTypes.Eof do
  begin
    tmpIdx := Items.Add(UniQuery_MessageTypes.FieldByName('MessageTypeName').AsString);
    Items.Objects[tmpIdx] := TObject(UniQuery_MessageTypes.FieldByName('MessageTypeID').AsInteger);
    UniQuery_MessageTypes.Next;
  end;
  UniQuery_MessageTypes.Close;
  Items.EndUpdate;
So mache ich das ständig und es funktioniert.

Edit:
Und hier noch die korrigierte Fassung aus Beitrag #15:
Delphi-Quellcode:
query.sql.text := 'SELECT * FROM Tabelle WHERE Name = :INData';
query.parambyname('INData').AsString := 'blablabla';
{oder}
query.parambyname('INData').AsInteger := 1;
query.open;
Ich hatte zweimal den Doppelpunkt vergessen und habe jetzt mal vorsichtshalber die Unterstriche entfernt.

Beide Beispiele funktionieren mit allen gängigen Datenbankkomponenten.
Rolf Warnecke
App4Mission

Geändert von RWarnecke (21. Jan 2014 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Puke
Puke

Registriert seit: 7. Nov 2012
123 Beiträge
 
Delphi XE5 Architect
 
#20

AW: Probleme mit SELECT und Strings

  Alt 21. Jan 2014, 16:03
Danke
Funktioniert einwandfrei!
Gruß Puke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 03:31 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