Autore Topic: Gestire formato data  (Letto 1376 volte)

Offline giuseppe249

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
    • http://www.gambas-it.org
Gestire formato data
« il: 15 Febbraio 2009, 21:49:49 »
Salve a tutti, sto un pò impazzendo sulla gestione del formato data.
Faccio l'inserimento della data da una valuebox settata con type = data
che mi fa inserire con il formato dd/mm/yyyy
apro sqlite browser per controllare e la data viene invertita con il formato yyyy-mm-dd
quindi lo stesso problema di visualizzazione me lo da anche nel gridview e nei datacontrol.
Mi dite come far combaciare il tutto?


Risolto questo problema, se per cortesia mi dite anche come eseguire una query nel suddetto campo data tra un intervallo di date.

Vi ringrazio per la Vostra collaborazione.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Gestire formato data
« Risposta #1 il: 16 Febbraio 2009, 00:20:10 »
Per evitare di avere problemi di conversione da Gambas al DB, salvo la data in campi stringa così che il driver del DB non me la mi trasformi da un formato ad un altro; poi rileggo il dato e lo ritrasformo in tipo Date con CDate().
Visita il mio sito personale: http://www.leonardomiliani.com

Offline giuseppe249

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
    • http://www.gambas-it.org
Re: Gestire formato data
« Risposta #2 il: 22 Febbraio 2009, 14:07:08 »
Ho provato in questo modo ma non penso sia la sintassi corretta perchè mi da errore, dove sbaglio?

DIM miadata AS String
 
 miadata = CDate("%d/%m/%Y", pippo4) AS date
 miadata = ValueBox1.value
 rarticoli!pippo1 = datacontrol2.Value
 rarticoli!pippo2 = datacontrol3.Value
 rarticoli!pippo3 = datacontrol4.Value
 rarticoli!pippo4 = miadata

Aiuti?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Gestire formato data
« Risposta #3 il: 22 Febbraio 2009, 16:00:59 »
Secondo me dovresti fare diversamente. Per il salvataggio su DB
Codice: [Seleziona]

rarticoli!pippo1 = valuebox1.value

Per la lettura:
Codice: [Seleziona]

valudebox1.value = cdate(rarticoli!pippo1)


Non intervenendo tu ma facendo fare le conversioni del caso direttamente al valuebox.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline giuseppe249

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
    • http://www.gambas-it.org
Re: Gestire formato data
« Risposta #4 il: 22 Febbraio 2009, 18:51:04 »
Ok per la valuebox in visualizzazione
Ho applicato lo stesso metodo sulla gridview in visualizzazione, ma non va mi inverte sempre prima il mese e poi il giorno

Codice: [Seleziona]
 GridView1[i, 0].Text = hres!id  
       GridView1[i, 1].Text = hres!pippo1
       GridView1[i, 2].Text = hres!pippo2
       GridView1[i, 3].Text = hres!pippo3
       GridView1[i, 4].text = CDate(hres!pippo4)



E riguardo alla query su questo campo data come devo inserire la data di ricerca in che formato?

Inoltre dovrei effettuare una query di un intervallo di date nel suddetto campo
ho provato questa sintasssi ma non va

SELECT * FROM TuaTabella WHERE TuoCampoData BETWEEN DataInizio AND DataFine

Grazie per i suggerimenti.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestire formato data
« Risposta #5 il: 22 Febbraio 2009, 23:52:19 »
Il mio è solo un suggerimento ma non è che la questione della data con i valori invertiti è impostata così proprio per tutto il sistema e quindi gambas la interpreta così?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Gestire formato data
« Risposta #6 il: 23 Febbraio 2009, 00:12:05 »
1)
prova con
Codice: [Seleziona]

gridview1[i,1] = cdate(hres!pippo1)

Fagli fare, cioè, la conversione a Gambas così che si sistemi la data lui stesso.

2)
Se devi fare anche delle query allora non so se il trucco dell'uso del campo text al posto di quello di tipo date ti può aiutare. Partendo cmq dal presupposto che la data la salvi sempre in un determinato formato, si potrebbe ipotizzare di poter fare semplici confronti tra stringhe, dove 02-02-2009 è minore di 03-02-2009, per esempio. Quindi
Codice: [Seleziona]

Result = Connection.Exec("SELECT >>campi<< FROM >>tabella<< WHERE >>campodata<< >= &1 AND >>campodata<< <= &2 ORDER BY >>campoordinamento<<", Data1, Data2)

(Ovviamente va riportato in codice SQL valido sostituendo i dati che ti servono.

3)
Io between non lo uso. Uso la sintassi su esposta.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Gestire formato data
« Risposta #7 il: 23 Febbraio 2009, 11:04:35 »
Un'idea, che ho sepre applicato nei mie programmi, a prescidere dal linguaggio; tieni conto che ogni database ha le sue regole e impostazioni e, quindi, per evitare problemi, la cosa migliore è quella di convertire le date direttamente nella stringa della query, come ad esempio:

Codice: [Seleziona]

sql = "select * from tabella where data = '" & format("yyyy-mm-dd",Now()) & "'"


ovvero, convertire il tutto nel formato stringa standard come se lo aspetta il database (che di solito è USA).

Nella fase di lettura, fare altrettanto, convertendo la data nel formato che si desidera mostrare a video.

Riguardo a sqlite, come ho ripetutamente scritto, le tipologie di dato che gestisce sono solo "1", ovvero stringa; il fatto che poi il driver le interpreti in modo distinto non è molto significativo e, inoltre, potrebbe essere causa di guai. A seguito di questo, l'idea di leo è sicuramente la più valida.

Offline giuseppe249

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
    • http://www.gambas-it.org
Re: Gestire formato data
« Risposta #8 il: 24 Febbraio 2009, 16:26:52 »
Funziona tutto ok, con inserimento e visualizzazione tramite datacontrol e non valuebox e salvataggio dati su campo stringa di sqlite. La query di Leo funziona perfettamente.

Un ringraziamento particolare a Leo per la sua pazienza ed anche a tutti gli altri del forum.

Alla prossima, saluti Giuseppe