+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [ASP.Net]Errore Componente Calendar

  1. #1
    sanfra non è in linea Scolaretto
    Post
    373

    [ASP.Net]Errore Componente Calendar

    Salve, sto facendo un progetto dove in una pagina ho inserito due calendari(Calendar) dove un calendario inserisce la data di inizio della ricerca e l'altro calendario inserisce la data finale nell'altra textbox.


    Io faccio una query dove bisogna stabilire i dati che sono compresi tra una data el'altra,però quando vado a digitare una data di un mese e l'altra data dell'altro mese(cioè a cavallo )non funziona mi daà tutti i record!

    La query è perfetta:

    potete darmi una mano a capire.

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...ma detta così non sembra assolutamente un errore del componente...il calendar ti dà la possibilità di lavorare con le date, ma se quando esegui lo statement ti ritornano tutti i record c'è qualcos'altro....son abbastanza sicuro che si tratti di un problema di query no di controlli asp.net
    ...come fai a sapere che la query è perfetta?
    ...che db usi?

  3. #3
    sanfra non è in linea Scolaretto
    Post
    373
    Sto usando Access 2003, dico che sono sicuro solo perchè ho fatto la stessa query su access e mi ritorna il risultato.

    cmq questo è il codice dimmi se per te a qualche errore:

    codice:
     protected void Calendar2_SelectionChanged1(object sender, EventArgs e)
        {
    
            mydate = Calendar2.SelectedDate.Day.ToString() + "/" + Calendar2.SelectedDate.Month.ToString() + "/" + Calendar2.SelectedDate.Year.ToString();
                TextBox1.Text = mydate;
           
           
        }
    
        protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
        {
    
    
            mydate1 = Calendar1.SelectedDate.Day.ToString() + "/" + Calendar1.SelectedDate.Month.ToString() + "/" + Calendar1.SelectedDate.Year.ToString();
            TextBox2.Text = mydate1;
           
        }
    
    
        protected void Button1_Click1(object sender, EventArgs e)
        {
            int ris;
    
            DateTime data = new DateTime();
            DateTime data1 = new DateTime();
            data = DateTime.Parse(TextBox1.Text.Trim());
            data1 = DateTime.Parse(TextBox2.Text.Trim());
            ris = data.CompareTo(DateTime.Parse(TextBox2.Text.Trim()));
            if (ris < 0)
            {
                Response.Write("Spiacente,ma la data non è corretta.Ritenta");
                TextBox1.Text = "";
                TextBox2.Text = "";
    
    
    
    
            }
            else
            {
    
                GridView1.Visible = true;
                Connection = new System.Data.OleDb.OleDbConnection();
                Connection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\DataEntry\\App_Data\\DataEntry1.mdb");
    
    
                dataset = new DataSet("Operazioni");
    
    
                Connection.Open();
                odb1 = new System.Data.OleDb.OleDbDataAdapter();
    
    
                test = "select * from Operazioni WHERE Data BETWEEN " + "#" + data1 + "# AND " + "#" + data + "#";
                Command = new System.Data.OleDb.OleDbCommand(test, Connection);
                odb1.SelectCommand = Command;
                System.Data.OleDb.OleDbDataReader myReader = Command.ExecuteReader();
                myReader.Close();
    
    
                dataset = new DataSet("Operazioni");
    
    
                odb1.TableMappings.Add("Table", "Operazioni");
                odb1.Fill(dataset);
    
    
                GridView1.DataSource = dataset;
                GridView1.DataBind();
    
            }

  4. #4
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...così dando un'occhiata veloce ci sono diversi punti che puoi migliorare:
    per esempio nell'evento change del calendar basta fare qualcosa del genere:
    Datetime dateStart = Calendar1.SelectedDate
    per ottenere la data completa
    ...se poi vuoi mostrare in una textBox la data formatta in una certa maniera puoi fare così:
    txtDate.Text = dateStart.ToString("dd/MM/yyyy");
    in questo modo ottieni la data nella forma giorno/mese/anno(su msdn trovi altre info sulla formattazione delle date)...
    ...poi se i campi sul db access sono di tipo date non puoi eseguire una query del genere:
    SELECT *
    FROM tabella
    WHERE (Data >= data1) AND (Data <= date2)
    in questo modo ottieni il range di giorni compresi fra date2 e date1
    ...altro consiglio quando accedi al db metti sempre in un blocco try catch finally in modo tale da poter intercettare l'errore, loggarlo eventualemente e nel finally chiudere la connessione o fare la dispose di oggetti da "eliminare".

  5. #5
    sanfra non è in linea Scolaretto
    Post
    373
    Allora guarda com inserisco la query e mi da errore
    select * from Operazioni WHERE Operazioni.Data >= " + data1 + " AND Operazioni.Data <= " + data +"";


    L'errore che mi da è questo:

    Errore di sintassi (operatore mancante) nell'espressione della query 'Operazioni.Data >= 31/07/2007 0.00.00 AND Operazioni.Data <= 04/08/2007 0.00.00'.

  6. #6
    sanfra non è in linea Scolaretto
    Post
    373
    dimenticavo di dirti, visto che non avevo fatto la prova prima, che neppure cambaindo mese a tutte e due i calendari(agosto) e mettendo le data dello stesso mese non mi funziona.

    Ti giuro che non riesco a comprendere come mai!

  7. #7
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...purtroppo non ho access installato...
    ...ad occhio però la query da passare dovrebbe essere costruita così(poi non sò):
    select * from Operazioni WHERE Operazioni.Data >= '" + data1 + "' AND Operazioni.Data <= '" + data + "'";
    ....altro consiglio non costruire la query in questo modo usa gli oledbParameter:
    Classe OleDbParameter (System.Data.OleDb)

  8. #8
    sanfra non è in linea Scolaretto
    Post
    373
    OK risoltom anche questo, grazie ancora purtroppo i miei problemi non sono finiti qui.tra un po apriro' una nuova discussione.

    Mi auguro che mi aiuterai!

  9. #9
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...alla fine qual'era il problema...la costruzione della query?

  10. #10
    sanfra non è in linea Scolaretto
    Post
    373
    SI, il problema era la query

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi