tibdataset | datensatz bearbeiten (insert-sql?)



  • okey ich gebe es zu: ich bin ein Loser. 😃
    ich krieg das mit tibdataset einfach nicht gebacken.
    Wie kann ich einträge verändern? jedesmal wenn ich es versuche
    kommt, das eine datensatz der nur zum lesen vorgesehen ist nicht bearbeitet werden kann.

    dat1->edit();
    dat1->fields->fields[2]->AsString = "sdfs";
    

    ich denke man muss irgendwas mit insert-sql machen, oder?
    helft mir;
    bin grad einfach zu frustriert um wieder eine stunde rumzuprobieren 🙂

    mfg rico(s)



  • dass mit 2 "s" sorry



  • Schau mal hier (mein Beitrag (zufaulzumeinloggen)):
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-122072-and-highlight-is-tupdatesql.html
    Das sollte mit den TIB-Komponenten analog zu TQuery und TUpdateSQL funktionieren.



  • danke 😃 mal ausprobieren



  • ich versteh gar nichts mehr 😞

    wozu ist eigentlich die eigenschaft insertSQL des tibdataset da? Ich verstehe nicht ganz wann sql-befehle in dieser Eigenschaft ausgeführ werden. offensichtlich betrifft die methode execSQL von tibdataset nur die selectSQL eigenschaft. und bei der methode insert(); wird (laut hilfe) nur ein neuer datensatz angehängt
    und wozu brauch ich überhaupt noch tibUpdateSQL. wenn ich sql befehle schon direkt in tibdataset-eigenschaften einfügen kann??



  • In die Eigenschaft InsertSQL schreibst Du ein parametrisiertes Insert-Statement. Zur Laufzeit mußt Du dann nur noch die Parameter setzen und das Statement ausführen.

    Beispiel Statement:

    INSERT INOT StatKunden
      (KdNr, BuMo, Wert, AnzahlAuftraege, VertNr)
    VALUES
      (:KdNr, :BuMo, :Wert, :AnzahlAuftraege, :VertNr)
    

    Da ich keine IB-Komponenten installiert habe, folgendes Beispiel anhand eines TUpdateSQL-Objekts (updstatkun):

    updstatkun->Query[ukInsert]->ParamByName("KdNr")->AsString = qistatkunkundnr->AsString;
    updstatkun->Query[ukInsert]->ParamByName("BuMo")->AsInteger = qistatkunbumo->AsInteger;
    updstatkun->Query[ukInsert]->ParamByName("Wert")->AsFloat = qistatkunwert->AsFloat;
    updstatkun->Query[ukInsert]->ParamByName("AnzahlAuftraege")->AsInteger = qistatkunanzahl_auftraege->AsInteger;
    updstatkun->Query[ukInsert]->ParamByName("VertNr")->AsString = "-";
    updstatkun->Query[ukInsert]->ExecSQL();
    

    Sollte bei den IB-Komponenten recht ähnlich funktionieren.


Anmelden zum Antworten