Laden...

Zeilen mit null Werten in DataSet anzeigen

Erstellt von AaleDieter vor 14 Jahren Letzter Beitrag vor 14 Jahren 933 Views
A
AaleDieter Themenstarter:in
4 Beiträge seit 2009
vor 14 Jahren
Zeilen mit null Werten in DataSet anzeigen

verwendetes Datenbanksystem: MSSQL

Hallo zusammen,

ich habe ein kleines Problem die Ergebnisse einer SQL-Query in ein DataSet in c# zu lesen.

Die Query 'q' gibt folgendes aus:

1|Müller |Hans
2|Meier |null
3|null |Peter
4|Muster|Mann

In meinem DataSet kommen aber nur die Zeilen 1 und 4 an.
Der Code dazu:

DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(q, connection);

sda.Fill(ds, "Namen");

Ich bekomme dabei aber keine Exception und nix. Die Zeilen mit Null-Werten fehlen einfach.
Wer hat eine Idee, wie ich das ganze ändern kann, damit alle 4 Zeilen angezeigt werden???

Vielen Dank schon mal.

Gruß
AaleDieter

1.564 Beiträge seit 2007
vor 14 Jahren

Hallo AaleDieter

Erstmal willkommen bei myCSharp.de 😉

Kannst du bitte mal deine Query posten?

Danke
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

A
AaleDieter Themenstarter:in
4 Beiträge seit 2009
vor 14 Jahren

Die angezeigte Tabelle ist das Ergebnis, dass ich bekomme, wenn ich die query direkt auf dem Server ausführe. Die query selbst ist ein Join über zwei Tabellen.

SELECT t1.ID, t1.Nachname, t2.Vorname 
FROM tbl_Nachname t1
FULL OUTER JOIN tbl_Vornamen ON t1.ID = t2.ID

Die Frage ist also, wie bekomme ich das Ergebnis anständig dargestellt?

M
61 Beiträge seit 2008
vor 14 Jahren

Versuch mal:

FULL OUTER JOIN tbl_Vornamen t2 ON t1.ID = t2.ID

du musst ja auch sagen was t2 ist.

A
AaleDieter Themenstarter:in
4 Beiträge seit 2009
vor 14 Jahren

das habe ich nur falsch abgetippt... Die Query funktioniert ja, wenn ich sei ausführe. Es werden lediglich die Null Zeilen nicht mit in das DataSet übernommen.
Da muß also irgendwo das Problem liegen...

1.564 Beiträge seit 2007
vor 14 Jahren

Ich gehe davon aus, dass das von dir gepostete Statement nur ein Auszug deines echten Statements ist.

Das DataSet bzw. die DataTable haben kein Problem mit NULL Werten. Hier mal einfach in eine Form mit einem Grid kopieren:


         using (SqlConnection cn = new SqlConnection(@"Server=.\Sql2k8;Integrated Security=SSPI"))
         {
            string query = @"
                     WITH data (Nachname, Vorname) AS
                     (
                                  SELECT 'Müller', 'Hans'
                        UNION ALL SELECT 'Meier', NULL
                        UNION ALL SELECT NULL, 'Peter'
                        UNION ALL SELECT 'Muster', 'Mann'
                     )
                     SELECT * FROM data
                     ";

            using(SqlDataAdapter adap = new SqlDataAdapter(query, cn))
	         {
               DataTable table = new DataTable();
               adap.Fill(table);
               dataGridView1.DataSource = table;
	         }
         }

Auch das von dir gepostete SQL Statement wäre korrekt (BTW: Die Aufteilung von Vor- und Nachnamen in eigene Tabellen macht in meinen Augen keinen oder nur selten Sinn):

DECLARE @first_name TABLE (Id INT NOT NULL, Name VARCHAR(100));
DECLARE @last_name TABLE (Id INT NOT NULL, Name VARCHAR(100));

INSERT INTO @first_name
             SELECT 1, 'Hans'
   UNION ALL SELECT 2, NULL
   UNION ALL SELECT 3, 'Peter'
   UNION ALL SELECT 4, 'Mann'

INSERT INTO @last_name
             SELECT 1, 'Müller'
   UNION ALL SELECT 2, 'Meier'
   UNION ALL SELECT 3, NULL
   UNION ALL SELECT 4, 'Muster'

SELECT *
   FROM @first_name fn
      FULL JOIN @last_name ln ON fn.Id = ln.Id

Wenn es sich bei deinem Post nicht um dein echtes SQL Statement gehandelt hat kann man leider nur schwer weiterhelfen.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

5.299 Beiträge seit 2008
vor 14 Jahren

Woher weißt du, dass die Query richtig funktioniert, wenn aber das Dataset nicht richtig befüllt ist?

Warum hast du eigentlich überhaupt für Vornamen und Nachnamen je eine eigene Tabelle? Gewöhnlicherweise täte ich denken, das seien direkt Spalten einer Personentabelle.

Besteht da eine Relation, also ist einem Vornamen mehrere Nachnamen zugeordnet, oder was ist das ffür ein Konstrukt?

Der frühe Apfel fängt den Wurm.