ich diesen Code-Block in einer Form von mir haben,Auswahlabfrage zwischen zwei Terminen arbeiten nicht
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.ConString))
{
query = "select SUM(TotalMinutes) as TotalMin, SUM(OTMinutes) as OTMin from EmpLog where EmpID = @EmpID and LogDate >= @empdate1 and LogDate <= @empdate2";
conn.Open();
using (SqlCommand cmd2 = new SqlCommand(query, conn))
{
cmd2.Parameters.AddWithValue("@empdate1", dtp_from.Value.ToString("yyyy-MM-dd"));
cmd2.Parameters.AddWithValue("@empdate2", dtp_to.Value.ToString("yyyy-MM-dd"));
cmd2.Parameters.Add(new SqlParameter() { ParameterName = "@EmpID", Value = listBox1.SelectedValue.ToString() });
var da = new SqlDataAdapter(cmd2);
DataTable dt = new DataTable();
da.Fill(dt);
decimal decminutes = Convert.ToDecimal(dt.Rows[0]["TotalMin]"].ToString());
decimal decOTminutes = Convert.ToDecimal(dt.Rows[0]["OTMin"].ToString());
ich einen ähnlichen Code Arbeit an verschiedenen Formen gemacht haben, aber irgendwie wird dies nicht funktionieren. Ich habe versucht SqlDataReader, aber es wird nicht einmal in eine Weile Leser.Lese-Schleife gehen.
auch beim Ausprobieren der Abfrage über ssms funktioniert es wie erwartet. aber wenn ich andere Methoden wie sqldatareader versuche, geht es in Null Ausnahme.
EDIT: Ich habe versucht, die WHERE-Klausel aus meiner Abfrage zu entfernen, und ich kann die Zeilen zurückgeben.
aus irgendeinem Grund werden die datetimepicker-Werte nicht ordnungsgemäß mit den Werten in der Datenbank abgeglichen. auch wenn ich es in eine Zeichenfolge umgewandelt habe, stimmt es genau überein, aber wiederum, es gibt immer noch dbnull.
Verwendung Wenn die Abfrage in SSMS funktioniert dann, warum Sie eine gespeicherte Prozedur schreiben nicht, dass wird den Datensatz zurückgeben. Sie können SqlDataReader einfach verwenden, um die Werte zu erfassen. Diese Praxis ist ebenfalls sehr bevorzugt. –
Vielleicht nicht eine genaue doppelte Frage, aber sehen Sie die Antworten auf diese Frage: http://StackOverflow.com/Questions/425870/using-Datetime-in-SqlParameter-for-Stored-Procedure-Format-Fehler –
Haben Sie überprüfen Sie, ob Ihre Parameter korrekt sind: '@ empdate2> = @ empdate1'? Es ist ein häufiger Fehler bei der Verwendung von "BETWEEN". – dnoeth