Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di omaggi
    Registrato dal
    Sep 2009
    Messaggi
    25

    [vba - Access 2007] Filtrare date con VBA

    Ciao a tutti.
    Nel mio applicativo sto' usando Access 2007 con un db MySQL.
    In una maschera di Access ho bisogno di poter scegliere da delle textbox e menu a tendina, dei valori. A seconda dei valori immessi, ho bisogno che possa vedere solo questi dati "filtrati".
    Nella mia maschera ci sono 2 menu a tendina (con 1 campo da scegliere) e due txtbox con dei valori di tipo data.
    Per quanto riguarda i 2 campi non ci sono problemi e i filtri funzionano. Quando invece provo con le date, mi esce sempre lo stesso errore:

    "Errore di run-time '3464': Tipi di dati non corrispondenti nell'espressione criterio."

    Per creare questo filtro, ho creato una query che seleziona tutti i campi della tabella e poi ho usato "filter" in vba...

    Ecco il codice:
    Private Sub bCerca_Click()
    DoCmd.RunCommand acCmdRefresh
    Dim Filtra As String
    If ccPuntoMisura <> "" Then
    Filtra = Filtra & " AND id_PuntoMisura = " & ccPuntoMisura
    End If
    If ccObis <> "" Then
    Filtra = Filtra & " AND id_Obis = " & ccObis
    End If
    Filtra = Mid$(Filtra, 5) 'toglie 5 caratteri prima del filtra per non iniziare con l AND
    Me.Filter = Filtra
    Me.FilterOn = True

    End Sub

    Per le date ho provato con il between ma non funzia (Filtra = Filtra & " AND data_ora between='" & txtDataInizio & "' and '" & txtDataFine & "'")

    Qualche idea?

    Grazie mille, ciao!

  2. #2
    Non so operando con MySQL, ma di solito in Access le date nelle query vanno specificate nel formato #yyyy/mm/dd# oppure #mm/dd/yyyy#, gli apici servono per specificare le stringhe

    inoltre dopo l'operatore BETWEEN non va messo un =.

    Prova quindi così:
    codice:
    Filtra = Filtra & " AND data_ora BETWEEN #" & Year(txtDataInizio) & "/" & Month(txtDataInizio) & "/" & Day(txtDataInizio) & "# AND #" & Year(txtDataFine) & "/" & Month(txtDataFine) & "/" & Day(txtDataFine) & "#"
    Con le caselle combinate la cosa funziona?

    Purtroppo in Access con le date bisogna far così, perche se lasci solo txtDataInizio lui la scrive secondo le impostazioni internazionali del PC in uso, quindi in Italia di solito usa il formato dd/mm/yyyy, bisogna quindi girare il tutto perchè la sintassi SQL è uguale in tutto il mondo...
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  3. #3
    Utente di HTML.it L'avatar di omaggi
    Registrato dal
    Sep 2009
    Messaggi
    25
    Grazie mille. Sbagliavo perché mettevo gli apici al posto delle #...

    Grazie...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.