none
DataSet-Designer Problem RRS feed

  • Frage

  • Hallo!

    Ich habe ein Problem bei der Erstellung einer DataTable (genauer gesagt mit den TableAdapter der DataTable) im DataSet-Designer.

    Eine SQL-Abfrage verwendet SQL-Parameter in der WHERE Klausel. Ich weis zwar nicht, ob dies wichtig ist, aber ohne Parameter in der WHERE-Klausel hatte ich noch nie Probleme bei der Erstellung der DataTables/TableAdaper.

    Wenn ich also diese Abfrage verwende und mit weiter den Assistenten zur Erstellung der DataTable fortführen möchte, kommt die Fehlermeldung:

    ! Select-Anweisung geniert.
    Die "@WoTAG_MO"-Skalarvariable muss deklariert werden.

    So lang es nur ein SQL-Parameter ist, kann man die Warnung übergehen (weiter klicken) und den Parameter über die Eigenschaften des TableAdapters -> Parameter -> Parameter manuell hinzufügen, hinzufügen. In der CodeBehind funktionieren die Abrufe einschließlich der man. hinzugefügten Parameter ohne Probleme.

    Jetzt benötige ich aber mehere SQL-Parameter. Da verhält sich der DataSet-Designer nicht mehr so kooperativ ;-)

    Bei der Erstellung der DataTable kann man zwar auch wieder die Fehlermeldung übergehen, aber jetzt werden schon in der Ansicht der DataTable die Spalten (DataRow's) nicht mehr angezeigt!! und auch in der CodeBehind kann man nicht auf sie zugreifen (Schema wurde nicht erstellt).

    Gibt es denn keine Möglichkeit Abfragen mit meheren SQL-Parameter in der WHERE-Klausel in einem typisierten DataSet zu benutzen?

    Fred

    Hinweis: Im SQL-Server Managment-Studio wird das SQL-Statment natürlich ohne Probleme ausgeführt.

    Umgebung: VS 2010, MSSQL-Server 2008

    Mein SQL-Statment:

     DECLARE @DATUM_VON DateTime
     DECLARE @DATUM_BIS DateTime
     DECLARE @STUNDE_VON INT
     DECLARE @STUNDE_BIS INT
     DECLARE @WOTAG_MO INT
     DECLARE @WOTAG_DI INT
     DECLARE @WOTAG_MI INT
     DECLARE @WOTAG_DO INT
     DECLARE @WOTAG_FR INT
     DECLARE @WOTAG_SA INT
     DECLARE @WOTAG_SO INT
    
     SET @DATUM_VON = '12.08.2013'
     SET @DATUM_BIS = '22.09.2013'
     SET @STUNDE_VON = 7
     SET @STUNDE_BIS = 19
     SET @WOTAG_MO = 0				-- Montag(e) anzeigen?		(0=Nein, 1=Ja)
     SET @WOTAG_DI = 0				-- Dienstag(e) anzeigen?	(0=Nein, 1=Ja)
     SET @WOTAG_MI = 1				-- Mittwoch anzeigen?		(0=Nein, 1=Ja)
     SET @WOTAG_DO = 1				-- Donnerstag(e) anzeigen?	(0=Nein, 1=Ja)
     SET @WOTAG_FR = 0				-- Freittag(e) anzeigen?	(0=Nein, 1=Ja)
     SET @WOTAG_SA = 0				-- Samstag(e) anzeigen?		(0=Nein, 1=Ja)
     SET @WOTAG_SO = 0				-- Sonntag(e) anzeigen?		(0=Nein, 1=Ja)
    ------------------------
    SELECT 
    -- ROW_NUMBER() OVER (ORDER BY DATUM) as ID,
    DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)) as DATUM_BASIS,
    -- Zeit
    convert(char(10), DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)), 104) as DATUM, 
    Datename("dw", DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) as WO_TAG, -- Wochentag
    Datepart("hh", DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) as STUNDE, -- Stunde
    -- Inhalt
    GEN.SP_C + GEN.SP_D + GEN.SP_F as ANRUFE_GES,
    GEN.SP_T as ANRUFE_AG,
    GEN.SP_AU as ABBRUECHE,
    round( case when (GEN.SP_C + GEN.SP_D + GEN.SP_F) = 0 then 0 else (GEN.SP_AU * 1.0 / (GEN.SP_C + GEN.SP_D + GEN.SP_F) * 1.0) * 100 end ,2) as ABBRUCH_PRZ,
    GEN.SP_BG as DURCH_DAUER_GESPRAECH,
    GEN.SP_BN as DURCH_WARTE_ABGEBR_GESPR,
    null as nDURCH_DAUER_GESPRAECH,
    null as nDURCH_WARTE_ABGEBR_GESPR
    
    FROM TK.dbo.NR NR
    
    LEFT OUTER JOIN						-- Stunden pro Tag hinzufügen
    	(SELECT top 24 @STUNDE_VON + NR.NR as STUNDE 
    	 FROM TK.dbo.NR NR 
    	 WHERE NR.NR <= @STUNDE_BIS - @STUNDE_VON 
    	 ORDER BY 1) ZEIT ON 1=1
    
    LEFT OUTER JOIN TK.dbo.GENERAL_DAT GEN ON GEN.DATUM = DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))	-- Gesprächsdaten hinzufügen
    
    WHERE NR.NR <= datediff(day, @DATUM_VON, @DATUM_BIS) 
    and Datepart("dw", DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) 
    IN (case when @WOTAG_MO = 1 THEN 1 else 0 end , case when @WOTAG_DI = 1 THEN 2 else 0 end ,
    	case when @WOTAG_MI = 1 THEN 3 else 0 end , case when @WOTAG_DO = 1 THEN 4 else 0 end ,
    	case when @WOTAG_FR = 1 THEN 5 else 0 end , case when @WOTAG_SA = 1 THEN 6 else 0 end ,
    	case when @WOTAG_SA = 1 THEN 7 else 0 end)
    
    ORDER BY 1

    Donnerstag, 10. Oktober 2013 14:23

Antworten

  • Hallo Fred,

    siehe erst die andere Antwort...

    Wenn man es manuell macht muss man die Parameter dem cmd zuweisen, z. B.

    cmd.Parameters.Add("@DATUM_VON", SqlDbType.DateTime);
    cmd.Parameters.Add("@DATUM_BIS", SqlDbType.DateTime);
    -- ... usw. ...

    und natürlich (später) die gewünschten Werte für die Kritierien zuweisen.
    FillSchema (wie auch der TableAdapter der gleiches tut) kann nur funktionieren, wenn der Befehl korrekt parametrisiert ist.

    Gruß Elmar

    • Als Antwort markiert perlfred Montag, 14. Oktober 2013 12:22
    Donnerstag, 10. Oktober 2013 15:45
    Beantworter
  • Hallo Fred,

    kann man vielleicht machen, wäre mir aber viel zu viel Arbeit nur um eine Abfrage zum laufen zu kriegen ;()

    Probiere doch mal den anderen Vorschlag aus: Erstelle aus der Abfrage eine Prozedur und verwende diese. Das geht dann relativ stressfrei und ist leichter wartbar bei späteren Änderungen.

    Gruß Elmar

    • Als Antwort markiert perlfred Montag, 14. Oktober 2013 12:22
    Montag, 14. Oktober 2013 09:35
    Beantworter

Alle Antworten

  • Hallo!

    Ich habe jetzt mal versucht, das typisierte DataSet "man." zu erstellen:

    System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
    con.ConnectionString = "Data Source=REPORT2;Initial Catalog=TK;Integrated Security=True";
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.Connection = con;
    string zSQL = "SELECT ";
    zSQL += "DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)) as DATUM_BASIS, ";
    zSQL += "convert(char(10), DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)), 104) as DATUM, ";
    zSQL += "Datename(\"dw\", DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) as WO_TAG, -- Wochentag";
    zSQL += "Datepart(\"hh\", DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) as STUNDE, -- Stunde";
    zSQL += "GEN.SP_C + GEN.SP_D + GEN.SP_F as ANRUFE_GES, ";
    zSQL += "GEN.SP_T as ANRUFE_AG, ";
    zSQL += "GEN.SP_AU as ABBRUECHE, ";
    zSQL += "round( case when (GEN.SP_C + GEN.SP_D + GEN.SP_F) = 0 then 0 else (GEN.SP_AU * 1.0 / (GEN.SP_C + GEN.SP_D + GEN.SP_F) * 1.0) * 100 end ,2) as ABBRUCH_PRZ, ";
    zSQL += "GEN.SP_BG as DURCH_DAUER_GESPRAECH, ";
    zSQL += "GEN.SP_BN as DURCH_WARTE_ABGEBR_GESPR, ";
    zSQL += "null as nDURCH_DAUER_GESPRAECH, ";
    zSQL += "null as nDURCH_WARTE_ABGEBR_GESPR ";
    zSQL += "FROM TK.dbo.NR NR ";
    zSQL += "LEFT OUTER JOIN						-- Stunden pro Tag hinzufügen ";
    zSQL += "	(SELECT top 24 @STUNDE_VON + NR.NR as STUNDE ";
    zSQL += "	 FROM TK.dbo.NR NR ";
    zSQL += "	 WHERE NR.NR <= @STUNDE_BIS - @STUNDE_VON ";
    zSQL += "	 ORDER BY 1) ZEIT ON 1=1 ";
    zSQL += "LEFT OUTER JOIN TK.dbo.GENERAL_DAT GEN ON GEN.DATUM = DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))	-- Gesprächsdaten hinzufügen ";
    zSQL += "WHERE NR.NR <= datediff(day, @DATUM_VON, @DATUM_BIS) ";
    zSQL += "and Datepart(\"dw\", DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) ";
    zSQL += "IN (case when @WOTAG_MO = 1 THEN 1 else 0 end , case when @WOTAG_DI = 1 THEN 2 else 0 end , ";
    zSQL += "	case when @WOTAG_MI = 1 THEN 3 else 0 end , case when @WOTAG_DO = 1 THEN 4 else 0 end , ";
    zSQL += "	case when @WOTAG_FR = 1 THEN 5 else 0 end , case when @WOTAG_SA = 1 THEN 6 else 0 end , ";
    zSQL += "	case when @WOTAG_SA = 1 THEN 7 else 0 end) ";
    zSQL += "ORDER BY 1";
    cmd.CommandText = zSQL;
                
    System.Data.DataSet ds = new System.Data.DataSet();
    System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter();
    da.SelectCommand = cmd;
    da.FillSchema(ds, System.Data.SchemaType.Source);
    System.Data.DataColumn colDATUM_BASIS               = ds.Tables[0].Columns["DATUM_BASIS"];
    System.Data.DataColumn colDATUM                     = ds.Tables[0].Columns["DATUM"];
    System.Data.DataColumn colWO_TAG                    = ds.Tables[0].Columns["WO_TAG"];
    System.Data.DataColumn colSTUNDE                    = ds.Tables[0].Columns["STUNDE"];
    System.Data.DataColumn colANRUFE_GES                = ds.Tables[0].Columns["ANRUFE_GES"];
    System.Data.DataColumn colANRUFE_AG                 = ds.Tables[0].Columns["ANRUFE_AG"];
    System.Data.DataColumn colABBRUECHE                 = ds.Tables[0].Columns["ABBRUECHE"];
    System.Data.DataColumn colABBRUCH_PRZ               = ds.Tables[0].Columns["ABBRUCH_PRZ"];
    System.Data.DataColumn colDURCH_DAUER_GESPRAECH     = ds.Tables[0].Columns["DURCH_DAUER_GESPRAECH"];
    System.Data.DataColumn colDURCH_WARTE_ABGEBR_GESPR  = ds.Tables[0].Columns["DURCH_WARTE_ABGEBR_GESPR"];
    System.Data.DataColumn colnDURCH_DAUER_GESPRAECH    = ds.Tables[0].Columns["nDURCH_DAUER_GESPRAECH"];
    System.Data.DataColumn colnDURCH_WARTE_ABGEBR_GESPR = ds.Tables[0].Columns["nDURCH_WARTE_ABGEBR_GESPR"];
    ds.WriteXmlSchema("View_150.xsd");
    

    da bekomme ich an der Stelle da.FillSchema() genau die selbe Fehlermeldung wie der Designer:

    Die "@DATUM_VON"-Skalarvariable muss deklariert werden.

    ... mir nutzt das aber wenig ... aber vieleicht ...

    Donnerstag, 10. Oktober 2013 15:36
  • Hallo Fred,

    die Parameter für ein typisiertes DataSet werden nicht durch ein DECLARE festgelegt. Sie müssen beim TableAdapter in der Parameters Auflistung hinterlegt werden - zu finden im Eigenschaftsfenster (F4) - genauso wie man es bei einem (Sql)DataAdapter auch tut.

    Die Fehlermeldung im Query Designer ist bei komplexeren Dingen (wie CASE) leider unvermeidlich, da der Designer nur sehr simples SQL interpretieren und dabei die Parameter selbst ermitteln kann - wird es komplexer, streikt er...

    Für oben akzeptiere zunächst die Fehlermeldung und lege die Parameter manuell in der Auflistung an.

    Oder aber: Erstelle eine Prozedur mit der Abfrage und den benötigten Parametern und verwende diese.

    Im übrigen: Die DATEPART Funktion erwartet den ersten Parameter ohne Anführungsstriche (im Gegensatz zu Access/Jet). Und @WOTAG_SA kommt oben übrigen zweimal vor und Sonntag fehlt.

    Gruß Elmar

    Donnerstag, 10. Oktober 2013 15:37
    Beantworter
  • Hallo Fred,

    siehe erst die andere Antwort...

    Wenn man es manuell macht muss man die Parameter dem cmd zuweisen, z. B.

    cmd.Parameters.Add("@DATUM_VON", SqlDbType.DateTime);
    cmd.Parameters.Add("@DATUM_BIS", SqlDbType.DateTime);
    -- ... usw. ...

    und natürlich (später) die gewünschten Werte für die Kritierien zuweisen.
    FillSchema (wie auch der TableAdapter der gleiches tut) kann nur funktionieren, wenn der Befehl korrekt parametrisiert ist.

    Gruß Elmar

    • Als Antwort markiert perlfred Montag, 14. Oktober 2013 12:22
    Donnerstag, 10. Oktober 2013 15:45
    Beantworter
  • Hallo Elmar!

    Einfach Super! Wie gründlich du dir die Posts durchliest! Du hast natürlich recht, die DARTEPART Funktion akzeptiert als ersten Parameter auch die Angabe der Literale aber ich verwende seit Jahren den ersten Parameter mit Anführungszeichen (die Statements habe ich per Paste/Copy übernommen und sie werden 100% vom SQL-Server mit Anführungszeichen ausgeführt). Aber wenn das nicht notwendig ist, bzw. vieleicht nur aus Compatibiltätsgründen von MS so ausgeführt wird, bin ich dir für den Hinweis natürlich dankbar.

    >> Für oben akzeptiere zunächst die Fehlermeldung und lege die Parameter manuell in der Auflistung an.

    Parameter man. anlegen geht zwar, aber wie beschrieben erzeugt der Designer, in diesem Fall (Abfrage zu komplex) eine Tabelle ohne Spalten, die auch in der Codebehind dann nicht ansprechbar sind.

    Ich verfolge den Weg, die typisierte DataTable man. zu erstellen und würde mich freuen, wenn Du meine Frage die ich in der anderen Antwort von dir zuordnen möchte, beantworten könntest.

    Vielen Dank für deine Hilfe!!!!!!!!

    Fred.

    Montag, 14. Oktober 2013 08:06
  • Hallo Elmar!

    Wie in der anderen Antwort geschrieben, verfolge ich jetzt den Weg, die typiesierte DataTabel man. zu erstellen. Leider stoße ich da schon wieder an (wissens) Grenzen.

    Dank deiner Hilfe (Parameter im cmd definieren) verlief die Erstellung des Schemas jetzt erfolgreich. 
    Die XSD-Datei kann man auch dem Projekt hinzufügen und es wird eine Tabelle der gewünschten Struktur angezeigt.

    Mit dem SDK-Tool  xsd.exe habe ich auch erfolgreich eine C# DataSet-Klasse erstellen können (view150.cs).

    Durch:

     TK_Auswertung.NewDataSet._TableDataTable view150 = new NewDataSet._TableDataTable();

    kann ich eine Instanz der typisierten DataTabel erzeugen.

    Doch wie befülle ich jetzt diese Tabelle? Ein DataTabel-Adapter gibt es nicht.

    Fred.

    Montag, 14. Oktober 2013 08:21
  • Hallo Fred,

    kann man vielleicht machen, wäre mir aber viel zu viel Arbeit nur um eine Abfrage zum laufen zu kriegen ;()

    Probiere doch mal den anderen Vorschlag aus: Erstelle aus der Abfrage eine Prozedur und verwende diese. Das geht dann relativ stressfrei und ist leichter wartbar bei späteren Änderungen.

    Gruß Elmar

    • Als Antwort markiert perlfred Montag, 14. Oktober 2013 12:22
    Montag, 14. Oktober 2013 09:35
    Beantworter
  • Hallo Fred,

    Es handelt sich dabei um keine Literale (im Gegensatz zu Access wo es erforderlich ist).

    Die "Anführungszeichen" funktionieren nur, wenn SET QUOTED_IDENTIFIER ON gesetzt ist (im Standard und empfohlen: ON). Denn dienen sie wie [] zum Abgrenzen von Bezeichnern. Und sollte mal OFF als Einstellung vorkommen, gibt es Probleme:

    SET QUOTED_IDENTIFIER ON -- OFF
    GO
    SELECT TOP (1)
    	DATEPART(year, OrderDate),
    	DATEPART("year", ShippedDate),	-- fehler bei QUOTED_IDENTIFIER OFF
    	DATEPART([year], RequiredDate)
    FROM Northwind.dbo.Orders

    (Wenn Du oben die SET Anweisung auf OFF einstellst, so gibt es einen Fehler).

    Eckige Klammern funktionieren immer, aber da es sich um Schlüsselwörter handelt, sollte man sich die auch ersparen.

    Gruß Elmar

    Montag, 14. Oktober 2013 09:43
    Beantworter
  • Hallo Elmar,

    da ich mich bei dem verwendeten DBMS nicht zu 100% auf den MS-SQL-Server festlegen will/kann habe ich die Variante, dyn. erzeugte DataTabel/Table-Adapter mal bis zu einem positiven Ergebnis durchgespielt, aber du hattest natürlich wieder einmal recht, es erzeugt jede Menge Code und ist schlecht wartbar:

    TK_Auswertung.NewDataSet.TabView_150DataTable view150 = new NewDataSet.TabView_150DataTable(); // Instanz der typisierten Tabelle aus dem exportiertem XSD-Schema verwenden // Dyn. Verbindung zum SQL-Server + Abfrage + TableAdapter erstellen System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(); con.ConnectionString = "Data Source=REPORT2;Initial Catalog=TK;Integrated Security=True"; System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); cmd.Connection = con; string zSQL = "SELECT "; zSQL += "DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)) as DATUM_BASIS, "; zSQL += "convert(char(10), DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)), 104) as DATUM, "; zSQL += "Datename(dw, DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) as WO_TAG, "; zSQL += "Datepart(hh, DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) as STUNDE, "; zSQL += "GEN.SP_C + GEN.SP_D + GEN.SP_F as ANRUFE_GES, "; zSQL += "GEN.SP_T as ANRUFE_AG, "; zSQL += "GEN.SP_AU as ABBRUECHE, "; zSQL += "round( case when (GEN.SP_C + GEN.SP_D + GEN.SP_F) = 0 then 0 else (GEN.SP_AU * 1.0 / (GEN.SP_C + GEN.SP_D + GEN.SP_F) * 1.0) * 100 end ,2) as ABBRUCH_PRZ, "; zSQL += "GEN.SP_BG as DURCH_DAUER_GESPRAECH, "; zSQL += "GEN.SP_BN as DURCH_WARTE_ABGEBR_GESPR, "; zSQL += "null as nDURCH_DAUER_GESPRAECH, "; zSQL += "null as nDURCH_WARTE_ABGEBR_GESPR "; zSQL += "FROM TK.dbo.NR NR "; zSQL += "LEFT OUTER JOIN "; zSQL += " (SELECT top 24 @STUNDE_VON + NR.NR as STUNDE "; zSQL += " FROM TK.dbo.NR NR "; zSQL += " WHERE NR.NR <= @STUNDE_BIS - @STUNDE_VON "; zSQL += " ORDER BY 1) ZEIT ON 1=1 "; zSQL += "LEFT OUTER JOIN TK.dbo.GENERAL_DAT GEN ON GEN.DATUM = DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON)) "; zSQL += "WHERE NR.NR <= datediff(day, @DATUM_VON, @DATUM_BIS) "; zSQL += "and Datepart(dw, DATEADD(HOUR, ZEIT.STUNDE, DATEADD(DAY, NR.NR, @DATUM_VON))) "; zSQL += "IN (case when @WOTAG_MO = 1 THEN 1 else 0 end , case when @WOTAG_DI = 1 THEN 2 else 0 end , "; zSQL += " case when @WOTAG_MI = 1 THEN 3 else 0 end , case when @WOTAG_DO = 1 THEN 4 else 0 end , "; zSQL += " case when @WOTAG_FR = 1 THEN 5 else 0 end , case when @WOTAG_SA = 1 THEN 6 else 0 end , "; zSQL += " case when @WOTAG_SO = 1 THEN 7 else 0 end) "; zSQL += "ORDER BY 1"; cmd.CommandText = zSQL; cmd.Parameters.Add("@DATUM_VON", System.Data.SqlDbType.DateTime); cmd.Parameters.Add("@DATUM_BIS", System.Data.SqlDbType.DateTime); cmd.Parameters.Add("@STUNDE_VON", System.Data.SqlDbType.Int); cmd.Parameters.Add("@STUNDE_BIS", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_MO", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_DI", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_MI", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_DO", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_FR", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_SA", System.Data.SqlDbType.Int); cmd.Parameters.Add("@WOTAG_SO", System.Data.SqlDbType.Int); System.Data.DataSet ds = new System.Data.DataSet(); System.Data.SqlClient.SqlDataAdapter adap150 = new System.Data.SqlClient.SqlDataAdapter(); adap150.SelectCommand = cmd; adap150.FillSchema(ds, System.Data.SchemaType.Source); System.Data.DataColumn colDATUM_BASIS = ds.Tables[0].Columns["DATUM_BASIS"]; System.Data.DataColumn colDATUM = ds.Tables[0].Columns["DATUM"]; System.Data.DataColumn colWO_TAG = ds.Tables[0].Columns["WO_TAG"]; System.Data.DataColumn colSTUNDE = ds.Tables[0].Columns["STUNDE"]; System.Data.DataColumn colANRUFE_GES = ds.Tables[0].Columns["ANRUFE_GES"]; System.Data.DataColumn colANRUFE_AG = ds.Tables[0].Columns["ANRUFE_AG"]; System.Data.DataColumn colABBRUECHE = ds.Tables[0].Columns["ABBRUECHE"]; System.Data.DataColumn colABBRUCH_PRZ = ds.Tables[0].Columns["ABBRUCH_PRZ"]; System.Data.DataColumn colDURCH_DAUER_GESPRAECH = ds.Tables[0].Columns["DURCH_DAUER_GESPRAECH"]; System.Data.DataColumn colDURCH_WARTE_ABGEBR_GESPR = ds.Tables[0].Columns["DURCH_WARTE_ABGEBR_GESPR"]; System.Data.DataColumn colnDURCH_DAUER_GESPRAECH = ds.Tables[0].Columns["nDURCH_DAUER_GESPRAECH"]; System.Data.DataColumn colnDURCH_WARTE_ABGEBR_GESPR = ds.Tables[0].Columns["nDURCH_WARTE_ABGEBR_GESPR"];

    cmd.Parameters["@DATUM_VON"].SqlValue = dt_von; cmd.Parameters["@DATUM_BIS"].SqlValue = dt_bis; cmd.Parameters["@STUNDE_VON"].SqlValue = nAUSW_STUNDE_VON; cmd.Parameters["@STUNDE_BIS"].SqlValue = nAUSW_STUNDE_BIS; cmd.Parameters["@WOTAG_MO"].SqlValue = nWOTAG_MO; cmd.Parameters["@WOTAG_DI"].SqlValue = nWOTAG_DI; cmd.Parameters["@WOTAG_MI"].SqlValue = nWOTAG_MI; cmd.Parameters["@WOTAG_DO"].SqlValue = nWOTAG_DO; cmd.Parameters["@WOTAG_FR"].SqlValue = nWOTAG_FR; cmd.Parameters["@WOTAG_SA"].SqlValue = nWOTAG_SA; cmd.Parameters["@WOTAG_SO"].SqlValue = nWOTAG_SO; adap150.Fill(view150); // Daten abrufen

    Die Prozedur ist schnell erstellt und übersichtlich. Die Unterstützung durch den DataSet-Designer funktioniert auch wieder 100%ig, alles schön ;-).

    Vielen Dank! für deine Hilfe.

    Fred.

    Sorry ... weil es mich ein wenig beschäftigt hatt...

    von der Instanz des typisierten DataSet's kommt man nicht auf das Command-Objekt oder den def. TabelAdapter oder??

    • Bearbeitet perlfred Montag, 14. Oktober 2013 12:44 Nachtrag
    Montag, 14. Oktober 2013 12:38