Avatar billede brian-johansen Nybegynder
14. maj 2005 - 12:25 Der er 10 kommentarer og
1 løsning

ASP kalender

Hej,

Jeg er ved at lave en kalender men jeg kan ikke få helt til at virke.

Jeg har lavet det sådan at den henter de forskellige datoer fra en accesdatabase.
Problemet er bare at når jeg trykker på en dato så skriver den bare at der ikke er nogen aftaler den dag, selvom den har fundet dem i databasen.

void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        string date = Calendar1.SelectedDate.ToShortDateString();
        string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Websites\\website6\\data\\kalender.mdb";
        string strSQL = "SELECT * FROM events";
        OleDbConnection myConn = new OleDbConnection(strDSN);
        OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn);
        myConn.Open();
        myCmd = new OleDbDataAdapter("Select * from events where dato=" + date + "", myConn);
        dsSelDate = new DataSet();
        myCmd.Fill(dsSelDate,"Events");
        if (dsSelDate.Tables[0].Rows.Count == 0)
            {
                GridView1.Visible = false;
                Label1.Text = "ingen aftaler idag";
            }
            else
{
                GridView1.Visible = true;
                GridView1.DataSource = dsSelDate;
                GridView1.DataBind();
            }
            myConn.Close();
        }
   




Er der  nogen der har nogle ider om hvad der går galt?
Avatar billede snepnet Nybegynder
14. maj 2005 - 12:29 #1
jeg kan ikke rigtig se hvordan den skulle skrive "ingen aftaler idag", med mindre du ikke har nogen rækker i tabellen.... hvordan konstaterer du at du rent faktisk har fået noget op fra basen ?

prøv at putte ' omkring din dato :
myCmd = new OleDbDataAdapter("Select * from events where dato='" + date + "'", myConn);

mvh
Avatar billede brian-johansen Nybegynder
14. maj 2005 - 12:34 #2
Jeg bruger en dayrender længere oppe
den lyder sådan
void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Websites\\website6\\data\\kalender.mdb";
        string strSQL = "SELECT * FROM events";
        OleDbConnection myConn = new OleDbConnection(strDSN);
        OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn);
        myConn.Open();
        myCmd.Fill(ds, "events");
        // If the month is CurrentMonth
        if (!e.Day.IsOtherMonth)
        {
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                if ((dr["dato"].ToString() != DBNull.Value.ToString()))
                {
                    DateTime dtEvent = (DateTime)dr["dato"];
                    if (dtEvent.Equals(e.Day.Date))
{
                        e.Cell.BackColor = System.Drawing.Color.DarkOrange;
                    }
                }
                else
                {
                    e.Cell.Text = "";
                }

            }
        }
        myConn.Close();
    }
Avatar billede brian-johansen Nybegynder
14. maj 2005 - 12:34 #3
og der kan jeg se at de forskellige datoer er makeret
Avatar billede brian-johansen Nybegynder
14. maj 2005 - 12:37 #4
Det virker ikke, jeg får en "Data type mis in criteria expression"
Jeg tror det er fordi det ene er til en sql database og det andet er til en oledb database, det i hvertfald sådan jeg har forstået det sådan rundt omkring på nettet :)
Avatar billede snepnet Nybegynder
14. maj 2005 - 12:46 #5
i den ene henter du alle datoer, og i den anden udvælger du på den specifikke dato - og du får tilsyneladende sendt en forespørgsel ned der ikke returnerer dig noget (ellers ville antallet af rækker ikke være 0).
der er noget galt med din anden sql - prøv at skriv den ud, og fyr den direkte af mod basen.

jeg er ikke sikker på hvad du mener med forskellen på den ene og den andend database... så vidt jeg kan se går begge dine forespørgsler til en access-database du har liggende.

mvh
Avatar billede brian-johansen Nybegynder
14. maj 2005 - 12:48 #6
ok... hvad mener du med at  prøv at skriv den ud, og fyr den direkte af mod basen ?
Avatar billede snepnet Nybegynder
14. maj 2005 - 12:53 #7
at du tager denne :

myCmd = new OleDbDataAdapter("Select * from events where dato=" + date + "", myConn);

og gør sådan her istedet :

string sql = "Select * from events where dato=" + date;
Response.Write(sq);
myCmd = new OleDbDataAdapter(sql, myConn);

så får du øverst på siden din forespørgsel ud, og så åbner du bare access, og skriver samme forespørgsel ind... så kan du se om du får noget tilbage - og rette til hvis det ikke er tilfældet.
når du har fundet det rigtige format, sørger du får at overholdet det i koden.

mvh
Avatar billede brian-johansen Nybegynder
14. maj 2005 - 13:03 #8
Jeg får ingen data tilbage når jeg skriver sådan i acces, men mange tak for hjælpen
Avatar billede snepnet Nybegynder
14. maj 2005 - 13:15 #9
nej det var lidt det der var pointen .... forespørgslen er ikke ok, og derfor får du ikke noget tilbage.

jeg tror du skal pakke datoen ind i havelåger :

string sql = "Select * from events where dato=#" + date + "#";
myCmd = new OleDbDataAdapter(sql, myConn);

mvh
Avatar billede brian-johansen Nybegynder
14. maj 2005 - 13:21 #10
YES SIR... det virker bare mange tak for hjælpen!!!!
Hvad gør de der # - tegn ?


Lægger du lige et svar
Avatar billede snepnet Nybegynder
14. maj 2005 - 13:31 #11
det var så lidt :o)
# lader til at sikre at det bliver tolket som et datokriterie.
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester