Autor Beitrag
rostlaube
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 18.09.06 11:06 
Hallo!

Seit kurzer Zeit verwende ich Delphi (7), letzte Woche bin ich allerdings auf ein Problem gestoßen.

Ich verwende ein DBGrid um Daten aus einer Tabelle auszulesen, der User kann dann mehrere Zeilen(Kundeninformationen) markieren und die den markierten Zeilen zugehörigen Daten dann per Stapelverarbeitung verändern. Soweit funktioniert das ganze auch einwandfrei.

Trotzdem möchte ich lieber eine Checkbox-Spalte in dem Grid verwenden, um die Auswahl einfacher zu gestalten. Die Spalte soll nicht in der Datenbank existieren, da diese Informationen nur für den Moment zur Laufzeit interessant sind.

Wie also kann ich eine zusätzliche Spalte einbinden die ich im Grid bearbeiten (Check/Uncheck) kann und nicht auf eine Tabelle zugreift.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 18.09.06 11:11 
Du könntest im DataSet eine berechnete Spalte einfügen. (Nein user profile iconjasocul nicht schlagen!)

_________________
Markus Kinzler.
rostlaube Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 18.09.06 12:01 
Titel: berechnete Spalte lässt sich nicht editieren
Eine berechnete Spalte hatte ich bereits in mein DataSet eingefügt.

Die Spalte ist im Grid als Checkbox-Spalte vorhanden und im Dataset vom Typ Boolean. Allerdings gelingt es mitr nicht den Status im Grid zu ändern. Ich kann also keine der Checkboxen auswählen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 18.09.06 12:02 
user profile iconmkinzler hat folgendes geschrieben:
Du könntest im DataSet eine berechnete Spalte einfügen. (Nein user profile iconjasocul nicht schlagen!)
Warum nicht :motz: :zwinker:

In diesem speziellen Fall, hätte ich im Augenblick auch keine bessere Idee. Aber sind Calculated-Fields nicht Read-Only?
rostlaube Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 19.09.06 10:31 
Titel: MemData
Ich habe gestern noch ein paar Komponenten gefunden die den Inhalt der DB in den Hauptspeicher kopieren. Da ich nicht permanent alle Daten hochaktuell benötige, würde mir eine Lösung über diese MemData Komponenten auch weiter helfen. Ich kann in dem MemDataSet auch eine zusätzliche Spalte (Typ Boolean) erzeugen, die mit keiner DB-Spalte verknüpft ist und nach Ende des Programms verfällt.

So weit so gut!

Mir gelingt es allerdings nicht die CheckEdit Spalte im DBGrid zu verändern (Haken setzen bzw. entfernen).

Hier mein Code mit dem ich versuche! die Checkfelder zu setzen

---------------------------------------------------------------------------------------
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
      with DataSource.DataSet do
      begin
        DisableControls;
        DMemDataSet.Edit;
        for I := 0 to DMemDataSet.RecordCount - 1 do    // Iterate
        begin
          if Datasource.DataSet.FieldByName('NAME').AsString <> 'XXX' then
             begin
             DMemDataSetCHECKEDIT.Value:=True;
             end;
        end;    // for

        DMemDataSet.Post;
        EnableControls;

      end;    // with

      DBGridSpamBot.FullRefresh;
      DBGridSpamBot.Repaint;

---------------------------------------------------------------------------------------

Die beiden letzten Zeilen sollten das DBGrid neu zeichnen, allerdings lässt sich aus dem DBGrid auslesen das die einzelnen Felder immer noch NULL beinhalten. Das setzen des Wertes (DMemDataSetCHECKEDIT.Value:=True) wird aber ausgeführt. Außerdem dauert das "setzen" des Häkchens ca 3 Sekunden pro Vorgang, was ich als zeitlich zu lang einschätze.

Also liegt der Fehler entweder in meinem Codeschnipsel oder im aktualisieren der DBGrid-Ansicht vermute ich.

Moderiert von user profile iconjasocul: Delphi-Tags hinzugefügt