Newsgroup: it.comp.lang.visual-basic
Titolo: distanza tra due date (in giorni)

Lo so lo so... questo è un argomento trito e ritrito... ma ora come ora il
sito comune è down (non lo so perchè ma mi dice Impossibile visualizzare la
pagina desiderata. Si è verificato un problema.
qui non ho trovato i post (che tra l'altro ho anche letto tempo fa...)
perciò chiedo help a voi.
Ho bisogno di visualizzare tutti i record che abbiano una data in scadenza,
cioè tutti i record in cui mancano tot giorni alla data memorizzata.
ci ho provato con quest'istruzione:
 Set Data1.Recordset = Data1.Database.OpenRecordset("SELECT * FROM Clienti
WHERE (([clienti].[Datasiggas]-Now())<" & Text1.Text & ") and
(([clienti].[Datasiggas]-Now())>0)")
dove, logicamente, text1.text è il numero di giorni di anticipo desiderati.
e mi funziona... ma non so fino a che punto è efficiente, perciò se avete
qualche consiglio, ben venga!.
Inoltre volevo realizzare che, quando l'utente immette un nuovo valore in
text1.text si riesegua la query e mi visualizzi solo i record che
corrispondono al nuovo valore di giorni... ho provato con
Private Sub Text1_Change()
 Data1.Refresh
End Sub
oppure con
Private Sub Text1_Change()
 Data1.recordset.requery
End Sub
ma nessuno dei 2 va... sapete aiutarmi?
grazie a tutti

 ma nessuno dei 2 va... sapete aiutarmi?
Metti il tutto (refresh o requery non so..., ma secondo me cambia il Source
del recordset in quanto Text1 fa parte dello stesso...) nel Validate di
Text1, ovviamente dopo aver controllato la coerenza (formato data) del
contenuto di Text1.
La Change si verifica a ogni variazione (anche un singolo carattere) quindi
il contenuto di Text1 potrebbe essere palesemente incompatibile con la query
e col tipo/formato data atteso dalla stessa, mentre la Validate solo
all'abbandono del Text1 (interrompibile con Cancel=True) e prima del suo
LostFocus.

 ha scritto nel messaggio
news:bmuanv$ql0nr$1...@ID-174464.news.uni-berlin.de...

non mi sono spiegato bene...
io nel textbox ci metto il numero di giorni tra una data e l'altra, (lo noti
se guardi bene l'istruzione sql che ho indicato) quindi va bene l'evento
change... Text1 non è associato al recordset.
il recordset invece è associato ad una dbgrid.... ma ho fatto il refresh
anche si questa nell'evento change.
il problema è che con data1.requery il recordset non mi cambia...
se invece riscrivo l'istruzione
Set Data1.Recordset = Data1.Database.OpenRecordset("SELECT Codice, Nome,
Indirizzo, Comune, Amministratore, DataSigGas FROM Clienti WHERE
(([clienti].[Datasiggas]-Now())<" & Text1.Text & ") and
(([clienti].[Datasiggas]-Now())>0)")
nell'evento change, funziona il tutto...
allora io mi domando: a che serve requery e refresh??? non è questa la
funzione che dovrebbero avere, soprattutto requery??

 funzione che dovrebbero avere, soprattutto requery??
No, vedi sopra. L'errore concettuale consiste nel fatto che finchè non gli
dici che in recordset è diverso, in Data continua a basarsi su quello che ha
prima archiviato. Dovresti, come hai detto, riassegnare in recordset
nell'evento change, ma ... se il database è molto popolato che accade mentre
l'operatore digita in Text1 1 e poi 2 e poi 3?
Io metterei un bottone o, come dicevo, metterei il tutto nell'evento
Validate. Almeno l'adeguamento si verifica solo all'abbandono di Text1, non
ad ogni tasto...

si hai ragione, se il database è molto popolato l'utente mi si ammoscia
davanti allo schermo prima di premere un altro tasto.
Ma cosa intendi per "ripetere la query nello stato corrente"?
Io capisco "rieseguire la query"ma evidentemente non è questo...
PS (perchè ogni volta che ci deve essere il tu hai scritto in ? tipo "in
recordset")

 PS (perchè ogni volta che ci deve essere il tu hai scritto in ? tipo "in
recordset")
Non ti seguo. Puoi spiegarti meglio?

 Non ti seguo. Puoi spiegarti meglio?
Ahhh, dopo aver combattuto a sangue con la tua punteggiatura, ho capito.
Perchè mi sono sbagliato. Ogni volta? Quante volte?

 (([clienti].[Datasiggas]-Now())>0)")
ho risolto il problema grazie al vostro aiuto.
Ora mi chiedo: "fino a che punto è efficiente quest'istruzione?" e: "Potete
suggerirmi qualcosa di migliore, più efficiente ecc ecc..."
presumo che vi sia capitato di affrontare un problema del genere, come lo
avete risolto?
grazie mille