Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Data non funzionante

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162

    Data non funzionante

    Salve ho un problema ma veramente serio per quanto riguarda un progetto ed è un mese circa che non riesco a risolverlo,mi auguro che qualcuno di Voi mi possa aiutare!

    Allora questo progetto consiste nell'inserire in un database(access 2000) dei nominativi tra cui c'è una data che viene già mostrata all'utente senza che la possa modificare e il formato è gg/mm/aaaa,il formato italiano.

    e questo è il codice:
    codice:
     Data.Text = DateTime.Today.Day.ToString()  + "/" + DateTime.Today.Month.ToString()   + "/" + DateTime.Today.Year.ToString();
    e fin qui tutto a posto inserisce tutto.
    adesso c'è un altra facciata che riguarda la ricerca per data dove ho messo due calendari e due textbox, uno per la data iniziale e l'altro per la datafinale, e qui che arriva il problema

    quando inserisco il programma sul server mi chiede il formato data(MM/dd/anno) e sarebbe il formato inglese.

    e questo è il codice della ricerca:

    codice:
    protected void Calendar2_SelectionChanged1(object sender, EventArgs e)
        {
    
        DateTime mydate = Calendar2.SelectedDate;
                TextBox2.Text = mydate.ToString("MM/dd/yyyy");
           
           
        }
    
        protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
        {
    
    
           DateTime mydate1 = Calendar1.SelectedDate;
           TextBox1.Text = mydate1.ToString("MM/dd/yyyy");
           
        }
    
    
        protected void Button1_Click1(object sender, EventArgs e)
        {
        
        
            string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + percorso;
            int ris;
             IFormatProvider culture =new System.Globalization.CultureInfo("it-IT",true);
            if (TextBox1.Text != "" && TextBox2.Text != "")
            {
                DateTime data = new DateTime();
               DateTime data1 = new DateTime();
               //data=DateTime.ParseExact(TextBox1.Text,"MM/dd/yyyy",culture);
               //data1=DateTime.ParseExact(TextBox2.Text,"MM/dd/yyyy",culture);
               data = DateTime.Parse(TextBox1.Text.Trim());
               data1 = DateTime.Parse(TextBox2.Text.Trim());
    
    
                ris = data1.CompareTo(data);
                if (ris < 0)
                {
                    Errore.Text="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(conn);
    
    
                    dataset = new DataSet("Operazioni");
                    try
                    {
    
                        Connection.Open();
                        odb1 = new System.Data.OleDb.OleDbDataAdapter();
    
    
                        test = "select * from Operazioni WHERE Operazioni.Data BETWEEN #" + data1 + "# AND #" + data + "# order by id_op" ;
                        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();
                    }
                    catch (OledBConnection  er)
                    {
                        Response.Write(er.Message);
    
                    }
                    finally
                    {
                        Connection.Close();
                       
    
    
                    }
    
    
                }
            }
            else
            {
    
                Errore.Text("I Campi Delle Date sono Obbligatori");
    
            }
    Connection.Close();
        }
    L'errore che mi dà è questo mi dice che la stringa non è un formato valido per DateTime.
    Qualcuno mi può aiutare?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova a sostituire con:

    test = "select * from Operazioni WHERE Operazioni.Data BETWEEN #" + data1.ToString("M\\/d\\/yyyy") + "# AND #" + data.ToString("M\\/d\\/yyyy") + "# order by id_op";

    questo perchè Access si aspetta la data nel formato a/m/g o m/g/a


    ps. usando visualstudio per fare le prove ho trovato però una miniera molto ricca di errori :master:
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Io non so come ringraziarti del tuo prezioso aiuto!E' incredibile..
    Mi spieghi cosa significano quei "gerolifici"?
    Cioè sono 6 anni ormai che programmo a pieno ritmo e non mi sono mai trovato in una situazione così banale!

    Cmq Grazie e Grazie ancora mi hai salvato!

    ps che vuol dire:

    usando visualstudio per fare le prove ho trovato però una miniera molto ricca di errori

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sanfra1976
    Io non so come ringraziarti del tuo prezioso aiuto!E' incredibile..
    Mi spieghi cosa significano quei "gerolifici"?
    Cioè sono 6 anni ormai che programmo a pieno ritmo e non mi sono mai trovato in una situazione così banale!

    Cmq Grazie e Grazie ancora mi hai salvato!

    ps che vuol dire:
    allora spiego meglio.
    Come funzionano le query in Access? E' semplice. Basta scriverne una e vedere l'sql prodotto. Le data sono sempre nel formato americano #mese/giorno/anno# perciò bisogna assecondarlo.
    Perciò, nel comporre la stringa, non si concatena il tipo DateTime, ma la sua rappresentazione stringa, nel formato americano

    *** + data.ToString("M/d/yyyy") + ***

    Però..., i caratteri di formattazione / e : sono particolarmente elusivi poichè vengono sostituiti dal separatore data/ora predefiniti per la nazionalità corrente. Per essere certi che venga utilizzato il separatore che vogliamo, bisogna usare il carattere di escape backslash:

    *** + data.ToString("M\/d\/yyyy") + ***


    e poichè siamo in c# il carattere \ si mette come \\

    *** + data.ToString("M\\/d\\/yyyy") + ***



    Per la seconda domanda, il tuo codice l'ho provato costruendomi una pagina con visualstudio2005 (già cancellata da un pezzo ) e ripeto, per farla andare ho dovuto sistemare molte cose.
    Pietro

  5. #5
    grande pietro!
    ottima spiegazione

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Grazie per la tua delucidazione e del tuo prezioso aiuto, però tutto questo mi sembra che accada solo con access, in effetti lavorando con Mysql e/o con Interbase non mi è mai capitato!
    Inoltre, voglio far presente che questo progetto è stato anche realizzato con PHP/MYQL e Ajax e ha funzionato subito in modo perfetyto(a causa di forza maggiore non è stato possibile installarlo in PHP).

    Volevo aggiungere che il pezzo di programma che ho mostrato in questo contesto non è quello definitivo, infatti il programma vero e prorpio è costruito su classi e librerie e con una fluidità di codice molto più interessante.Infatti aggiungo il programma era già operativo da una settimana dove l'azienda che lo sta usando ci lavora in rete con 5 persone che diventeranno 10 tra una settimana, e non ha mai avuto nessun tipo di problema tranne questo inconveviente!

    Grazie ancora del tuo prezioso e indispensabile aiuto!

    Alla prossima

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sanfra1976
    Grazie per la tua delucidazione e del tuo prezioso aiuto, però tutto questo mi sembra che accada solo con access, in effetti lavorando con Mysql e/o con Interbase non mi è mai capitato!
    Inoltre, voglio far presente che questo progetto è stato anche realizzato con PHP/MYQL e Ajax e ha funzionato subito in modo perfetyto(a causa di forza maggiore non è stato possibile installarlo in PHP).

    Volevo aggiungere che il pezzo di programma che ho mostrato in questo contesto non è quello definitivo, infatti il programma vero e prorpio è costruito su classi e librerie e con una fluidità di codice molto più interessante.Infatti aggiungo il programma era già operativo da una settimana dove l'azienda che lo sta usando ci lavora in rete con 5 persone che diventeranno 10 tra una settimana, e non ha mai avuto nessun tipo di problema tranne questo inconveviente!

    Grazie ancora del tuo prezioso e indispensabile aiuto!

    Alla prossima
    Gentilissimo amico, qui non si parla nè di Mysql, nè di Oracle, ma di Access. Inoltre non si parla di altro codice se non di quello qui presentato ed è su di quello che si discute. E naturalmente non si parla di PHP e ajax. Il problema è che ACCESS vuole nell'sql, le date o in formato americano o, mi dicono, nel formato anno/mese/giorno.
    Salute,
    Pietro

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    si certo hai perfettamente ragione, volevo dire che non ero proprio a conoscenza del fatto che access voleva la data nel formato americano o anno/mese/giorno, l'ho usato pochissimo se non per niente! e inoltre che il programma da mostrare era un pò troppo lungo da mettere tutto qui e quindi ho pensato(forse male) di mostrare solo uno schizzo di quello che avevo fatto per capire se l'errore era altrove!

    psosso chiederti che tipo di errori hai riscontrato in quel pezzo di codice che ho mostrato?


    Grazie ancora per la tua disponibilità!

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sanfra1976
    si certo hai perfettamente ragione, volevo dire che non ero proprio a conoscenza del fatto che access voleva la data nel formato americano o anno/mese/giorno, l'ho usato pochissimo se non per niente! e inoltre che il programma da mostrare era un pò troppo lungo da mettere tutto qui e quindi ho pensato(forse male) di mostrare solo uno schizzo di quello che avevo fatto per capire se l'errore era altrove!

    psosso chiederti che tipo di errori hai riscontrato in quel pezzo di codice che ho mostrato?


    Grazie ancora per la tua disponibilità!
    Come ho già detto, credo di averla già distrutta :master: ma, andando a memoria, credo che dipendessero dal fatto che il codice era parziale. Ad esempio, alcune variabili non erano dichiarate, forse perchè erano dichiarate altrove, tutto qui

    ps. non ho mai detto che ne sono usciti mostricciattoli appena lanciata la pagina
    Ciao e Buone Vacanze o Buone Ferie
    Pietro

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    GRazie ancora per il tuo aiuto e anche a te buone vacanze!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.