Autor Beitrag
Theki
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 27.02.12 14:26 
Hallo zusammen,

ich stehe im Moment vor einem Problem, welches mir vorher garnicht aufgefallen ist.
Ich ziehe mittels OleDbDataAdapter Daten aus einer Access-Datenbank und speicher diese in einer xml Datei ab.
Soweit so gut, befinden ist Daten in der XML-Datei stellt dies kein Problem da.

Nun wurde bei einer Abfrage kein Wert zurück gegeben, somit wurde in die XML nur follgendes geschrieben

ausblenden XML-Daten
1:
2:
<?xml version="1.0" standalone="yes"?>
<NewDataSet />


Beim Erstellen des Berichtes wurde nun ein Fehler zurück geworfen.
Sollte kein Datensatz ausgelesen werden müsste es so aussehen, damit CrystalReport zufrieden ist:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <MS>
    <MS-Erg></MS>
    <MS1-Bes></MS>
    <MS1-Bem></MS>
    <MS></MS>
  </MS>
</NewDataSet>


Mein Routine zum Aulesen sieht so aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
sql1 = "Hier steht die SQL"
            con.Open();
            oledbAdapter = new OleDbDataAdapter(sql1, con);
            oledbAdapter.Fill(myDataSet);
            oledbAdapter.Dispose();
            con.Close();
            myDataSet.Tables[0].TableName = "MS";
            myDataSet.Tables[0].Columns[0].ColumnName = "MS-Erg";
            myDataSet.Tables[0].Columns[1].ColumnName = "MS-Bes";
            myDataSet.Tables[0].Columns[2].ColumnName = "MS-Bem";
            myDataSet.Tables[0].Columns[3].ColumnName = "MS-Dat";

            myDataSet.WriteXml(filePath);


Hat jemand Ideen? Stehe auf dem Schlauch...

Danke schonmal...
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 27.02.12 15:59 
Hallo Theki,

dann bleibt dir wohl nichts anderes übrig als zu überprüfen, ob die Daten leer sind und dann ein Dummy-Objekt "MS" (in der DataTable myDataSet.Tables[0] mittels NewRow und anschließendem Rows.Add(...)) zu erzeugen.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 27.02.12 16:34 
Warum versuchst du einen Report zu erstellen obwohl du keine Daten hast?
Theki Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 28.02.12 12:23 
Diese XML-Datein fließen in Subreport's ein. Manche sind vorhanden, manche nicht... wollte ich relativ dynamisch gestalten. Wenn die Felder leer sind, tauchen die auch nicht auf.

Zitat:

Hallo Theki,

dann bleibt dir wohl nichts anderes übrig als zu überprüfen, ob die Daten leer sind und dann ein Dummy-Objekt "MS" (in der DataTable myDataSet.Tables[0] mittels NewRow und anschließendem Rows.Add(...)) zu erzeugen.


Das habe ich befürchtet :/
Gibt wohl leider keinen anderen Weg...
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 28.02.12 12:36 
Was ist wenn du vor dem Adapter.Fill ein explizites Adapter.FillSchema aufrufst?
Theki Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 06.03.12 12:35 
Wie würde das ungefähr aussehen, hab diese Funktion noch nie genutzt.
Anhand der Doku zeigt mir das keine umsetzbare Lösung :/