Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL abfrage und das Hochkomma problem (https://www.delphipraxis.net/18958-sql-abfrage-und-das-hochkomma-problem.html)

ledoerr 26. Mär 2004 16:40


SQL abfrage und das Hochkomma problem
 
Hallo

ich schreibe gerade an einer SQL Datenbank Kopie das heisst also nur besitmmte teile.
die abfrage läuft nur so lange bis ich in einem String aus der Datenbank ein Hochkomma habe ,das mir die SQL Abfrage verballert.
so sieht meine abfrage aus

Delphi-Quellcode:
form1.ADOQuery4.SQL.Add('INSERT INTO '+form1.Label2.Caption+' (TRA_CODLAN,TRA_CODLAB,TRA_TXTTRA) VALUES('+#39+form1.ADOQuery3.fieldvalues['TRA_CODLAN']+#39+','+#39+form1.ADOQuery3.fieldvalues['TRA_CODLAB']+#39+','+#39+form1.ADOQuery3.fieldvalues['TRA_TXTTRA']+#39+')');
es kommt vor das ein string in der Datenbank so aus sieht

"Das ist doch ein normaler String bis auf diese Hochkomma' welches in diesem Sting steht und auch kopiert werden sollte"

Ich habe leider noch nichts gefunden währe als froh wenn ihr mir helfen würdet

gruss und danke im voraus

DelphiDeveloper 26. Mär 2004 16:42

Re: SQL abfrage und das Hochkomma problem
 
schau dir mal die function quotedstr an

ledoerr 26. Mär 2004 16:57

Re: SQL abfrage und das Hochkomma problem
 
Danke das hab ich schon 3 mal :gruebel: gemacht heute nachmittag, aber aus gerechnet jetzt klappts dank :-D

Robert_G 26. Mär 2004 17:32

Re: SQL abfrage und das Hochkomma problem
 
Ich glaube bei dieser Variante ist es möglich den Code nach 5 sek. Überfliegen komplett zu verstehen.
Delphi-Quellcode:
With Form1 Do
  With ADOQuery4 Do
  Begin
    SQL.Text :=
      'Insert INTO ' + form1.Label2.Caption + #10 +
      ' (TRA_CODLAN, TRA_CODLAB, TRA_TXTTRA)' + #10 +
      'VALUES' + #10 +
      ' (:i_CODLAN, :i_CODLAB, :i_TXTTRA)';
    // Parse Statement um Variablen zu erkennen
    Prepared := True;
    // Parameterzuweisung
    With Parameters Do
    Begin
      ParamByName('i_CODLAN').Value := ADOQuery3.FieldValues['TRA_CODLAN'];
      ParamByName('i_CODLAB').Value := ADOQuery3.FieldValues['TRA_CODLAB'];
      ParamByName('i_TXTTRA').Value := ADOQuery3.FieldValues['TRA_TXTTRA'];
    End;
    // Ausführen
    ExecSQL;
  End;
Zitat:

Zitat von ledoerr
Delphi-Quellcode:
form1.ADOQuery4.SQL.Add('INSERT INTO '+form1.Label2.Caption+' (TRA_CODLAN,TRA_CODLAB,TRA_TXTTRA) VALUES('+#39+form1.ADOQuery3.fieldvalues['TRA_CODLAN']+#39+','+#39+form1.ADOQuery3.fieldvalues['TRA_CODLAB']+#39+','+#39+form1.ADOQuery3.fieldvalues['TRA_TXTTRA']+#39+')');

Bei solchem Kuddelmuddel weiß man in dieser Zeit, dass es sich um ein INSERT handelt, sonst nix!

Edit: Tippfehler
Edit2: ich hatte den Tabellennamen nicht eingebaut :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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