verwendetes Datenbanksystem: Access 2010
Hallo an alle ich habe ein Problem wenn ich meine Access DB nach einem Datum abfragen möchte:
als 1. habe ich mit:
DateTime dt = DateTime.Today.AddDays(-1);
eine variable angelegt die mir immer das Datum von gestern liefert, die Ausgabe in einer Textbox liefert mich auch das korrekte Datum zurück.
als 2. habe ich eine commandText erstellt:
cmd.CommandText = ("SELECT gewicht.st_Datum, gewicht.ge_gewicht, gewicht.differen FROM gewicht WHERE (((gewicht.st_Datum)= '" + dt + "'))");
als 3. habe ich zur Überprüfung eine
MessageBox.Show(cmd.CommandText);
ertellt um zu sehen ob alle Daten korrekt angegeben sind. Es wird mir auch alles korrekt angezeigt.
auch eine in Access erstellte SQL Querrie bringt keinen erfolg:
SELECT gewicht.st_Datum, gewicht.ge_gewicht, gewicht.differenz
FROM gewicht
WHERE (((gewicht.st_Datum)=Date()-2));
es wird mir jedesmal folgende Meldung zurück geliefert:
Fehlermeldung:
Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
Wo ist meine Fehler? Bitte um eure Hilfe
Michael
Wenn du schon MS Access nützt dann schau doch in die Doku, dort wirst du
finden, somit sollte
WHERE ... = DateAdd("d", -2, Date())
wahrscheinlich dein Wunschergebnis liefern.
**:::
leider liefert er mir auch dann den Fehler:
Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
ich habe es ja auch schon mit der original SQL Abfrage aus Access versucht die in Access einwandfrei durchläuft und das erforderliche Ergebnis bringt.
Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
Da steht was fehlt. Wie sieht denn dein Code aus? Bitte den Part von der Implementierung der Abfrage bis zum Absetzen an die DB posten.
BTW: Schaue dir diesen Artikel aml an [Artikelserie] SQL: Parameter von Befehlen
**:::
Inatialisieren:
OleDbConnection con = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
Form Load:
con.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=H:\\datenbanken\\fitness.accdb";
cmd.Connection = con;
dann:
public void zum()
{
con.Open();
DateTime dt = DateTime.Today.AddDays(-1);
cmd.CommandText = ("SELECT gewicht.st_Datum, gewicht.ge_gewicht, gewicht.differen FROM gewicht (((gewicht.st_Datum)=Date()-2));");
MessageBox.Show(cmd.CommandText);
{
OleDbDataReader de= cmd.ExecuteReader();
while (de.Read())
{
textBox3.Text = Convert.ToString(de["differenz"]);
textBox8.Text = Convert.ToString(de["ge_gewicht"]);
textBox9.Text = Convert.ToString(de["st_Datum"]);
}
de.Close();
}
aufgerufen wird alles mit:
private void button2_Click(object sender, EventArgs e)
{
zum();
}
Bitte Code-Tag verwenden [Hinweis] Wie poste ich richtig? Punkt 6.
Du hast mein Vorschlag gar nicht eingebaut!
und warum so viele Klammer um die Bedingung in WHERE? Das stört beim Lesen der Abfrage.
**:::
Und wer hindert dich daran, dein Posting zu editieren und Code-Tags um den Code zu setzen?
**:::
"SELECT gewicht.st_Datum, gewicht.ge_gewicht, gewicht.differen FROM gewicht (((gewicht.st_Datum)=Date()-2));
Da fehlt ein "z" und ein "WHERE", von daher glaube ich nicht, daß die Abfrage "in Access einwandfrei durchläuft und das erforderliche Ergebnis bringt".
Das Forum ist nicht dazu da, deine Rechtschreibfehler zu überprüfen.
Christian
Weeks of programming can save you hours of planning
hier meine Original SQL Anweisung aus Access:
SELECT gewicht.ge_id, gewicht.st_id, gewicht.st_Datum, gewicht.ge_gewicht, gewicht.differenz
FROM gewicht
WHERE (((gewicht.st_Datum)=Date()-1));
die Liefert das selbe Ergbnis aks Fehler
ich habe nach langen Ausprobieren und Graue Haare bekommen endlich die Lösung gefunden.
Warum auch immer ich konnte in der SQL Abfrage mache was ich wolte in Access selber lief alles sauber duch nur nicht in C#.
Ich habe jetzt die Entsprechende Tabelle komplett aus Access gelöscht und neu angelegt mit dem Demodaten jetzt läuft die Abfrage:
public void zum()
{
con.Open();
DateTime dt = DateTime.Today.AddDays(-1);
cmd.CommandText = ("SELECT gewicht.ge_id, gewicht.st_id, gewicht.st_Datum, gewicht.ge_gewicht, gewicht.differenz FROM gewicht WHERE (((gewicht.st_Datum)=Date()-2))");
MessageBox.Show(cmd.CommandText);
{
OleDbDataReader de = cmd.ExecuteReader();
while (de.Read())
{
textBox3.Text = Convert.ToString(de["differenz"]);
textBox8.Text = Convert.ToString(de["ge_gewicht"]);
textBox9.Text = Convert.ToString(de["st_Datum"]);
}
de.Close();
con.Close();
}
}
einwandfrei durch und liefert die geforderten ergebnisse