Anzahl Datensätze bei Abfrage

Michael Wanner

Hallo Zusammen

Wenn ich folgenden Code ausführe, möchte ich gerne die Anzahl Datensätze auslesen können. Leider jedoch sehe ich jetzt nicht wie dies funktionieren soll:


System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery("SELECT Father FROM ITT1 WHERE Code = '" + ((TextEdit)form.Items["5"]).Value + "'")


Ich möchte nun mit "sdr" die Anzahl Datensätze auslesen. z.B. sdr.RecordCount
Wie funktioniert dies hier?


Besten Dank für die Hilfe
Gruess Michi

Michael Egloff

Hallo Michi,

wenn du das Query änderst (COUNT), kannst du die Anzahl Datensätze gleich zurückgeben. Etwa so:


using(System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery("SELECT COUNT(Father) FROM ITT1 WHERE Code = '" + ((TextEdit)form.Items["5"]).Value + "'"))
{
if(sdr.Read())
{
SwissAddonFramework.UI.Dialogs.MessageBox.Show( sdr[0].ToString(), "OK");
}
}


sdr[0].ToString() enthält nun die Anzahl Datensätze.

Gut so?

Michael Wanner

Ja so kann ich die Anzahl natürlich auch auslesen, hab gedacht es gäbe bereits eine Funktion. Ist aber so kein Problem.

Ich möchte nun jedoch noch alle Datensätze in einer Schlaufe durchgehen. Wenn es mir z.B. 8 Resultate zurückliefert, kann ich den 1 Datensatz ohne Probleme auslesen. Wie aber kann ich nun den 2, 3, 4, .... Datensatz auslesen?

Irgendwie finde ich keine Funktion wie z.B. NextRow() oder NextData(). NextResult() gibt mir ja einen Boolwert zurück.
Gibt es hier irgend eine Möglichkeit, wie ich alle Daten in einer Schlaufe auslesen kann?


Besten Dank für Deine Hilfe
Gruess Michi

Michael Egloff

wenn du alle Datensätze durchlaufen willst, brauchst du natürlich die alte Query (weil bei der "neuen" nur die Anzahl zurückgegeben wird)
sdr.Read() liest immer die nächste Zeile ein und du hast dann mit sdr["Spaltenname"].ToString() auf die Zelle Zugriff!

Dann sieht es etwa so aus:

using(System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery("SELECT Father FROM ITT1 WHERE Code = '" + ((TextEdit)form.Items["5"]).Value + "'"))
{
while (sdr.Read())
{
SwissAddonFramework.UI.Dialogs.MessageBox.Show( sdr["Spaltenname"].ToString(), "OK");
}
}

{

Michael Wanner

So funktioniert es ohne Probleme, besten Dank.

Im SDK funktionierte es leider etwas anders. Da musste man beim RecordSet die Anzahl Datensätze zählen und mit einer while oder for Schleife die Datensätze durchgehen. Muss ich wohl noch einwenig umdenken im SwissAddonFramework ;-)


Gruess Michi
0

Comments

0 comments

Please sign in to leave a comment.

Didn't find what you were looking for?

New post