Updateproblem bei DBGrid-Daten



  • Hi,

    ich habe ein Problem mit den Daten eines DBGrids. Darunter liegt eine mySQL über ADO angekoppelt.
    DataSource des Grids ist eine Query..
    soweit funktioniert alles wunderbar...

    blende ich allerdings jetzt ein Datenfeld im Grid aus, das ich (zu diesem Zeitpunkt) nicht sehen will, bekomme ich beim Auslösen des Rückschreibens eine Fehlermeldung, daß das Feld xxx (das mit visible = false) unbekannt sei ...

    Ideen oder Erfahrungen ??
    😕
    Wilfrid



  • versuchs mal anders rum:
    bei der eigenschaft columns die felder angeben, die du sehen willst, nicht die abschalten die du nicht sehen willst.



  • @BDler : geht bei meiner Anforderung nicht...

    ich will mit einer DataSource (Query dynamisch zur Laufzeit zusammengebaut)
    nicht nur das Grid sondern auch noch weitere Felder in meiner Form bedienen..



  • kannst du die felder nicht mit ->FieldByName("xxx")->As*** füllen?



  • vielleicht im OnDataChange vom Grid?



  • sorry, mein natürlich von der source.



  • ja schon richtig
    das OnDataChange bediene ich schon selbst, aber trotzdem (zusätzlich)
    versucht "irgendwer" die Daten zu bearbeiten, was dann bei dem unsichtbaren schief geht !!??
    😕



  • kannst du das OnDataChange und den Abschnitt in dem du die felder ausblendest mal posten, nur mit der beschreibung kann ich nicht mehr weiter



  • klar , ist zwar "ganz normaler Code" aber warum nicht ...

    void __fastcall TmyForm::ReInitGrids()
    {
        // -- Ausblenden der mit "_" gekenzeichneten Feldern 
        for (int i = 0; i < PosGrid->FieldCount;i++)
        {
            if (PosGrid->Fields[i]->FieldName.Pos("_") == 1)
            {
                PosGrid->Fields [i]->Visible = false;
            }
        }
    }
    

    Im OnDataChange steht nichts ausser dem Absetzen eines SQL-UPDATE-Befehls
    .. und dabei geht ja auch nichts schief
    😕



  • Fields ist ein Feld in der db, mit deinem aufruf sagst du dem grid, das es die daten nicht mehr sehen soll, du brauchst aber einen aufruf mit dem das feld nicht angezeigt wird,
    nochmal drüber nachdenken 😉



  • Schau in der Hilfe mal hier: TDBGridColumns



  • bzw. hier: TDBGrid\Eigenschaften\Collumns



  • Ja soweit ist mir das jetzt klar was passiert..

    aber es sollte doch auch eine Lösung geben, die Spalte auszublenden ohne die Datenstruktur darunter ändern zu müssen oder ??!!

    😕



  • nach etwas weiterer Untersuchung :
    es hat nichts (mehr) mit dem Visible zu tun...

    die Fehlermeldung (Error in Where Klausel... Spalte xxx nicht gefunden) kommt
    wenn der Datensatz editiert wird und dann zum nächsten gesprunge wird !
    Die Änderung wird sauber abgespeichert (mit der erwähnten UPDATE-Fkt), aber danach passiert noch irgendwas (Refresh ??) wo er plötzlich seine eigenen Spalten nicht mehr kennt ??
    😕



  • Fields ist ein Feld in der db, mit deinem aufruf sagst du dem grid, das es die daten nicht mehr sehen soll, du brauchst aber einen aufruf mit dem das feld nicht angezeigt wird,
    nochmal drüber nachdenken 😉

    @DBler: die Aussage ist einfach falsch .. 😉 ich habe noch einige Untersuchungen in dieser Richtung unternommen, die Felder sind natürlich noch vorhanden nur eben ausgeblendet... der eigentliche Grund liegt in der ALIAS - Abfrage der Queries (s. anderen Thread) und hat nichts mit visible zu tun...

    aber danke für Deine Unterstützung, war ein interessantes Problemchen..
    🙂
    Wilfrid


Anmelden zum Antworten