Ricerca intervallo data access

di il
7 risposte

Ricerca intervallo data access

Ciao a tutti, avrei bisogno di un aiuto per quanto riguarda scrivere un codice VBA, per fare una ricerca tramite una maschera inserendo intervallo tra due date.

Ho visto che si può fare tramite il comando BETWEEN, solo che mi da ancora errore, ma essendo per nulla pratico, non riesco a capire dove sia l'errore. Scrivo qua il codice che ho provato ad inserire:
Private Sub Command85_Click()
Dim t As String
[Form_Blue book].[DR N°].Locked = False
[Form_Blue book].[PN].Locked = False
[Form_Blue book].[Customer].Locked = False
[Form_Blue book].[Project].Locked = False
[Form_Blue book].[Short_description].Locked = False
[Form_Blue book].[DR start date].Locked = False
[Form_Blue book].[DR done by].Locked = False

t = "SELECT [DR N°],[PN],Customer,Project,[Short_description],[DR start date],[DR done by] FROM [Blue book] Where [DR start date] BETWEEN '*" & Text76.Value And Text78.Value & "*'"
[Form_Blue book].RecordSource = t
[Form_Blue book].Requery

[Form_Blue book].[DR N°].Locked = True
[Form_Blue book].[PN].Locked = True
[Form_Blue book].[Customer].Locked = True
[Form_Blue book].[Project].Locked = True
[Form_Blue book].[Short_description].Locked = True
[Form_Blue book].[DR date].Locked = True
[Form_Blue book].[DR by].Locked = True
End Sub
In pratica vorrei semplicemente che tramite i campi Text76 e Text78 si inserisca l'intervallo di date richiesto, e vengano stampati a video tutti i campi messi dopo "SELECT".

Cosa sto sbagliando?
Grazie a tutti

7 Risposte

  • Re: Ricerca intervallo data access

    Hai 2 possibilità, o fai
    
    Between Datainizio and DataFine
    
    oppure ( scelta da me consigliata )
    
    WHERE DataInizio >= xx/xx/xxxx AND DataInizio <= xx/xx/xxxx
    
    Ciao
  • Re: Ricerca intervallo data access

    anthelios ha scritto:


    Hai 2 possibilità, o fai
    
    Between Datainizio and DataFine
    
    oppure ( scelta da me consigliata )
    
    WHERE DataInizio >= xx/xx/xxxx AND DataInizio <= xx/xx/xxxx
    
    Ciao
    Se ho capito bene, la scelta
    
    WHERE DataInizio >= xx/xx/xxxx AND DataInizio <= xx/xx/xxxx
    
    non potrebbe andar bene nel mio caso perchè dovrebbero essere date messe da chiunque, essendo un campo molto vasto (dal 2000 al 2019) l'operatore dovrebbe essere libero di scegliere di mettere un intervallo qualsiasi.

    Mentre la scelta
    
    Between Datainizio and DataFine
    
    Con Datainizio e DataFine cosa intendi? Io ho messo Text76 e Text78 perchè sono due campi liberi di testo che l'operatore può inserire nella maschera a proprio scelta, e tramite il pulsante con questo comando compaiono tutti i campi che hanno la data compresa tra quelle inserite.
  • Re: Ricerca intervallo data access

    Il metodo che stai usando è estremamente poco tecnico.
    Per filtrare si usano i FILTRI non si sostituisce il RECORDSOURCE, anche se funziona... è un metodo decisamente da poco esperti.

    I Nomi di Campi ed Oggetti come Controlli dovrebbe rispettare una pur minima logica di programmazione... NESSUNO SPAZIO e NESSUN CARATTERE SPECIALIE, spesso chi non ha alcuna pratica confonde il Nome di Campi e Controlli con la eventuale DESCRIZIONE.

    Oltretutto hai scritto una cosa formalmente ERRATA.
    
    Where [DR start date] BETWEEN '*" & Text76.Value And Text78.Value & "*'"
    Le Date come ti hanno già detto sommariamente le puoi filtrare in 2 modi... ma se il campo è data la devi FORMATTARE come data, tu li hai scritto una cosa inguardabile...!
    
    Me.Filter="[DR start date] BETWEEN " & Clng(Forms!NomeForm!ControlloDataDAL) & " AND "& Clng(Forms!NomeForm!ControlloDataAL)
    Me.FilterON=True
    Tutto il resto del codice che BLOCCA/SBLOCCA è assurdo ed inutile.
  • Re: Ricerca intervallo data access

    @Alex ha scritto:


    Il metodo che stai usando è estremamente poco tecnico.
    Per filtrare si usano i FILTRI non si sostituisce il RECORDSOURCE, anche se funziona... è un metodo decisamente da poco esperti.

    I Nomi di Campi ed Oggetti come Controlli dovrebbe rispettare una pur minima logica di programmazione... NESSUNO SPAZIO e NESSUN CARATTERE SPECIALIE, spesso chi non ha alcuna pratica confonde il Nome di Campi e Controlli con la eventuale DESCRIZIONE.

    Oltretutto hai scritto una cosa formalmente ERRATA.
    
    Where [DR start date] BETWEEN '*" & Text76.Value And Text78.Value & "*'"
    Le Date come ti hanno già detto sommariamente le puoi filtrare in 2 modi... ma se il campo è data la devi FORMATTARE come data, tu li hai scritto una cosa inguardabile...!
    
    Me.Filter="[DR start date] BETWEEN " & Clng(Forms!NomeForm!ControlloDataDAL) & " AND "& Clng(Forms!NomeForm!ControlloDataAL)
    Me.FilterON=True
    Tutto il resto del codice che BLOCCA/SBLOCCA è assurdo ed inutile.
    Come avevo già scritto, sono proprio a livello base, ho iniziato ad usare access da poco. Grazie mille il codice funziona proprio come volevo, proverò a migliorare il resto del codice come da te consigliato!!
    Grazie mille
  • Re: Ricerca intervallo data access

    Ricky994 ha scritto:


    ...
    Come avevo già scritto, sono proprio a livello base, ho iniziato ad usare access da poco. Grazie mille il codice funziona proprio come volevo, proverò a migliorare il resto del codice come da te consigliato!!
    Grazie mille
    Non devi MIGLIORARLO, devi ELIMINARLO.
  • Re: Ricerca intervallo data access

    Se dovessi applicare il filtro a delle stringhe di testo, come potrei fare?
  • Re: Ricerca intervallo data access

    Leggi qui
    https://www.fontstuff.com/access/acctut15.ht
    in particolare "Working with variables"
Devi accedere o registrarti per scrivere nel forum
7 risposte