Announcement

Collapse
No announcement yet.

Datenbanken

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

  • Datenbanken

    Hallo,

    ich versuche schon etwas länger eine Verbindung zu einer Access Datenbank auf zu bauen.

    Ich möchte die Daten in einem Data Grid anzeigen lassen.

    Welche Komponenten brauche ich dafür und wie muss ich sie konfigurieren?

    Gruß

    Norbert

  • #2
    Hallo,
    für den Zugriff auf eine ACCESS-Datenbank ist die Microsoft JET Engine zuständig, die als OLE DB-Provider implementiert ist. Daher erfolgt aus der .NET-Anwendung heraus der Zugriff über die Klasse <b>OleDbConnection</b>. Dort muss bei der Konfiguration der Verbindungszeichenfolge auf der Registerseite <i>Provider</i> der Eintrag <i>Microsoft Jet 4.0 OLE DB Provider</i> ausgewählt werden. Wenn die Verbindung steht, hat die Anwendung zwei Möglichkeiten: <br>
    1. Ein <b>OleDbDataAdapter</b> entlädt die Ergebnismenge einer SELECT-Abfrage auf die ACCESS-Tabelle in eine <b>DataSet</b>-Instanz.
    <br>
    2. Eine <b>OleDbCommand</b>-Komponente führt eine SELECT-Abfage aus, die von einer <b>OleDbDataReader</b>-Instanz ausgelesen wird.
    <br>
    Da die Anwendung die Daten im DataGrid anzeigen will, muss die 1. Alternative (OleDbDataAdapter + DataSet) verwendet werden.
    Am einfachsten geht das in VS.NET 2005 über den folgenden Weg: <br>
    - Datei New | Blank Solution: Name ErsterVersuchACCESS <br>
    - Projektmappen-Explorer: Rechter Mausklick | Hinzufügen | Neues Projekt ... | Visual Basic Projekte | Windows-Anwendung: Name VBNETErsterVersuchACCESS <br>
    - VS.NET zeigt das leere Formular an <br>
    - Server Explorer | Data Connections | Add Connection.... <br>
    - OLE DB Provider Microsoft Jet 4.0 OLE DB Provider auswählen | Datenbank-Dateiname auswählen | Verbindung testen <br>
    - Server Explorer zeigt nun diese Verbindung an, die Tabelle mit den Spalten ist sichbar <br>
    - Server Explorer | Tabelle MailAdressen mit der Maus über Drag&Drop auf das Formular ziehen, VS.NET legt automatisch OleDbConnection und OleDbDataAdapter im Component Tray des Formulars ab <br>
    - OleDbDataAdapter1 auswählen | rechter Mausklick | Generate DataSet, VS.NET legt automatisch DataSetMailAdressen1 im Component Tray des Formulars ab <br>
    - DataGrid auf dem Formular ablegen und mit dem DataSet verbinden <br>
    - Beim Programmstart die Methode <b>Fill</b> des OleDbDataAdapter aufrufen
    <code>
    Me.OleDbDataAdapter1.Fill(Me.DataSetMailAdressen1, "MailAdressen")
    </code>


    &#10

    Comment


    • #3
      Hallo,

      danke erst mal für die Hilfe!

      Ich bin einiges weiter gekommen.
      Das Datagrid zeigt schon die Überschriften der Tabelle an.
      Ich habe glaube ich nur ein Problem mit dem Fill Aufruf.
      Kann man etwas genauer beschreiben was ich anstatt Me. einsetzen muss?

      Gruß

      Norbert Huning

      PS:

      Ich bin Umsteiger von BCB auf MS VS C# mann ist das kompliziert

      Comment


      • #4
        Hallo,

        in meinem VB.NET-Beispiel ist <i>Me</i> (der Verweis auf die eigene Instanz der Formular-Klasse) an sich völlig unnötig, ich habe es nur der Bequemlichkeit wegen verwendet. Wenn man Me mit dem nachfolgenden Punkt eintippt und dann eine Sekunde wartet, blendet die Programmhilfe eine Auswahlliste ein (alternativ könnte das auch über die Tastenkombination aufrufen). Ich kann somit durch das Eintippen der Buchstaben d a t a s bis zum DataSet vorblättern und dann auswählen, so dass ich den Namen der DataSet-Instanz nicht selbst von Hand eintippen muss.

        <i>Me</i> (VB.NET) und <i>this</i> (C#) entsprechen <i>self</i> (Borland).

        Comment


        • #5
          Hallo,

          ich hab´s hinbekommen danke.
          Jetzt suche ich nach den Befehlen um die Daten in meiner Tabelle bzw. im Grid zu bearbeiten. Im BCB kannte ich folgende Befehle
          Table1->Open, Table1->Next, Table1->Edit, Table1->Post, Table1->Close.

          Können sie mir sagen wo ich die entsprechenden Befehle finden kann um die Daten zu bearbeiten .

          Gruß

          Norbert Hunin

          Comment


          • #6
            Ich fürchte da musst du einiges grundlegendes dir noch anschauen.

            2 Links für dich:

            http://www.galileocomputing.de/openbook/vb_net/
            http://www.galileocomputing.de/openbook/csharp

            Comment


            • #7
              Hallo,
              &gt;Table1->Next
              das DataSet von ADO.NET arbeitet wie eine "richtige" SQL-Datenbank völlig mengenorientiert, so dass es das Konzept eines Datensatzzeigers nicht mehr gibt. Statt dessen steht über den <i>CurrencyManager</i> ein virtueller Datensatzzeiger zur Verfügung, wobei in einem Formular über mehrere CurrencyManager die Informationen aus mehreren Datensätzen gleichzeitig dargestellt/bearbeitet werden können. Somit unterscheidet sich ADO.NET grundlegend von dem bisher beim BCB üblichen.
              <br>
              Um den Feldwert in einem typisierten DataSet zu ändern, greift man direkt darauf zu, indem ein Indexer den zu ändernden Datensatz festlegt:
              <code>
              // Zugriff über das typisierte DataSet
              dataSet11.Customers[1].CompanyName = "Neuer CompanyName-Wert";
              </code>
              Bei einem untypisierten DataSet muss man selbst die Tabelle bzw. die Spalte über die Element-Position oder alternative über eine Zeichenkette mit dem Namen definieren:
              <code>
              // Zugriff über das untypisierte DataSet
              aUntypedDataSet.Tables[0].Rows[1]["CompanyName"] = "Neuer CompanyName-Wert";</code&gt

              Comment

              Working...
              X