Autore Topic: [RISOLTO] problema con query in sqlite  (Letto 2090 volte)

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
[RISOLTO] problema con query in sqlite
« il: 02 Aprile 2013, 17:18:13 »
Ciao ragazzi, mi scuso se ultimamente frequento poco il forum ma il lavoro mi lascia poco tempo (oserei dire per fortuna visti i tempi che corrono). Mi trovo con un problema che non riesco a risolvere. Già da tempo uso un software gestionale da me creato in gambas. Su di un pc lo sto usando da tempo senza problemi, ma su un portatile acquistato da poco il gestionale parte mi mostra le schermate ma non carica i dati di alcune tabelle. Sono andato ad eseguire il codice passo passo ripoto di seguito una parte di codice:
Codice: [Seleziona]
sql = "SELECT*FROM data_day WHERE data LIKE '" & Format$(MiaData.Value, "yyyy-mm-dd 00:00:00") & "';" 
  Print sql
  Risultato = Conn.Exec(sql)
  
  If Risultato.Available Then

Risultato.Available mi risulta FALSE quando dovrebbe essere TRUE
infatti se copio da terminale print sql e lo incollo in SQLITEMAN la query funziona e mi restituisce un risultato esatto.

In altre parti del gestionale eseguo altre query sulla stessa connessione e il software mi restituisce i dati richiesti in maniera corretta, quindi escluderei problemi di librerie. Una differenza che ho notato tra i due computer è la versione di gb.sqlite3 più recente sul notebook dove il gestionale da problemi, ma escludo dipendi da questo perchè credo non dovrebbe funzionare mai.

Grazie per l'aiuto
« Ultima modifica: 08 Aprile 2013, 19:20:26 da doublemm »
Matteo DoubleMM Mion

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #1 il: 02 Aprile 2013, 19:17:06 »
Hai provato anche Format al posto di Format$?     Non dovrebbe darti differenze ma ... non si sa mai.
 :ciao:
:ciao:

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #2 il: 02 Aprile 2013, 19:26:34 »
Ho provato ma non cambia nulla
Matteo DoubleMM Mion

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #3 il: 03 Aprile 2013, 00:11:39 »
la formula prevista per il formato data, riportata nella documentazione di Gambas3, è scritta così:
Citazione
PRINT Format$(Now, "yyyy-mm-dd hh-nn-ss)
e non "yyyy-mm-dd 00:00:00"
 :ciao:
:ciao:

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #4 il: 03 Aprile 2013, 07:43:29 »
Comunque non funziona. Se uso il formato che dici tu non funziona nemmeno con sqliteman infatti sul database le date sono archiviate così:
2013-04-03 07:43:00
Matteo DoubleMM Mion

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #5 il: 03 Aprile 2013, 12:08:01 »
Temo di non poterti aiutare più di tanto, perchè io uso le date solamente nel formato stringa senza l'indicazione dell'orario ("AAAmmGG"), allo scopo di lasciarle leggibili anche con Sqliteman, ma cercando comunque di contenere l'impegno di spazio su disco. Non ho perciò la tua casistica.

Se già il tuo software funziona bene in pc desktop con Gambas3 installato, allora il programma non dovrebbe avere nessuna responsabilità. La versione di Gambas installata sul notebook è la stessa di quella installata sul pc Desktop?
 :ciao:
:ciao:

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #6 il: 04 Aprile 2013, 19:49:07 »
sul dove on funziona ho la 3.4.1 sull'altro pc 3.4.0. La cosa strana è che su un altro pezzo di programma c'è una query simile sulla stessa tabella e funziona ?!?
Matteo DoubleMM Mion

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #7 il: 04 Aprile 2013, 20:58:09 »
altro pc sempre con 3.4.1 stesso problema è cambiato qualcosa sulla sintassi delle query?
Matteo DoubleMM Mion

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #8 il: 05 Aprile 2013, 00:17:13 »
altro pc sempre con 3.4.1 stesso problema è cambiato qualcosa sulla sintassi delle query?
Io dispongo della verione 3.4.0 che ha sostituito purtroppo la precedente a seguito di un aggiornamento automatico di software in fedora. Non so pertanto se è cambiato qualcosa nella 3.4.1. Tutte le mie vecchie query continuano a funzionare benissimo anche con la 3.4.0. Non disponendo di pc notebook non posso dirti altro.

Consideriamo però una cosa: se le altre query funzionano occorrerebbe capire, secondo me,  perchè la stringa formattata  non permette l'accoppiamento coi record corrispondenti del DB.
Prova a fare il print di Format$(MiaData.Value, "yyyy-mm-dd 00:00:00") subito prima della query, in modo da renderti conto del suo effettivo contenuto dopo averlo formattato.
:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #9 il: 05 Aprile 2013, 12:58:29 »
Prova a togliere 00:00:00 dalla stringa di formattazione

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #10 il: 05 Aprile 2013, 20:13:31 »
Ciao, non so se sia necessario, ma credo tu debba aggiungere il carattere % all'inizio e alla fine della stringa che intendi cercare con il LIKE.
prova quindi con questa sintassi:
sql = "SELECT * FROM data_day WHERE data LIKE '%" & Format$(MiaData.Value, "yyyy-mm-dd 00:00:00") & "%';"
  Print sql
  Risultato = Conn.Exec(sql)
 
  If Risultato.Available Then

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #11 il: 08 Aprile 2013, 15:06:57 »
Ho provato tutte le vostre soluzioni ma non cambia nulla. La cosa strana è che sullo stesso programma un po di linee più avanti c'è una query simile sulla stessa tabella e funziona

Codice: [Seleziona]
For i = 0 To 30
    DescrizioneY.Add(i)
    LineData = Date(Now) - i
    Sql = "SELECT " & Periodo & " as 'importo' FROM data_day WHERE data = '" & Format$(LineData, "yyyy-mm-dd 00:00:00") & "';"
    Risultato1 = Conn.Exec(Sql)
    If Risultato1.Available Then
      LineDati.Add(Risultato1!importo)
    Endif
  Next

il print della variabile sql copiato e incollato in un programma esterno di gestore dei db sqlite funziona e restituisce un risultato valido. non capisco perchè la non debba funzionare. Ho provato anche a sostituire a format....... un risultato fisso tipo 2013-03-16 00:00:00 ma non cambia nulla il risultato è sempre false.

@Picavbg il print mi restituisce
2013-03-24 00:00:00
SELECT*FROM data_day WHERE data = '2013-03-24 00:00:00';

ho provato anche a sostituire = con < in modo da allargare il campo ma non trova nulla
Matteo DoubleMM Mion

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #12 il: 08 Aprile 2013, 15:29:47 »
Scusa la domanda banale:
Prima della query hai eseguito la Open del DB?
 :ciao:
:ciao:

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #13 il: 08 Aprile 2013, 15:31:28 »
si ho controllato anche con un print comunque mi avrebbe dato errore in risultato = conn.exec se non fosse aperta
Matteo DoubleMM Mion

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: problema con query in sqlite
« Risposta #14 il: 08 Aprile 2013, 15:35:47 »
ho fatto un'altra prova, ho messo sql="SELECT*FROM data_day;" e Risult1.Available è sempre false. Deduco che l'attenzione non debba nadare sulla composizione di sql o sul Format$...... ma deve esserci qualche altro problema di connessione al database o sulla variabile result

Matteo DoubleMM Mion