Newsgroup: it.comp.lang.visual-basic
Titolo: query sql

Ciao a tutti
devo eseguire le seguente query SQL select * from Contabilità where Data
BetWeen <valore1> and  <valore2>
dove valore 1 e valore 2 sono rispettivamente text1.text e text2.text....il
contenuto di valore 1 e 2 è di tipo date---> ad esempio 30/11/2004,devo
interrogare il database in questa maniera..."visualizzami risultati dal
30/11/2004 al 02/12/2004"--->questo è lo scopo della query...
io ho provato cosi:
Private Sub Search_Date_Click()
  Dim StringaSQL As String
  datPrimaryRS.Recordset.Close
  StringaSQL = "SELECT * FROM Contabilità"
  StringaSQL = StringaSQL + " WHERE Data Between"
  StringaSQL = StringaSQL + " = '" + daDate.Text + "'and "
  StringaSQL = StringaSQL + " = '" + aDate.Text + "'"
  datPrimaryRS.Recordset.Open
End Sub
Potete darmi una mano?ciao grazie

   StringaSQL = "SELECT * FROM Contabilità"
Io farei così....ma in Access
Dim dadata as Date
dim adata as Date
daDate.Text =dadata
aDate.Text =adata
 StringaSQL = "SELECT * FROM Contabilità WHERE Data  >= #" & Format(dadata,
"mm/dd/yyyy") & "#
And Data  <= #" & Format(adata, "mm/dd/yyyy") & "#
datPrimaryRS.RecordSource=StringaSQL
datPrimaryRS.Refresh
--
Gulp
....forse mi sono perso qualcosa !

 ha scritto nel messaggio
news:314hdcF...@individual.net...


 End Sub
Ho idea che tu non abbia assolutamente capito cosa stai facendo.
Nel senso che la quantità di cose messe a caso in questo codice è tale, e
talmente senza senso, che può derivare solo da una sequenza di copia-incolla
di chi non ha studiato un minimo le cose. E' un approccio che non approvo,
ma vediamo se posso aiutarti.
1) che senso ha creare una stringa, se poi non la comunichi in qualche modo
al recordset?
2) La concatenazione di stringhe si fa con l'operatore &
3) La sintassi Access prevede le date in formato #mm/dd/yyyy# (questo te lo
fa vedere il wizard qbe di Access, non serve studiare, basta aver voglia di
provare)
Vediamo di sistemare le cose:
Private Sub Search_Date_Click()
  Dim StringaSQL As String
dim Data_Inizio as Date
dim Data_Fine as Date
Data_Inizio = CDate(daDate.Text)
Data_Fine = CDate(aDate.Text)
  datPrimaryRS.Recordset.Close
  StringaSQL = "SELECT * FROM Contabilità"
  StringaSQL = StringaSQL & " WHERE Data Between"
  StringaSQL = StringaSQL & " #" & format$(Data_Inizio, "mm/dd/yyyy") & "#
and "
  StringaSQL = StringaSQL & " #" & format$(Data_Fine , "mm/dd/yyyy") & "# "
 datPrimaryRs.Recordset.Source=StringaSQL
  datPrimaryRS.Recordset.Open
End Sub
Presta attenzione ai due CDate, che sono il punto dolente del tutto.
Se la data viene scritta dall'utente in un formato incompatibile con le
impostazioni locali del sistema, boom.
Ciao
Alberto
--
E tutto mi sembrava andasse bene...

 ha scritto nel messaggio
news:315eqsF...@individual.net...


 record..datato 26/10/2004...giusto?...ma nn vedo nada :( :(
Prima di voler eseguire la query in VB, devi ovviamente verificare che
questa sia corretta in Access, sia da un punto di vista sintattico che da un
punto di vista logico e informativo.
Quindi, metti un breakpoint prima dell'Open, ti stampi la StringaSql nella
finestra immediata, la copiincolli nella schermata Sql di una query di
Access, e la fai eseguire.
Se ti ritorna dei record, allora manca qualche refresh in VB.
Se non ti torna dei record, ma non dà alcun errore, evidentemente c'è
qualche fraintendimento nella logica.


 ha scritto nel messaggio
news:315gooF...@individual.net...


 Format$(Data_Fine,"dd/mm/yyyy");
uhm...
hai verificato che sia "esattamente" questo il formato che ti ha indicato
alberto?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

allora nella query di Access ho messo il seguente codice:
 SELECT * FROM Contabilità
    WHERE Data Between
      Format$(Data_Inizio, "dd/mm/yyyy")  and
     Format$(Data_Fine, "dd/mm/yyyy")
//Da access questa query la esegue perfettamente
Nel codice di Visual Basic ho inserito questo
Private Sub Search_Date_Click()
  Dim StringaSQL As String
  Dim Data_Inizio As Date
  Dim Data_Fine As Date
  Data_Inizio = CDate(daDate.Text)
  Data_Fine = CDate(aDate.Text)
  datPrimaryRS.Recordset.Close
  StringaSQL = "SELECT * FROM Contabilità"
  StringaSQL = StringaSQL & " WHERE Data Between"
  StringaSQL = StringaSQL & " #" & Format$(Data_Inizio, "dd/mm/yyyy") &
"#and "
  StringaSQL = StringaSQL & " #" & Format$(Data_Fine, "dd/mm/yyyy") & "# "
  datPrimaryRS.Recordset.Source = StringaSQL
  datPrimaryRS.Recordset.Open
  datPrimaryRS.Refresh

   datPrimaryRS.Refresh
Ci sono due possibilità:
1) Capisci cosa stai facendo, quindi puoi modificare il codice che ti viene
suggerito
2) Non capisci, quindi devi fare copia incolla e, *dopo*, cercare di capire
Scegli tu.
L'importante è non mescolare le cose.



L'importante è non mescolare le cose.
Io ho chiesto...se il codice che avevo scritto(quello ke mi hai detto
tu..quello in visual basic..,la query access..l'ho scritta io),cmq nn
capisco..dove sia l'errore..perchè nella query access visualizzo i dati..cmq
preferisco la 2°soluzione..cosi poi posso studiare il codice e capisco
meglio,per il momento ti ringrazio..sei stato molto gentile
ciao Marcelo

 capisco..dove sia l'errore..perchè nella query access visualizzo i dati..
egregio mcnamara,
dove stia l'errore te l'hanno detto già in molti: quando fai una select da
vb verso access devi obbligatoriamente usare il formato mm/dd/yyyy, e non
dd/mm/yyyy
all'interno di access, siccome lui è molto buono, può darsi che qualche
volta funzioni anche il secondo formato, ma può dare adito a simpatici
errori.
per favore, impara a leggere i post, anche "carattere per carattere",
qualche volta è molto utile.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel
messaggio news:cokjtg$tjn$1...@news.newsland.it...


 capisco..dove sia l'errore..
Guarda, forse c'č un fraintendimento alla base di tutto.
Io ti ho postato un codice che, salvo altri problemi, funziona.
Tu non l'hai copiato pari pari nel tuo progetto, ma hai modificato due punti
fondamentali (di cui ti avevo anche spiegato l'importanza all'inizio).
Questo, ovviamente, fa sě che il tuo codice non funzioni.
Allora chiedi perchč.
Sia io che Sergio ti diciamo che non hai copiato bene il codice da me
postato.
E tu rispondi dicendo che non hai capito perchč non funzioni.
A questo punto, riflettendo:
Tu, vuoi imparare o vuoi semplicemente che il tuo progetto funzioni cosě lo
chiudi e ti metti a fare altro?
Immagino, dal tuo approccio iniziale, che tu voglia imparare.
Bene. Allora, con calma: copiaincolla ESATTAMENTE il codice che ti ho
postato.
Testalo.
Funziona?
Bene. Evidentemente fra il mio e il tuo c'era qualche differenza.
Adesso, con calma: scorri tutti i caratteri, uno per uno.
Ecco: hai trovato un passaggio diverso fra le due versioni...
"Azz... adesso ho capito!"


Allora..io voglio imparare...scusate se sono un pò duro...
Allora partiamo dall'inizio  alberto ha scritto questo codice ok?
Private Sub Search_Date_Click()
  Dim StringaSQL As String
dim Data_Inizio as Date
dim Data_Fine as Date
Data_Inizio = CDate(daDate.Text)
Data_Fine = CDate(aDate.Text)
  datPrimaryRS.Recordset.Close
  StringaSQL = "SELECT * FROM Contabilità"
  StringaSQL = StringaSQL & " WHERE Data Between"
  StringaSQL = StringaSQL & " #" & format$(Data_Inizio, "mm/dd/yyyy") & "#
  and "
  StringaSQL = StringaSQL & " #" & format$(Data_Fine , "mm/dd/yyyy") & "# "
 datPrimaryRs.Recordset.Source=StringaSQL
  datPrimaryRS.Recordset.Open
End Sub
Allora se lo copio paripasso..da questo...in visual basic...mi segna in
rosso --->  and "....io allora sposto questa parte nella linea di codice
precedente giusto?o devo apportare qualke altra modifica?

 rosso --->  and "
mc, te lo segna in rosso solo perchè la formattazione automatica del post
te lo ha portato a capo, dividendolo dalla riga a cui apparteneva.
certo che se non riesci a risolvere da solo neanche queste quisquilie...
chissà quado arrivi alle pinzillacchere...


 ha scritto nel
messaggio news:cokofs$usc$1...@news.newsland.it...


 ponte ahahah
Il problema, a parte il quoting, è che forse funziona, ma non hai capito una
fava di quello che hai fatto...


 codice che ti ho dato io).
Allora i campo..Data ne db di Access va dichiarato Data/Ora??????.....mi fa
selezionare pure i formati ma questo nn c'è---> mm/dd/yyyy
La query l'ho corretta cosi(in Access)---->
SELECT *
FROM Contabilità
WHERE Data Between (Data_Inizio) And (Data_Fine);
Vi sto scassando le palle..lo so..però voglio arrivarci anke Io :)

 Vi sto scassando le palle..lo so..però voglio arrivarci anke Io :)
Sinceramente non credo. Per capire, devi provare, leggere attentamente le
descrizioni che appaiono, fare anche due click in più dello stretto
necessario.
Tu invece chiedi conferma di ogni singolo tasto che digiti.
Ascolta il mio consiglio: sperimenta, prova, cambia, scanchera, clicca,
leggi, studia, googla, sfoglia msdn. E quando chiedi al NG, chiedi in
maniera mirata, non così a casaccio...
Ciao
