Autor Beitrag
Hänsel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Fr 13.01.23 11:18 
Hallo, kann mir hier jemand Unterstützung geben?

Ich arbeite mit einer MSSQL-DB und möchte Datensätze Filtern und ein Feldinhalt ändern.

ausblenden 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.

ausblenden 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.

ausblenden Delphi-Quelltext
1:
DataModule1.ADOQuery_Einlesung.SQL.Text:='Update MGV set  ????					

Kann jemand mir weiter helfen?

Danke im Voraus
hänsel

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 13.01.23 13:26 
Meinst du folgendes?
ausblenden SQL-Anweisung
1:
update MGV set Auszug = 'I' where Object_nr = :bez and Status = :st and Auszug <> 'A'					

Mußt es dann nur noch in deinen Delphi-Code einbauen, sinnvollerweise gleich mit SQL-Parametern, s. z.B. SQL Parameterübergabe.
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Fr 13.01.23 16:06 
Danke, habe es ausprobiert und noch nicht den richtigen Erfolg:
das geht nicht
ausblenden 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
ausblenden 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;

Gruß hänsel

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 14.01.23 11:53 
Klappt denn die Abfrage
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: 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.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?