Stringa SQL

giovedì 26 marzo 2009 - 11.13

marko80 Profilo | Junior Member

Ciao a tutti,
ho creato una maschera con due caselle di testo (txtdadata e txtadata) e due caselle combinate (cmb_nbadge e cmb_gruppo) e un pulsante anteprima(cmd_preview).
Tutti e quattro i campi non sono associati, ma fungono da campi filtro/ricerca che puntano a una query che ho creato (QAccessi).
Praticamente assocciato all'evento click del pulsante anteprima è "legata" una stringa SQL:

Private Sub cmd_preview_Click()

StrSQL = "SELECT * FROM QAccessi" & _
" WHERE QAccessi.GIORNO >=#" & Format$(Me.txtdadata, "dd/mm/yyyy") & "# AND QAccessi.GIORNO <= #" & Format$(Me.txtadata, "dd/mm/yyyy") & "# AND QAccessi.NBADGE='" & Me.cmb_nbadge & "' AND QAccessi.title='" & Me.cmb_gruppo & "' ORDER BY QAccessi.GIORNO"

Dim queryTemp As QueryDef
For Each queryTemp In CurrentDb.QueryDefs
If queryTemp.Name = "Qtempdata" Then
DoCmd.DeleteObject acQuery, "Qtempdata"
Exit For
End If
Next
Set queryTemp = CurrentDb.CreateQueryDef("Qtempdata", StrSQL)
DoCmd.OpenQuery ("Qtempdata")

End If

'DoCmd.OpenReport "rptaccdata", acViewPreview

End Sub

Tutto ok se popolo tutti e quattro i campi. Il problema si propone quando non popolo nbadge e gruppo, perchè giustamente me li vede come vuoti o null e nn restituisce niente.
Quello che vorrei fare è mettere come obbligatori i due campi della data e lasciare libertà sulle caselle combinate in modo che se non popolo nbadge e gruppo mi estrae tutto, ma compreso tra le mie date.
Spero di essere stato chiaro.
Grazie a tutti!

marko80 Profilo | Junior Member

Ciao!Qualche aiuto?
Grazie a tutti

trinity Profilo | Guru

nella sintassi sql i campi che pensi possono essere null li gestirei con: IsNull(nomecampo,'valorepredefinito')

:-)

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

marko80 Profilo | Junior Member

Ciao trinity,
non ho capito molto bene cosa intendi.
Esempio pratico?
Ciao e grazie

trinity Profilo | Guru


>Tutto ok se popolo tutti e quattro i campi. Il problema si propone
>quando non popolo nbadge e gruppo, perchè giustamente me li vede
>come vuoti o null e nn restituisce niente.
allora se in sql gli passi valori null o vuoti ovviamente la tua query non va pertanto ora non so di preciso come vuoi gestire il tutto se da codice oppure da sql ma se volessi da sql puoi scrivere una cosa del genere per gestire il passaggio di valori Null

esempio: se il campoX ha valore nullo e nella select devi cmq passare un valore semmai 0 allora puoi scrivere così:

IsNull(campoX, '0')

ossia

Select campoA,CampoB...IsNull(CampoX>,'0') From dbo.temp

in pratica se il campoX è = Null gli passa direttamente il valore 0.

Ora non so se questo può esserti di iuato ho letto e scritto al volo sul tuo post

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

marko80 Profilo | Junior Member

ciao e grazie per la risposta, ma forse non mi sono spiegato bene.
Praticamente dovrei fare, penso, dei controlli che mi verificano se ho scritto qualcosa nei due campi oppure no (nel caso non scivessi nulla deve estrapolare tutti i valori come se fosse un Like "*") e poi lanciarmi la stringa SQL.
Grazie

trinity Profilo | Guru

allora questi controlli li vuoi fare direttamente tramite sql oppure una parte nel compilatore e poi a seconda delle esigenze lanciare le varie query?
Cmq puoi utilizzare le stored procedure che le richiami da codice e gli passi i parametri che ti servono

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

marko80 Profilo | Junior Member

Ciao trinity,
l'esperto sei tu... direi la soluzione piu semplice e indolore e che possa capire per usarla successivamente in altri programmi.
Scusa per l'ignoranza, ma sono alle prime battute con access e la programmazione.
Grazie ancora.

trinity Profilo | Guru

Allora io ti consiglio che se devi fare controlli sugli oggetti ossia textbox per esempio i controlli devi farli nel compilatore...
Poi io utilizzo sql server access è una vita che non lo tocco + quindi la logica è un pokino diversa

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

marko80 Profilo | Junior Member

Rieccomi a stressarti...
Ho fatto questo e funziona al 99%.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Quando come filtro imposto le date e il gruppo mi compare la ascherina "immettere valore parametro". Perchè???

Grazie

marko80 Profilo | Junior Member

Risolto! Ecco il codice sperando che possa essere d'aiuto a qualcun altro.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5