DBGrid --> DBEdit-Felder



  • Hallo Coders,

    habe mal wieder ein problem, hoff ihr könnt mir helfen. Ich einem Formular "Kunde suchen" werden über eine SQL-Abrage alle Kunden aus meiner MySQLdatenbank in einem DBGrid angezeigt. nach einem Doppelklick auf irgend eine Zeile "einen Kunden" soll eine weitere Abfrage gestartet werden, welche mir in einem anderen Formular die kompletten Kundendaten in DBEditfeldern anzeigen. Durch quälen der suchfunktion habe ich mir einen Lösungsansatz zurechtgestückelt.

    Mein Lösungsansatz:

    void __fastcall TFkdsuchen::DBGrid1DblClick(TObject *Sender)
    {
    Fmain->Fkddaten1->PageControl1->ActivePageIndex = 0;
    Fmain->Fkddaten1->AQkundendaten->Close();
    Fmain->Fkddaten1->AQkundendaten->SQL->Clear();
    Fmain->Fkddaten1->AQkundendaten->SQL->Add("SELECT kundennummer, kommission, bemerkung, email, mobil, fax, telefon, ort, plz, strasse, firma, vorname, name");
    Fmain->Fkddaten1->AQkundendaten->SQL->Add("FROM kunden");
    Fmain->Fkddaten1->AQkundendaten->SQL->Add("WHERE kundennummer like :kdnr");
    Fmain->Fkddaten1->AQkundendaten->SQL->Add("GROUP BY kundennummer");
    Fmain->Fkddaten1->AQkundendaten->Parameters->ParamByName("kdnr")->Value = DBGrid1->SelectedRows->FieldAddress(0);   //Hier ist der Fehler
    Fmain->Fkddaten1->AQkundendaten->Open();
    
    Fmain->Fkddaten1->Visible = true;
    Close();
    

    klappt aber leider nicht. 😞

    Als Fehlermeldung bekomme ich eine Zugriffsverletzung 😡

    ➡ Der Fehler verweist auf die Codezeile mit der Parameterübergabe!!!

    Warum??? Eigendlich möchte ich nur die Kundennummer in der markierten zeile auslesen um sie der Abfrage zu übergeben.

    Vielen Dank für Eure Hilfe.



  • Derberon,

    Derberon schrieb:

    Fmain->Fkddaten1->AQkundendaten->Parameters->ParamByName("kdnr")->Value = DBGrid1->SelectedRows->FieldAddress(0);   //Hier ist der Fehler
    

    da solltest Du vielleicht besser auf die eigentliche Datenquelle (also die Tabelle/Query) und nicht auf das Grid zugreifen - etwa so:

    Fmain->Fkddaten1->AQkundendaten->Parameters->ParamByName("kdnr")->Value = DBGrid1->DataSource->DataSet->FieldByName("kdnr")->As...;
    

Anmelden zum Antworten