Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   UPDATE Tabelle SET funktioniert nicht -.- (https://www.delphipraxis.net/165213-update-tabelle-set-funktioniert-nicht.html)

t0mmy 19. Dez 2011 09:43

Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO

UPDATE Tabelle SET funktioniert nicht -.-
 
Hallo!

Ich habe folgenden Code:

Delphi-Quellcode:
  DataModule1.ADOQuery_Update_OwnDB.SQL.Clear;
  DataModule1.ADOQuery_Update_OwnDB.SQL.Text :=
    'UPDATE Tabelle '+
    'SET WahrFalsch = ''True'' '+
    'WHERE (Barcode = '''+Main.Edit_Station.Text+''') '+
    'AND (Station = '''+Stationsnummer+''')';
  DataModule1.ADOQuery_Update_OwnDB.ExecSQL;
Obwohl ich es in SQL ausprobiert habe. Dort funktioniert e -.-
In Delphi bekomm ich einen Fehler:

[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben. :((

Bernhard Geyer 19. Dez 2011 09:45

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
Zitat:

Zitat von t0mmy (Beitrag 1142149)
Hallo!

Ich habe folgenden Code:

Delphi-Quellcode:
  DataModule1.ADOQuery_Update_OwnDB.SQL.Clear;
  DataModule1.ADOQuery_Update_OwnDB.SQL.Text :=
    'UPDATE Tabelle '+
    'SET WahrFalsch = ''True'' '+
    'WHERE (Barcode = '''+Main.Edit_Station.Text+''') '+
    'AND (Station = '''+Stationsnummer+''')';
  DataModule1.ADOQuery_Update_OwnDB.ExecSQL;
Obwohl ich es in SQL ausprobiert habe. Dort funktioniert e -.-
In Delphi bekomm ich einen Fehler:

[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben. :((

Stelle deine ADOConnection auf einen nativen MS-SQL-Treiber um und geh nicht den problematischen weg zusätzlich über ODBC wenn du ADO verwendest.

DeddyH 19. Dez 2011 09:47

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
Und ein parametrisiertes Statement ist wohl auch nicht die schlechteste Idee, allein schon aus Gründen der Lesbarkeit.

t0mmy 19. Dez 2011 09:54

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
Hmm Ich habs jetzt mit anderen Providern bei der ADOConnection probiert jedoch funktioniern die auch nicht -.- Weil eine Insert abfrage funktioniert einwandfrei damit -.-

sx2008 19. Dez 2011 10:14

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
MSSQL kennt die Konstanten True und False nicht sondern nur 1 und 0.
Daher müssen Abfragen etwas umgeschrieben werden:
SQL-Code:
-- vorher
SELECT * FROM Tabelle WHERE status=True

-- nachher
-- man beachte dass man nicht status=1 schreiben sollte
SELECT * FROM Tabelle WHERE status<>0
Bzw wenn ein Feld auf False abgefragt wird:
SQL-Code:
-- vorher
SELECT * FROM Tabelle WHERE status=False

-- nachher
SELECT * FROM Tabelle WHERE status=0
Bei UPDATEs und INSERTs muss man statt True und False natürlich 1 und 0 verwenden.

PS: möglich, dass im Enterprise Manager bzw. SQL Management Studio die Konstanten True und False bekannt sind
(kann das gerade nicht testen)
aber über die ADO-Treiberschicht muss man 1 und 0 verwenden.

DeddyH 19. Dez 2011 10:26

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
Das Statement sieht aber eher so aus, als handle es sich um ein Stringfeld, da kann man natürlich "True" reinschreiben ;)

Bummi 19. Dez 2011 10:29

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
Es ist zwar unüblich aber MSSQL verdaut SET BooleanFeld='True' durchaus

p80286 19. Dez 2011 19:02

AW: UPDATE Tabelle SET funktioniert nicht -.-
 
Ich plädiere dafür, die Fehlermeldung ernst zu nehmen "Datenquellenname....".
Da solltest Du zuerst einmal überprüfen ob derselbige wirklich korrekt ist.

Gruß
K-H

P.S.
Mit ADO auf ODBC aufzusetzen mag zwar umständlich sein aber ich habe bisher noch nie Probleme damit gehabt.


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