Laden...

Select Ereignisse from Verlauf Where Datum = @selecteddate

Erstellt von Movementroboter vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.430 Views
M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren
Select Ereignisse from Verlauf Where Datum = @selecteddate

verwendetes Datenbanksystem: <MSSQL>
Hallo Leute ,
ich bräuchte mal eure Hilfe bei dem auslesen der Ereignisse die in meiner MSSQL Datenbank stehen.

Folgendes Problem:
Ich habe in meiner Windows Form ein monthCalender erstellt.
Jetzt möchte ich gerne das wenn ich auf ein bestimmtes Datum klicke z.B. 12.12.2013 das er mir in meinem DataGridView die Ereignisse die für den 12.12.2013 vorhanden sind anzeigt.

F


 private void Kalender_DateSelected(DateTime selectedDate)
        {
            try
            {
                SqlConnection cn = new SqlConnection(global::WindowsFormsApplication1.Properties.Settings.Default.Test99ConnectionString);
                cn.Open();                                                                                                                                               
                SqlDataAdapter sda = new SqlDataAdapter("select Ereignisse from Verlauf WHERE Datum = @selectedDate", cn);
SqlCommand command = new SqlCommand();
                command.Parameters.AddWithValue("@selectedDate", );
                DataTable dt = new DataTable();
                sda.Fill(dt);
                dataGridViewBerichtAnzeigen.DataSource = dt;  
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }



2.207 Beiträge seit 2011
vor 10 Jahren

Hallo Movementroboter,

da wir weder deine Datenstruktur kennen, können wir nicht genau sagen, ob das Query richtig ist. Nichts-desto-trotz kannst du dir mal anschauen, wie es in

[Artikelserie] SQL: Parameter von Befehlen

gemacht wurde.

Bitte sag auch, was passiert oder nicht passiert. Fliegt eine Exception? Ist das Ergebnis einfach leer? Deiner Überschrift "Folgendes Problem" folgt nur, was du willst. Nicht, was nicht funktioniert 😉

Gruss

Coffeebean

4.221 Beiträge seit 2005
vor 10 Jahren
  
         command.Parameters.AddWithValue("@selectedDate", );  
  

AddWithValue 😃 wäre vielleicht eine gute Idee auch das Datum zu übergeben.

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Hallo Leute
danke erstmal für die Antworten 😃

Coffeebean:
Wenn ich auf ein Datum klicke erscheint keine Exception und es werden auch keine Daten im Datagridview angezeigt. Habe schon diverse Beiträge zu diesem Thema angeschaut aber leider ohne Erfolg.

Programmierhans:
Habe extra kein Argument hineingeschrieben weil Kalender.DateSelected nicht funktioniert.


command.Parameters.AddWithValue("@selectedDate", Kalender.DateSelected);

Liebe Grüße und einen schönen Start in die neue Woche 😃,
Movementroboter

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo Movementroboter,

dann schau mal mit dem Debugger nach. (Schau das Datum, welches reingegeben wird, an. Schau dein Query an. )

Damit und mit den angegebenen Stichwörtern solltest du auf die Lösung kommen.

Gruss

Coffeebean

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Hallo Leute habe gestern abend noch etwas im Internet gefunden und ausprobiert. Mir wird nun angezeigt das ich die Variable Datum deklarieren muss.
aber durch

cmd.Parameters.Add(new SqlParameter("@Datum", Kalender.SelectionStart.ToShortDateString()));

deklariere ich sie doch schon.
Was mach ich falsch ?


private void Kalender_DateChanged(object sender, DateRangeEventArgs e)
        {
            try
            {
                SqlConnection cn = new SqlConnection(global::WindowsFormsApplication1.Properties.Settings.Default.TestConnectionString);
                cn.Open();
                SqlDataAdapter sda = new SqlDataAdapter("select Ereignisse from Verlauf WHERE Datum = @Datum", cn);
                SqlCommand cmd = new SqlCommand();
                cmd.Parameters.Add(new SqlParameter("@Datum", Kalender.SelectionStart.ToShortDateString()));
                DataTable dt = new DataTable();
                sda.Fill(dt);
                dataGridView1.DataSource = dt;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            } 
        }

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo Movementroboter,

lass beim AddWithValue mal das"@" vor dem Parameterstring weg.

Gruss

Coffeebean

4.942 Beiträge seit 2008
vor 10 Jahren

Hallo,

der Fehler ist ein anderer: der SqlDataAdapter und das SqlCommand haben bisher nichts miteinander zu tun (daher kann der Parameter gar nicht dem SQL-String zugewiesen werden).
Es fehlt noch


sda.SelectCommand = cmd;

Edit: evtl. muß dann aber der SQL-String dem SqlCommand als Parameter gegeben werden. Beispiele dazu gibt es unter How to use a DataAdapter with stored procedure and parameter

F
10.010 Beiträge seit 2004
vor 10 Jahren

Hallo Leute habe gestern abend noch etwas im Internet gefunden und ausprobiert. Mir wird nun angezeigt das ich die Variable Datum deklarieren muss.
aber durch

C#-Code:
cmd.Parameters.Add(new SqlParameter("@Datum", Kalender.SelectionStart.ToShortDateString()));

deklariere ich sie doch schon.

Nein, du deklarierst einen Parameter als String, nicht als DateTime.

@Th69:
Es fehlt eher


sda.SelectCommand.Parameters.AddWithValue("@Datum", Kalender.SelectionStart);

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 10 Jahren

Ich danke euch für eure Antworten 😃
Habe es direkt mal ausprobiert nun zeigt der Debugger an:

Fill:Selection.Command-Eigenschaft wurde nicht initialisiert.

Habe den Connection String bereits geprueft ob er in meiner MSSQL Datenbank funktioniert.

Also denke ich mal liegt es an der Variable @Datum

Bekomme hier noch die Krise.

LG,
Movementroboter

M
171 Beiträge seit 2012
vor 10 Jahren

Du überschreibst ja auch das Kommando des SQLAdapters wieder wenn Du ihm später ein neues zuweist.


SqlDataAdapter sda = new SqlDataAdapter("select Ereignisse from Verlauf WHERE Datum = @Datum", cn);

und anschließend


sda.SelectCommand = cmd; 

=> Effekt: dein erstes Command wurde überschrieben.

Stattdessen:





SqlDataAdapter sda = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand("select Ereignisse from Verlauf WHERE Datum = @Datum");
cmd.Parameters.AddWithValue("Datum", Kalender.DateSelected);
cmd.Connection = new SqlConnection(global::WindowsFormsApplication1.Properties.Settings.Default.TestConnectionString);
sda.SelectCommand = cmd;
DataTable dt = new DataTable();
sda.Fill(dt);
dataGridView1.DataSource = dt;


F
10.010 Beiträge seit 2004
vor 10 Jahren

Ich weis schon warum ich die ganzen Einsteigerbücher für schlecht halte.
Die ganzen Autoren haben scheinbar ihren Einstieg in .NET eins zu eins niedergeschrieben.
Anders ist nicht zu erklären das sich dieser Blödsinn durch jedes Buch zieht.


SqlDataAdapter sda = new SqlDataAdapter("select Ereignisse from Verlauf WHERE Datum = @Datum", connectionString);
sda.SelectCommand.Parameters.AddWithValue("@Datum", Kalender.DateSelected);

DataTable dt = new DataTable();
sda.Fill(dt);
dataGridView1.DataSource = dt;

Das ist doch so einfach, und vorallem kommen dann nicht wieder diejenigen die [Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen missachten.

3.825 Beiträge seit 2006
vor 10 Jahren
cmd.Parameters.Add(new SqlParameter("@Datum", Kalender.SelectionStart.ToShortDateString()));

Der Sinn der Parameter ist doch gerade dass die Typumwandlung vom .NET Framework übernommen wird. Du übergibst immer den Typ wie er in der Datenbank definiert ist.
Falls Du selbst umwandeln würdest müsstest Du viele Sachen beachten : deutsches und englisches Datumsformat, oder ein anderes, dann Sonderzeichen in Strings etc.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3