Frage zu insert bei MSSQL



  • Hallo Leute,
    ich versuche gerade einen insert auf meine MSSQL-Tabelle "t_materialdaten" auszuführen. Da ich 32 Felder in der Tabelle füllen muss, nutze ich Parameter in meinem String. Hier mal der Code:

    //SQL-String bauen  # MIT PARAMETERN ARBEITEN #
    AnsiString insertSQL = "insert into T_MATERIALDATEN values (:p01,:p02,:p03,:p04,:p05,:p06,:p07,:p08,:p09,:p10,"
    					   ":p11,:p12,:p13,:p14,:p15,:p16,:p17,:p18,:p19,:p20,:p21,:p22,:p23,:p24,:p25,:p26,:p27,"
    					   ":p28,:p29,:p30,:p31,:p32)";
    
    //Daten mittels insert in die Tabelle schreiben
    DataModule1->QInsert->Close();
    DataModule1->QInsert->SQL->Clear();
    DataModule1->QInsert->SQL->Add(insertSQL);
    	DataModule1->QInsert->Parameters->ParamByName("p01")->Value = vMATNR;
    	DataModule1->QInsert->Parameters->ParamByName("p02")->Value = vMTART;
    	DataModule1->QInsert->Parameters->ParamByName("p03")->Value = vMBRSH;
    	DataModule1->QInsert->Parameters->ParamByName("p04")->Value = vWERKS;
    	DataModule1->QInsert->Parameters->ParamByName("p05")->Value = vLGORT;
    	DataModule1->QInsert->Parameters->ParamByName("p06")->Value = vDISPR_1;
    

    [das ist aber nicht das ende der Liste 😉 ]

    Jetzt bleibt der Compiler beim Ausführen direkt beim setzen des ersten Parameters stehen und gibt mir folgende Fehlermeldung aus:

    ...EOleException... Die Anwendung verwendet für den aktuellen Vorgang einen Wer vom falschen Typ.
    

    Was läuft da falsch???

    Gruß Torsten



  • torsten_156 schrieb:

    Jetzt bleibt der Compiler beim Ausführen direkt beim setzen des ersten Parameters stehen

    Was meinst du damit? Laufzeit oder Compilierzeit? Du kannst während der Laufzeit mit dem Debugger prüfen welchen Inhalt deine Variablen haben. Weiterhin kannst du die Spaltennamen im Insert-SQLString mit angeben falls die Reihenfolge falsch ist. Du kannst im sql-Profiler des Mssql-Servers nachschauen welche Anweisung er abschickt falls er überhaupt soweit kommt.



  • Hi,
    ich habe nun die Spaltennamen mit angegeben. Der Fehler lag wohl darin, dass ich in der Tabelle eine ID-Spalte (autoincr.) habe, die ich in meinen Parametern natürlich nicht angegeben habe.

    Jetzt ist aber ein neues Problem aufgetreten. Werde einen neuen Thread erstellen...

    Danke...
    Torsten


Anmelden zum Antworten