Announcement

Collapse
No announcement yet.

Anfänger braucht Hilfe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfänger braucht Hilfe

    Hallo Leute, ich hoffe mir kann jemand helfen <br>
    Ich bin ein blutiger Anfänger. Erst seit zehn Wochen dabei :-) <br>
    Und zwar muss ich aus einer DBGrid-Komponente einen Default-Wert <br>
    ermitteln, der dann beim Start des Projektes in eine ComboBox <br>
    eingeblendet werden soll. Ich DANKE euch im voraus. mfg Michael

  • #2
    Hallo,

    angenommen, im Programm wird eine TTable-Instanz eingesetzt, die auf die Tabelle COUNTRY aus der Delphi-Beispieldatenbank DBDEMOS zugreift. Mit einem Doppelklick auf diese TTable-Instanz wird der Feldeditor aufgerufen, so das über die rechte Maustaste der Menüpunkt <i>Felder hinzufügen</i> aufgerufen werden kann. Im folgenden Dialog fügt man alle Felder hinzu. Delphi legt nun für alle Tabellenspalten ein persistentes TField an - so das zum Beispiel für die Tabellenspalte CAPITAL die Instanz <i>Table1Capital</i> generiert wird.

    Somit kann beim Programmstart direkt auf den Wert der entsprechenden Tabellenspalte zugegriffen werden, wobei ohne weitere Aktionen der erste Datensatz der Tabelle ausgelesen wird:
    <pre>
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Table1.Active := True;
    ComboBox1.Items.Add(Table1Capital.Value);
    end;
    </pre>
    Ein TDBGrid stellt nur die Daten aus einer Datenmenge dar, so das es in jedem Fall sinnvoller ist, gleich auf die dahinterliegende Datenmenge (TTable) zuzugreifen.
    &#10

    Comment


    • #3
      Hallo Andreas, danke für Deine schnelle Antwort. <br>
      Nur leider darf ich keine TTable-Komponente benutzen. <br>
      Das Programm sieht lediglich vor, sämtliche Einstellungen <br>
      über ein PopUpMenu auszuführen. In der Datenbank T_TEST <br>
      sollen alle Tabellen gespeichert werden, die im Lauf der Zeit <br> geöffnet werden. Die Datenbank enthält die Werte ID und <br> TABELLEN_NAME. Der DEFAULT-WERT soll anhand der ID ausgewählt <br>
      werden und jederzeit änderbar sein. <br>
      Nachfolgend kommt der Code, der bis jetzt fertig ist. Für <br>
      Deine Hilfe bin ich Dir sehr dankbar. Du kannst mir auch eine <br> E-Mail schicken an folgende Adresse. [email protected]
      Gruss Michael
      #include <vcl.h> <br>
      #pragma hdrstop <br>
      #include <BasisQuery.h> <br>
      #include "ComboCPP.h" <br>
      //--------------------------------------------------------------------------- <br>
      #pragma package(smart_init) <br>
      #pragma resource "*.dfm" <br>
      TfrmComboBox *frmComboBox; <br>
      //--------------------------------------------------------------------------- <br>
      __fastcall TfrmComboBox::TfrmComboBox(TComponent* Owner) : TForm(Owner) <br>
      { <br>
      } <br<
      //--------------------------------------------------------------------------- <br>
      void __fastcall TfrmComboBox::FormCreate(TObject *Sender) <br>
      { <br>
      Database1->Connected = true; <br>
      Query = new TBasisQuery(this); <br>
      Query->DB = Database1; <br>
      } <br>
      //--------------------------------------------------------------------------- <br>
      void __fastcall TfrmComboBox:opTabelleBearbeitenClick(TObject *Sender) <br>
      { <br>
      if (cboCombo->Text.Length() > 0) <br>
      popTabelleBearbeiten->Enabled = true; <br>
      else <br>
      popTabelleBearbeiten->Enabled = false; <br>
      } <br>
      //--------------------------------------------------------------------------- <br>
      void __fastcall TfrmComboBox::FormDestroy(TObject *Sender) <br>
      { <br>
      delete Query; <br>
      } <br>
      //--------------------------------------------------------------------------- <br>
      void __fastcall TfrmComboBox:opEditOeffnenClick(TObject *Sender)
      { <br>
      try <br>
      { <br>
      Query->GetData(Edit1->Text, DBGrid1); <br>
      } <br>
      catch(TDBError *e)

      Comment


      • #4
        Hallo Andreas der Code wurde leider nicht vollständig übertragen. hier nochmal der Code. <br>
        #include <vcl.h><br>
        #pragma hdrstop<br>
        #include <BasisQuery.h><br>
        #include "ComboCPP.h"<br>
        //---------------------------------------------------------------------------<br>
        #pragma package(smart_init) <br>
        #pragma resource "*.dfm"<br>
        TfrmComboBox *frmComboBox; <br>
        //---------------------------------------------------------------------------<br>
        __fastcall TfrmComboBox::TfrmComboBox(TComponent* Owner) : TForm(Owner) <br>
        {<br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox::FormCreate(TObject *Sender) <br>
        {<br>
        Database1->Connected = true; <br>
        Query = new TBasisQuery(this); <br>
        Query->DB = Database1; <br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox:opTabelleBearbeitenClick(TObject *Sender) <br>
        {
        if (cboCombo->Text.Length() > 0) <br>
        popTabelleBearbeiten->Enabled = true; <br>
        else<br>
        popTabelleBearbeiten->Enabled = false; <br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox::FormDestroy(TObject *Sender) <br>
        {<br>
        delete Query; <br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox:opEditOeffnenClick(TObject *Sender) <br>
        {<br>
        try<br>
        {<br>
        Query->GetData(Edit1->Text, DBGrid1); <br>
        }<br>
        catch(TDBError *e) <br>
        {<br>
        Application->MessageBox( e->Message.c_str(), "Fehler", MB_OK); <br>
        } <br>
        } <br>
        //--------------------------------------------------------------------------- <br>
        void __fastcall TfrmComboBox:opBeendenClick(TObject *Sender) <br>
        { <br>
        exit(0); <br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox:opDatenbankOeffnenClick(TObject *Sender) <br>
        {<br>
        try<br>
        {<br>
        Query->GetData(Edit1->Text, DBGrid1); <br>
        }<br>
        catch(TDBError *e) <br>
        {<br>
        Application->MessageBox( e->Message.c_str(), "Fehler", MB_OK); <br>
        }<br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox:opSaveToComboClick(TObject *Sender) <br>
        // Prüfen, ob der Eintrag vorhanden ist. <br>
        // Wenn nicht, soll er der cboCombo hinzugefügt weden. <br>
        {<br>
        int i; <br>
        bool vorhanden = false; <br>
        AnsiString eBuf, bBuf; <br>
        eBuf = Edit1->Text; <br>
        for (i = 0; i < cboCombo->Items->Count; i++)<br>
        {<br>
        bBuf = cboCombo->Items->Strings[i]; <br>
        if ( eBuf == bBuf ) <br>
        {<br>
        vorhanden = true; <br>
        break; <br>
        }<br>
        }<br>
        if (! vorhanden)
        {<br>
        cboCombo->Items->Add(Edit1->Text); <br>
        }<br>
        }<br>
        //---------------------------------------------------------------------------<br>
        void __fastcall TfrmComboBox:opSaveToT_TESTClick(TObject *Sender) <br>
        {<br>
        AnsiString asSQL; <br>

        if (cboCombo->Text.Length() > 0) <br>
        {<br>
        asSQL = "Insert into T_TEST (";<br>
        asSQL += "ID, ";<br>
        asSQL += "TABELLEN_NAME)"; <br>
        asSQL += " values(";<br>
        asSQL += "0,'";<br>
        asSQL += cboCombo->Text + "')"; <br>
        try<br>
        {<br>
        Database1->StartTransaction();<br>
        Query->ExecData(asSQL); <br>
        Data

        Comment


        • #5
          Hallo Andreas, leider darf ich keine TTable verwenden. Die Tabellen liegen alle zentral auf dem Server. Der Default-Wert soll über das Feld ID in der Tabelle vom Anwender zur Lauzeit änderbar sein.
          Gruss Michae

          Comment

          Working...
          X