![]() |
cout(*) anweisung hat fehler...
so...nun auf ein neues...in der hoffnung das es klappt...
sorry wegen der ganzen verwirrung... |
Re: cout(*) anweisung hat fehler...
SQL-Code:
Für alle die :wiejetzt: schreien ( :mrgreen: ) - Das bezieht sich
SELECT Count(*) -- Hier hatte sich wohl ein "t" eingeschlichen
FROM dbo_VFL_VERZ_TEMP t WHERE t.Bearbeiter = :i_Bearbeiter ![]() |
Re: cout(*) anweisung hat fehler...
ok...er läuft jetzt ohne fehler durch...aber in der datenbank finde ich meine einträge nicht...
er zeigt in dem memo feld ja auch nichts an.... ruhig bleiben...ist ja nur noch bis ende märz und dann bin ich fertig mit delphi :-) er springt sogar über diese execsql bzw. memo1.text:=adoquery1.sql.text anweisung |
Re: cout(*) anweisung hat fehler...
würde mich freuen wenn ihr mir noch weiter helfen könntet !!!
ist wirklich dringend !!! |
Re: cout(*) anweisung hat fehler...
Ändere die Zeile ...
Delphi-Quellcode:
... zu ...
// Wenn ein INSERT benötigt wird...
If ProcessedRecs > 0 Then
Delphi-Quellcode:
Das INSERT muss ja auch ausgeführt werden, wenn keine Einträge zum Bearbeiter gefunden werden.
// Wenn ein INSERT benötigt wird...
If ProcessedRecs = 0 Then |
Re: cout(*) anweisung hat fehler...
ok...jetzt habe ich das beim insert geändert und auch beim setcount...
aber er schreibt immer noch nicht mehr als den namen des bearbeites in die datenbank !!! |
Re: cout(*) anweisung hat fehler...
Dann poste mal wieder den geneierten Code. :wink:
Ich habe das Ding nur runtergehackt und nicht getestet (deswegen auch "> 0" / "= 0" Fehler) Ich kann also nicht vorhersagen, wie es sich bei deiner Daten- & Programmstruktur verhält. |
Re: cout(*) anweisung hat fehler...
Liste der Anhänge anzeigen (Anzahl: 1)
was würde ich ohne dich nur machen... :-)
das beste ist ich hänge die datei an !!! :-) |
Re: cout(*) anweisung hat fehler...
Das bringt so nix, poste doch einfach den generierten Code! -> Du hast die DB, nicht ich...
|
Re: cout(*) anweisung hat fehler...
meinst du den code vom memo ??? der war...
SQL-Code:
INSERT INTO dbo_VFL_VERZ_TEMP t
(Bearbeiter ) VALUES ( :i_Bearbeiter ) |
Re: cout(*) anweisung hat fehler...
Nur die Edits, in denen Werte stehen werden in das Statementr geschrieben.
Außerdem, das da erzeugt einen neuen Eintrag! |
Re: cout(*) anweisung hat fehler...
fakt ist aber das wenn ich einen wert in die editfelder eintrage nur das feld bearbeiter in die datenbank geschrieben wird und mehr nicht !!!!
|
Re: cout(*) anweisung hat fehler...
hallo,
ist das oben gepostete dein SQL-Code? Dann ist es klar, warum er nur das feld "bearbeiter" in die db schreibt. Steht ja auch nur eine spalte im Insert drin. Gruß Ken |
Re: cout(*) anweisung hat fehler...
hi @ cenbells
das dort oben ist nicht unbedingt der sql code... das ist das was ich in ein memo haben schreiben lassen um zu sehen was in der datenbank ankommt... die anweisung dazu sieht so aus wie sie oben in der datei angehangen ist !!! |
Re: cout(*) anweisung hat fehler...
Es wird anhand der beschriebenen Edits ein Statement erzeugt. Wenn es zu dem Bearbeiter einen Eintrag gibt, ein INSERT, sonst ein UPDATE.
|
Re: cout(*) anweisung hat fehler...
naja...irgendwie versteh ich schon was du meinst...aber wenn ich jetzt einen neuen bearbeiter hinzu füge dann soll er mir auch die ganzen werte zu dem bearbeiter eintragen...wenn der bearbeiter schon vorhanden ist soller ja auch eine zeile hinzugefügt werden...
|
Re: cout(*) anweisung hat fehler...
:wall: Komplett aneinander vorbeigeredet!
DAnn spare die Count-Abfrage und setzte Processedrecs immer auf 0. |
Re: cout(*) anweisung hat fehler...
sorry aber ich steh heute ein bischen neben mir...was meintest du jetzt ???
Delphi-Quellcode:
sollte diese If ProcessedRecs = 0 Then anweisung gleich null sein oder auf was wolltest du raus ???
SetCount := 0;
// Arraylänge auf Anzahl der TEdits SetLength(SetVals, CompNames.Count); With ADOQuery1 Do Begin // Gibt es Einträge zu diesem Bearbeiter? SQL.Text := 'SELECT Count(*)' + #10 + 'FROM dbo_VFL_VERZ_TEMP t' + #10 + 'WHERE t.Bearbeiter = :i_Bearbeiter'; Prepared := True; Parameters.ParamByName('i_Bearbeiter').Value := TB_Bearbeiter.Text; // Ausführen Open; If Eof Or (Fields[0].AsInteger = 0) Then ProcessedRecs := 0 Else ProcessedRecs := Fields[0].AsInteger; SetStr := ''; For i := 0 To pred(CompNames.Count) Do Begin With FindComponent(CompNames[i]) As TEdit Do If Text <> '' Then Begin // Wenn Edit <> '' -> Wert in den Array & Spalte kommt mit in die SET-Clause... SetVals[SetCount] := Text; // Einträge > 0 UPDATE sonst INSERT If ProcessedRecs > 0 Then SetStr := SetStr + ',' + #10 + ' ' + Fieldnames[i] + ' = :i_F' + IntToStr(SetCount) Else SetStr := SetStr + ',' + #10 + ' ' + Fieldnames[i]; inc(SetCount); End; End; // Wenn ein INSERT benötigt wird, dann muss hier noch die Liste mit Parametern stehen If ProcessedRecs = 0 Then //hier gleich null lassen und was soll ich mit der count abfrage machen ??? Begin // Bearbeiter muss auf jeden Fall eingefügt werden SetStr := 'INSERT INTO dbo_VFL_VERZ_TEMP ' + #10 + ' (Bearbeiter ' + SetStr + ')' + #10 + 'VALUES ( :i_Bearbeiter' + #10; // Fülle die Value liste mit Parametern (für jeden geänderten Wert For i := 0 To pred(SetCount) Do SetStr := SetStr + ',' + #10 + ':i_F' + IntToStr(i); SetStr := SetStr + ')' // Das INSERT-Statement sollte dann so aussehen... //INSERT INTO dbo_VFL_VERZ_TEMP t // (Bearbeiter // ,Feld1 // ,Feld2 // ...) //VALUES ( :i_Bearbeiter, // ,:i_F1 // ,:i_F2 // ... ) End Else SetStr := 'UPDATE dbo_VFL_VERZ_TEMP t' + #10 + 'SET ' + Copy(SetStr, 10, Length(SetStr)) + #10 + 'WHERE t.Bearbeiter = :i_Bearbeiter'; // Das UPDATE-Statement sollte dann so aussehen... //UPDATE dbo_VFL_VERZ_TEMP t //SET Feld1 = :i_F1 // ,Feld2 = :i_F2 // ... //WHERE t.Bearbeiter = :i_Bearbeiter // Wenn SetCount > 0 -> Führe Abfrage aus... If Setcount = 0 Then Begin SQL.Text := SetStr; Prepared := True; Parameters.ParamByName('i_Bearbeiter').Value := TB_Bearbeiter.Text; // Werte der Paramter :i_F(1 - ...) For i := 0 To pred(SetCount) Do Parameters.ParamByName('i_F' + IntToStr(i)).Value := SetVals[i]; // Ausführen ExecSQL; //memo1.Text:=adoquery1.SQL.Text; End; End; |
Re: cout(*) anweisung hat fehler...
weil es trotzdem nicht richtig geht..er schreibt immer nur den bearbeiter und mehr nicht in die db
und ich bekomme seit eben eine meldung syntaxfehler in update anweisung.. ok...syntax fehler ist behoben...aber mehr auch nicht...er schreibt nur den bearbeiter rein.... und wenn er schon vorhanden ist dann schreibt er ihn einfach über.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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