Autore Topic: SQL di ricerca record fra due date  (Letto 1529 volte)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
SQL di ricerca record fra due date
« il: 03 Ottobre 2010, 11:16:27 »
-le date di riferimento le prendo da due textbox aventi il formato 2010-10-01 00:00:00, cosi' come viene memorizzato nel database (campo data)
-l'sql di ricerca è del tipo
Codice: [Seleziona]
mysql = "select * from tbNutrition where GMA between '2010-10-01 00:00:00' and '2010-10-05 00:00:00'"
e funziona benissimo


sara' il 'rincoglionimento' ma non riesco a mandare i parametri alla stringa di ricerca:

questa non funziona:
Codice: [Seleziona]
myset = myconn.Exec("select * from tbNutrition where GMA between &1 and &2", current_data1.text, current_data2.text)

e nemmeno questa:
Codice: [Seleziona]
myset = myconn.Exec("select * from tbNutrition where GMA between '" & cdate(val(textbox1.text)) & "' and '" & cdate(val(textbox2.text)) & "'"
« Ultima modifica: 03 Ottobre 2010, 11:18:40 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: SQL di ricerca record fra due date
« Risposta #1 il: 03 Ottobre 2010, 12:02:41 »
se la data ha già il formato giusto devi aggiungere solamente gli apici alla tua query:

Codice: [Seleziona]
myset = myconn.Exec("select * from tbNutrition where GMA between '&1' and '&2'", current_data1.text, current_data2.text)


Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: SQL di ricerca record fra due date
« Risposta #2 il: 03 Ottobre 2010, 14:22:35 »
funziona:

Codice: [Seleziona]
'"select * from tbNutrition where GMA between '2010-10-01 00:00:00' and '2010-10-05 00:00:00'"
 
non funziona e sinceramente non capisco:
 
Codice: [Seleziona]
'"select * from tbNutrition where GMA between '" & current_data1.text & "' and '" & current_data1.text & "'"

current_data1.text è
Codice: [Seleziona]
2010-10-04 00:00:00
mentre l'altro è
Codice: [Seleziona]
2010-10-10 00:00:00
la data del db è
Codice: [Seleziona]
2010-10-07 00:00:00
« Ultima modifica: 03 Ottobre 2010, 14:26:00 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: SQL di ricerca record fra due date
« Risposta #3 il: 03 Ottobre 2010, 15:01:12 »
guarda che fai riferimento alle due date con lo stesso oggetto: current_data1.text   :)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: SQL di ricerca record fra due date
« Risposta #4 il: 03 Ottobre 2010, 16:55:52 »
guarda che fai riferimento alle due date con lo stesso oggetto: current_data1.text   :)

nel codice è giusta la data

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: SQL di ricerca record fra due date
« Risposta #5 il: 03 Ottobre 2010, 17:01:57 »
Io, se posso, ti do un consiglio: quando una query comprende concatenazioni di varie stringhe, come nel tuo caso, e non mi funzionano, subito dopo la creazione di questa query, do un bel Print <query>, dove <query> e' la stringa che la contiene, e ne esamino gli errori nella consolle di Gambas....

Se anche tu fai in questo modo, potresti postarmi il risultato e vediamo che si puo' fare ;)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: SQL di ricerca record fra due date
« Risposta #6 il: 03 Ottobre 2010, 17:04:36 »
Io, se posso, ti do un consiglio: quando una query comprende concatenazioni di varie stringhe, come nel tuo caso, e non mi funzionano, subito dopo la creazione di questa query, do un bel Print <query>, dove <query> e' la stringa che la contiene, e ne esamino gli errori nella consolle di Gambas....

Se anche tu fai in questo modo, potresti postarmi il risultato e vediamo che si puo' fare ;)


Bravissimo milio....un ottimo consiglio.   ;)

Molto spesso diamo per scontato che l'errore sia nella logica mentre invece non ci si rende conto che le concatenazioni possono portare a errori banali. Stampare le concatenazioni serve a farti capire come gambas "vede" ciò che gli dici e magari aiuta a trovare errori.

È una cosa che dovrebbe diventare un abitudine...il debug è molto sottovalutato.

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: SQL di ricerca record fra due date
« Risposta #7 il: 03 Ottobre 2010, 17:11:46 »
@milio

ecco il risultato di PRINT:

Codice: [Seleziona]
select * from tbNutrition where GMA between '2010-10-04 00:00:00' and '2010-10-04 00:00:00'

mi cospargo il capo di cenere :-\ :P :ok: :ok: :ok: :ok: :ok:

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: SQL di ricerca record fra due date
« Risposta #8 il: 03 Ottobre 2010, 18:46:45 »
Sai quante ore ho perso io per problemi come questi...   :evil: