dbgrid daten auslesen und in andere tabelle kopieren



  • Hallo,

    habe eine mysql-datenbank und bcb 6.
    mithilfe von ADO baute ich eine verbindung zur datenbank auf.
    nun will ich die daten von dem dbgrid (besser gesagt der spalte nachname) in eine andere tabelle (matchcode) übertragen.

    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("INSERT INTO matchcode (Nachname) VALUES (DBGrid1->Fields[0]));");
    ADOQuery1->ExecSQL();
    

    ich dachte mir, dies würde die erste zeile in die tabelle matchcode kopieren, doch leider macht es das nicht 😢
    Was mache ich falsch?
    lg matthi



  • Sieh dir in der Hilfe an, von welchem Typ TDBGrid::Files ist und dann dessen Eigenschaften und Methoden.

    Nicht zu vergessen die FAQ und die Suchfunktion hier.



  • hallo jansen,

    vielen dank.
    habe jetzt mithilfe von faq + suchsystem den code auf

    DBGrid1->DataSource->DataSet->MoveBy(2);
    AnsiString strText = DBGrid1->Fields[1]->AsString;
    Edit1->Text = strText;
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add( "INSERT INTO matchcode (Nachname) VALUES (:strText)");
    ADOQuery1->ExecSQL();
    

    geändert.
    doch leider funktioniert auch das nicht 😢
    ich weiß leider wirklich nicht was ich falsch mache 😢
    lg matthi



  • kann mir nicht bitte jemand helfen?

    mfg

    matthi



  • // der vorherige Teil bleibt gleich
    ADOQuery1->SQL->Add( "INSERT INTO matchcode (Nachname) VALUES "+strText);
    ADOQuery1->ExecSQL();
    

    Versuch das mal so. Ich meine müßte gehen. Habe es allerdings nicht getestet.



  • danke für deine hilfe, aber leider funkt auch das nicht 😢
    der compiler sagt mir wieder, dass ein fehler in meiner sql-syntax in dieser zeile ist ...
    bitte um weiter lösungsvorschläge

    lg matthi



  • matthi00,

    matthi00 schrieb:

    der compiler sagt mir wieder, dass ein fehler in meiner sql-syntax

    das sagt Dir nicht der Compiler, sondern Deine Datenbank und es bedeutet, daß Du Dir das SQL-Statement und gegebenfalls die SQL-Hilfe der Datenbank anschauen solltest. (Vermutlich hast Du die Hochkommata vergessen).
    Was das Problem an sich betrifft: Der Inhalt Deines Grids basiert auf einer Datenmenge (TTable, TQuery, ...). Warum also kopierst Du die Daten nicht einfach von einer Datenquelle zur anderen?



  • Sorry, habe gepennt. War ein Schnellschuß. Wie dschensky schon geschrieben hat, Strings müssen bei SQL in Hochkomma (apostroph oder wie die Dinger heißen) gesetzt werden.

    Das müßte eigentlich funktionieren:

    ADOQuery1->SQL->Add( "INSERT INTO matchcode (Nachname) VALUES '"+strText+"'");
    

Log in to reply