Forum: Datenbanken
by hyype,
13. Jun 2012
ich habe es geschafft!!!
und ihr werdet nicht glauben, woran es im Endeffekt lag...
und ihr hattet im Grunde keine Chance, mich darauf zu bringen, weil ich euch mit unzureichenden Informationen gefüttert habe... :/
Ich habe immer AC.execute(iRecordsAffected) aufgerufen, wobei AC ein TADOCommand und iRecordsAffected ein integer ist.
Ich habe das jetzt mal umgestellt auf...
Forum: Datenbanken
by hyype,
13. Jun 2012
Es ist nicht das Convert(int,...), was die -1 produziert,
im Profiler habe ich gesehen, dass der Parameter WID (heißt dann dort @P1) den Wert -1 hat,
damit ist mein Parameter @ID -1 und da ich den dann einsetze, wird -1 weggeschrieben...
Forum: Datenbanken
by hyype,
13. Jun 2012
auch wenn ich den datentyp explizit setze, ftInteger oder ftWord, funktioniert es nicht
der parser setzt den parameter offenbar nicht ein, beim convert(int,:wid) erhalte ich eine -1
denkt ihr, dass ich es irgendwie so umbauen kann , dass es funktioniert,
oder muss ich mich von meiner variante verabschieden und es tatsächlich auf mehrere statements aufteilen?
Forum: Datenbanken
by hyype,
12. Jun 2012
Das Problem ist, dass ich das sehr allgemein programmiere, um es für jede Tabelle zu benutzen.
Die spezifischen Tabellen haben dann unterschiedliche Anzahl an Spalten, unterschiedliche Datentypen etc
Da ich die alle machen, kann ich nur sagen, dass die von mir als PK gekennzeichneten Spalten integer sind.
Über den Rest ist mir auf der Ebene nix bekannt, daher weise ich die Werte als Variant...
Forum: Datenbanken
by hyype,
12. Jun 2012
toll, jetzt habe ich im insert auch mal @ID statt :IID verwendet und setzen tu ich wie folgt:
SET @ID = CONVERT(INT,:WID);
Der Parameter WID hat den Wert 1699, inserten tut er mir aber den Wert -1, wie geht das denn?
ele, da du das offenbar shconmal zum laufen gekriegt hast, die frage an dich: was mache ich falsch? ich hab's eigentlich genau so gemacht wie du
Forum: Datenbanken
by hyype,
12. Jun 2012
DECLARE @Transe CHAR(8) = 'Transe00';
BEGIN TRANSACTION @Transe;
DECLARE @ID INT;
SET @ID=:WID;
IF (EXISTS(SELECT * FROM ST_VKL WHERE ID=@ID))
UPDATE ST_VKL SET NAME=:UNAME
WHERE ID=@ID
ELSE
INSERT INTO ST_VKL
(ID,NAME)
Forum: Datenbanken
by hyype,
12. Jun 2012
die Verinfachung war natürlich nicht fehlerbehaftet, der PK besteht nur aus der ID
er macht tatsächlich ein Insert (habe den PK weggenommen und siehe da, ich habe 2 Datensätze)
das Problem ist, dass der Select innerhalb des exists nichts matched, obwohl der Datensatz da ist
ich habe sogar noch ein Convert um die Spalte und um den Parameter drumrumgebaut, dass da nix schief gehen kann, leider...