Newsgroup: it.comp.lang.visual-basic
Titolo: inserire funzioni in SQL

Devo realizzare una Select in una anagrafica per visualizzare  tutti quelle
persone che compiono gli anni o che
fanno l'onomastico in data odierna.
Semplificando il problema mettendo da parte l'onomastico , ecco quello che
ho scritto :
adoPrimaryRS.Open "SELECT Nome , Cognome FROM compleanno where day([Data di
nascita])= giorno OR
month([Data di nascita])= mese", DB, adOpenStatic, adLockOptimistic
il problema è che non mi calcola all'interno dell'istruzione  SQL le
funzioni day() e  month()
del campo Data di nascita  e probabilmente anche l'operatore OR non è esatto
!!!
______
Flex

del campo Data di nascita  e probabilmente anche l'operatore OR non è esatto
Il SQL e' un linguaggio a parte che non c' entra con il vb.
Ogni database ha a corredo delle istruzioni base standard diverse funzioni
per il compimento di svariati generi di elaborazione.
Dovresti consultare il manuale del sql relativo al database che usi.
ciao, hal

Ora come ora sono un po' arrugginito e non ricordo esattamente la sintassi
esatta comunque, il comando SQL che cerchi di comporre è semplicemente una
stringa quindi, se vuoi inserire il valore contenuto nella variabile "day",
devi metterla fuori dalla stringa, pià o meno così:
"SELECT Nome , Cognome FROM compleanno where " & day([Data di nascita]) & "=
giorno OR " & month([Data di nascita]) & "= mese"
ovviamente, mi sembra che questo non basti in quanto occorrerebbe formattare
i campi di tipo Date con dei # particolari che ora non ricordo, comunque
forse anche sosì dovrebbe funzionare qualche cosa anche se vi possono essere
dei problemi di portabilità su altre macchine diversamente configurate.
Bye!!!
"Flex" <flex...@Mfreemail.it> ha scritto nel messaggio
news:9djc5u$nmi$1...@pegasus.tiscalinet.it...


"Flex" <flex...@Mfreemail.it> ha scritto
| adoPrimaryRS.Open "SELECT Nome , Cognome FROM compleanno where day([Data di
| nascita])= giorno OR
| month([Data di nascita])= mese", DB, adOpenStatic, adLockOptimistic
|
| del campo Data di nascita  e probabilmente anche l'operatore OR non è esatto
E no che non va bene! Ci devi mettere un AND!
A meno che tu non voglia tutte le persone che compiono gli anni un dato giorno del mese
(di qualunque mese) + tutte le persone che compiono gli anni in un dato mese...

 !!!
_se_ ho capito il problema:
qui sotto, nel db il campo della nascita si chiama "nato".
nel form, un command, tre option e un listbox:
Private Sub Command1_Click()
    Caption = Day(Date) & "=" & Month(Date) & "=" & Year(Date)
    Dim db As Database, rs As Recordset, s As String
    Set db = OpenDatabase("nascite")
    If optD Then
        Set rs = db.OpenRecordset _
            ("select nome,nato from nascite where day(nato)=" &
Day(Date) & " order by day(nato)", dbOpenDynaset)
    ElseIf optM Then
'        Set rs = db.OpenRecordset _
'            ("select nome,nato from nascite where month(nato)=" &
Month(Date) & " order by day(nato)", dbOpenDynaset)
        Set rs = db.OpenRecordset _
            ("select nome,nato from nascite where
month(nato)=Month(Date()) order by day(nato)", dbOpenDynaset)
    ElseIf optDM Then
        Set rs = db.OpenRecordset _
            ("select nome,nato from nascite where day(nato)=" &
Day(Date) & " and month(nato)=" & Month(Date) & " order by day(nato)",
dbOpenDynaset)
    End If
    List1.Clear
    If Not (rs.BOF And rs.EOF) Then
        Do While Not rs.EOF
            List1.AddItem rs!nome & vbTab & rs!Nato
            rs.MoveNext
        Loop
    End If
    rs.Close: db.Close
    Set rs = Nothing: Set db = Nothing
End Sub
la select per optM funziona sia con la riga commentata sia con l'altra.
non funziona invece con la forma
    where month(nato)=month(date) order by
se scrivi date(), vb toglie le parentesi (cfr. caption).
sql evidententemente le vuole.
quindi se vuoi che il calcolo lo faccia vb, non metterle, se vuoi che lo
faccia sql, mettile.
nb: se vuoi sapere chi fa gli anni oggi, non ti serve l'or ma l'and.
ciao, a.