Announcement

Collapse
No announcement yet.

Problem bei Datenmenge erzeugen mit C#-Builder

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

  • Problem bei Datenmenge erzeugen mit C#-Builder

    Mit dem C#-Builder ist es möglich, typed Datasets von einem DataAdapter erzeugen zu lassen. (Siehe auch den Borland-Artikel http://bdn.borland.com/article/0,1410,30294,00.html)

    Ich erhalte dabei reproduzierbar den Fehler
    "Probleme beim Erzeugen von . Erstellen Sie das Projekt erneut, beheden Sie alle Fehler und erzeugen Sie dann die Datenmenge erneut."

    In der Projektverwaltung wurde eine Datei DataSet1.xsd hinzugefügt, der wiederum ein leerer Subknoten untergeordnet wurde. Das ist vermutlich schon Murks, weil beim Entfernen dieser "Datei" aus dem Projekt mitunter die IDE abschmiert.

    Dabei arbeite ich mit OleDbConnection und OleDbDataAdapter. oleDbDataAdapter.Fill(dataSet1, "MyTable") mit dem selben Select-Command funktioniert hingegen.

    Ich arbeite mit der kostenlosen C#-Builder Personal-Version ohne den ersten Patch (an den Download kommt man als Gratis-Nutzer offenbar nicht dran) und greife mit dem OLEDB-Provider auf eine Access-Datenbank zu.

    Hat jemand eine Ahnung, was das sein kann?

  • #2
    Hallo,

    beim C#Builder muss man zwischen den Teilen BDP.NET+ADO.NET und dem reinen ADO.NET unterscheiden. Das Hantieren mit den ADO.NET-Klassen OleDbConnection/OleDbDataAdapter bzw. SqlConnection/SqlDataAdapter ist deutlich schwerfälliger (um nicht störungsanfälliger sagen zu müssen) als BDP.NET. In meinem C#Builder-Buch beschreibe ich auf den Seiten 342ff einen Weg, wie man derartigen Problemen aus dem Weg gehen kann. Die Kurzzusammenfassung sieht wie folgt aus:

    1. Über XSD.EXE aus einer XSD-Datei den C#-Sourcecode für das typisierte DataSet generieren lassen (oder VS.NET dazu nutzen).

    2. Komponente dataSet1 aus dem Komponentenbereich des C#Builder löschen.

    3. Privates Objektfeld für das typisierte DataSet anlegen (Bsp: private NewDataSet aDS

    4. Im Sourecode jedes Vorkommen von dataSet1 durch aDS ersetzen.

    5. Controls nicht über den Objektinspektor an die Spalte binden, sondern über den Sourcecode.

    <pre>

    sqlConnection1.Open();
    try
    {
    aDS = new NewDataSet();
    sqlDataAdapter1.Fill(aDS, "Vergleich");
    dataGrid1.DataSource = aDS;
    dataGrid1.DataMember = "Vergleich";
    statusBar1.Text = "Verbindung erfolgreich hergestellt";
    }
    finally
    {
    sqlConnection1.Close();
    }

    </pre>

    Auf der CDROM des Borland C#Builder ist auch ein (undokumentierter) BDP.NET-Treiber für ACCESS, der in der letzten Minute fertiggestellt wurde

    Comment


    • #3
      Bei "Datenmenge erzeugen" legt der C#-Builder auch eine DataSet1.cs-Datei an, die sich aber inhaltlich ein wenig unterscheidet von der, die XSD erzeugt. Viellecht liegt es daran?

      Muss Deinen Tip mal ausprobieren und dann weiterforschen, ob man das nicht doch in den Designer hineinerzeugen kann. Vielen Dank dafür.

      Bei der heruntergeladenen C#-Version ist der BDP.NET-Treiber leider nicht dabei.

      Gruß Reinhar

      Comment


      • #4
        Hallo,

        der meiste "Ärger" passiert in InitializeComponent(), wenn visuell konfiguriert wird. Der Editor "verschluckt" sich manchmal, so das einzelne Fragmente durcheinandergewürfelt werden. Da diese Region normalerweise ausgeblendet ist, fällt das bei der visuellen Entwicklung zuerst nicht auf (erst die Fehlermeldungen deuten darauf hin).

        Wenn die Low-Level-Fassung funktioniert, kann man dann die Schritt-für-Schritt-Versuche im Designer beginnen (und jedes Mal das Ergebnis im Sourcecode prüfen, bevor der nächste Schritt gemacht wird).

        P.S: Das erste C#Builder-Patch hat auch boreditu.dll (den Editor-Kernel) ausgetauscht

        Comment

        Working...
        X