Entwickler-Ecke
Datenbanken - SQL-Abfrage
Hänsel - Fr 13.01.23 11:18
Titel: SQL-Abfrage
Hallo, kann mir hier jemand Unterstützung geben?
Ich arbeite mit einer MSSQL-DB und möchte Datensätze Filtern und ein Feldinhalt ändern.
Delphi-Quelltext
1: 2: 3:
| bez:= 10520; au:= 'A'; DataModule1.ADOQuery_Einlesung.SQL.Text:='Select * From MGV1 Where Objekt_nr ='+bez+' and Auszug = '''+au+''''; |
soweit alles klar. Wenn ich aber beim Feld Auszug alle sehen möchte die z.B.
<> au sind, das geht so nicht. Wie dann?
Da ich auch noch Felder ändern möchte, hatte ich gedacht, dies mit UPDATE zu machen. Danach kann eine normale Abfrage besser erfolgen.
Delphi-Quelltext
1: 2: 3:
| bez:=DataModule1.ADOQuery_Objekte['OBJ']; St:='B'; au:= 'I'; |
Beim Update sollte in der Tabelle MGV nach dem Feld obj = bez und Status= st gefiltert werden und alle die beim Feld Auszug (au) kein 'A' haben mit dem Wert 'I' ersetzt.
Delphi-Quelltext
1:
| DataModule1.ADOQuery_Einlesung.SQL.Text:='Update MGV set ???? |
Kann jemand mir weiter helfen?
Danke im Voraus
hänsel
Moderiert von Narses: Delphi-Tags hinzugefügt
Hänsel - Fr 13.01.23 16:06
Danke, habe es ausprobiert und noch nicht den richtigen Erfolg:
das geht nicht
Delphi-Quelltext
1: 2: 3: 4: 5:
| DataModule1.ADOQuery_Einlesung.SQL.Text:='update MGV1 set Auszug =:Auszug where Objekt_nr =:bez and Auszug <>:As ' ; DataModule1.ADOQuery_Einlesung.Parameters.ParamByName('Auszug').Value := 'I'; DataModule1.ADOQuery_Einlesung.Parameters.ParamByName('AS').Value := 'A'; DataModule1.ADOQuery_Einlesung.Parameters.ParamByName('bez').Value := DataModule1.ADOQuery_Objekte['OBJ']; DataModule1.ADOQuery_Einlesung.ExecSQL; |
So geht das aber ich benötige ja ...Auszug <>As
Delphi-Quelltext
1: 2: 3: 4: 5:
| DataModule1.ADOQuery_Einlesung.SQL.Text:='update MGV1 set Auszug =:Auszug where Objekt_nr =:bez'; DataModule1.ADOQuery_Einlesung.Parameters.ParamByName('Auszug').Value := 'I'; DataModule1.ADOQuery_Einlesung.Parameters.ParamByName('AS').Value := 'A'; DataModule1.ADOQuery_Einlesung.Parameters.ParamByName('bez').Value := DataModule1.ADOQuery_Objekte['OBJ']; DataModule1.ADOQuery_Einlesung.ExecSQL; |
Gruß hänsel
Moderiert von Th69: Delphi-Tags hinzugefügt
Th69 - Fr 13.01.23 16:22
Was genau geht nicht? Erhältst du eine Fehlermeldung oder werden keine Daten in der DB verändert?
Ich bin mir nicht sicher, ob die Parameter unterschiedliche Groß-/Kleinschreibung akzeptieren (:As <-> AS).
PS: Bitte füge demnächst selber die Code (bzw. Delphi) Tags hinzu.
Hänsel - Fr 13.01.23 19:57
Eine Fehlermeldung gibt es nicht. Es werden aber auch keine Daten in die DB geschrieben. Mit dem groß bzw. klein Schreibung habe ich auch ausprobiert. Leider kein Erfolg.
Trotzdem besten Dank für deine Mühe. Ich werde es eventuell mit einer Abfrageschleife mal versuchen, das dauert aber etwas länger.
MFG
hänsel
Th69 - Sa 14.01.23 11:53
Klappt denn die Abfrage
SQL-Anweisung
1:
| Select * From MGV1 Where Objekt_nr = '10520' and Auszug <> 'A' |
direkt aus dem SQL Management Studio?
Oder welchen Datentyp hat die Spalte "Auszug", daß es mit
= funktioniert, aber mit
<> scheinbar nicht?
Sinspin - Di 17.01.23 08:48
Hallo.
Mach es doch erstmal anders. Hart codiert ohne Parameter.
Wenn das geht dann ersetz stück für stück durch Parameter.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!