Where

e.motion

Mitglied
SELECT .. WHERE

Meine Seite:

Code:
<%@ Page Language="C#" Culture="de-DE" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    void Calendar1_SelectionChanged(Object sender, EventArgs e)
    {
        DateTime date = Calendar1.SelectedDate;
    
        string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = date";
        OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=" + Server.MapPath("asp.net.mdb"));
        OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);
        myConnection.Open();
    
        TextBox1.Text = myCommand.ExecuteScalar().ToString();
        myConnection.Close();
    
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:Calendar runat="server" ID="Calendar1" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>
    </form>
</body>
</html>

Das Problem: Wenn ich auf einen Tag des Calendar1 drücke und somit Calendar1_SelectionChanged aufrufe kommt folgender Fehler:
System.Data.OleDb.OleDbException: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

Wenn ich aber statt dieser Zeile:
string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = date";
Diese Zeile schriebe:
string mySelectQuery = "SELECT Event FROM Calendar";

Kommt der Fehler nicht.

Aber das Feld in der Datenbank ist auch von dem Typ DateTime und der Wert von Calendar1.SelectedDate existiert auch.

Was mache ich da falsch?
Kanne es deswegen sein weil ich in der Datenbank 02.02.2003 stehen hab und Calendar1.SelectedDate 02.02.2003 00:00:00 wiedergibt?
 
Zuletzt bearbeitet:
string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = date";

date wird nicht als Variable interpretiert sondern als normales wort da es innerhalb des Strings deklariert ist.
Sprich es wird wirklich

SELECT Event FROM Calendar WHERE Date =date

zur Datenbank geschickt.
anstatt den Wert von date anzuhängen.

Wenn date ein numerischer Wert ist:
Änder es in:
string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = "+date;

Wenn date eine Zeichenkette ist:
string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = '"+date+"'";
 
Re: SELECT .. WHERE

Original geschrieben von e.motion
Meine Seite:
Code:
string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = date";

versuchs so...

Code:
string mySelectQuery = "SELECT Event FROM Calendar WHERE Date = '" + date + "' ";

du übergibst sonst einfach einen string der date heisst, anstelle eines datums!

greetings para

Da war jetzt wohl einer schneller :eek:
 
Zuletzt bearbeitet:
Ja aber Calendar1.SelectedDate ist ja eine Variable von dem Typ DateTime ich hab gehört den muss man noch anders eingeben. Hab aber nirgends gefunden wie richtig weiß das jmd?
Ich benutze eine Access Datenbank ich hab gehört bei der DateTime Varibale gibts da auch unterschiede wie man sie eingibt je nachdem was man für eine Db benutzt.
 
Zuletzt bearbeitet:
Ahh! Nách langem suchen hab ich nun den Syntax der Daumeingabe gefunden : #Month/Day/Jear#

nun ein Problem von meiem Calendar bekomm ich den Wert 04.02.2003
zurückgeliefert wie wandle ich den jetzt in 02/04/2003 um?
 
ahh habs jetzt geschafft
Code:
        string day = Calendar1.SelectedDate.ToShortDateString();
        char splitchar = '.';
        int i = 0;
        string[] splitarray = new string[3]; 
        foreach (string revsub in day.Split(splitchar))
        {   
            splitarray[i] = revsub;
            i++;
        }
        day = splitarray[1] + "/" + splitarray[0] + "/" + splitarray[2];
        
                
        
        string mySelectQuery = "SELECT Event FROM Calendar WHERE Day = #" + day + "#";

Danke nochmal an alle!
 
Auch ein Replace währe falsch.

Such nach einer Klasse die DatumFormat / DatumFormatter oder auch TextFormatter heisst.
Wie die genau heisst solltest du im MSDN nachschlagen
 
Zurück