Query parametrica in VBA

di il
10 risposte

Query parametrica in VBA

Buona sera a tutti! Ho un problema: dovrei creare una query in VBA per Access 2007 la quale, una volta aperto un secondo DB Access mi mostri il record avente per ID il numero fornito come parametro...

fino ad ora ho scritto questo codice per il pulsante di ricerca, ma non so come continuare...

Private Sub Comando12_Click()
Dim applicazione, percorso As String
Dim CodiceSocio As Integer

'Inizializzazione delle variabili: dico dove si trova e come si chiama il file da aprire
percorso = "E:\CARTELLE ARCHIVIO\ARCHIVIO STORICO.accdb"
applicazione = "C:\Windows\explorer.exe " & percorso

'Legge il Codice Socio che fungerà da parametro per la ricerca
CodiceSocio = Form_qryRicercaPerCognome.ID

'Apre il file
Call Shell(applicazione, 1)

'Testo della query che ricerca nella tabella "SocioStorico" il record che ha come ID il codice socio

End Sub


Per motivi di grandezza del DB sono stato costretto a dividerlo in 2.
Grazie.

10 Risposte

  • Re: Query parametrica in VBA

    Ciao,
    per prima cosa ricordati di usare i TAG CODE (come da regolamento)
    poi ... tu sai che in questo modo
    Dim applicazione, percorso As String
    non dichiari il tipo per la variabile "applicazione" ma solo per la "percorso", vero?
    poi ... questo valore che devi leggere non ho capito dove sia, se in un controllo (non associato) su un form o in una tabella
    se è in una tabella l'hai linkata sul db da cui vuoi leggere?
  • Re: Query parametrica in VBA

    Chiedo scusa per non aver usato i TAG CODE, ma sono nuovo e non ancora riesco a capire come usarle.

    La variabile "applicazione" si può anche dichiarare così come ho fatto: è una forma compatta di dichiarazione di due o più variabili dello stesso tipo. Il problema non è la dichiarazione di applicazione e percorso perché il file "ARCHIVIO STORICO.accdb" si apre correttamente. Leggo il numero univoco del "socio storico" del database di origine unendo il numero del faldone e della cartella; questo numero generato (esempio faldone = 69, cartella = 2613 mi genera nella variabile CodiceSocio il numero univoco 692613) deve essere il parametro di ricerca per una query da applicare al file "ARCHIVIO STORICO.accdb" aperto in precedenza per fare in modo che mi venga estratto il record avente lo stesso numero generato come chiave primaria, che ho chiamato "POSIZIONE" nella tabella "SociStorici".
  • Re: Query parametrica in VBA

    Gerbonus ha scritto:


    è una forma compatta di dichiarazione di due o più variabili dello stesso tipo.
    Mmm... No. Leggi bene prima e poi .
  • Re: Query parametrica in VBA

    Gerbonus ha scritto:


    Chiedo scusa per non aver usato i TAG CODE, ma sono nuovo e non ancora riesco a capire come usarle.

    La variabile "applicazione" si può anche dichiarare così come ho fatto: è una forma compatta di dichiarazione di due o più variabili dello stesso tipo....
    Direi che, anche se espresso con presunta sicurezza, hai detto una ENORME CAVOLATA, quella è una dichiarazione assolutamente di tipo VARIANT dal momento che non lo defininsci, in altri linguaggi funziona come dici, in VBA no.

    Sul resto della richiesta... ho forti dubbi di aver capito... anche se temo ci sia qualche cosa di strano concettualmente.
  • Re: Query parametrica in VBA

    So bene che non era nella dichiarazione l'errore, era solo per farti notare che è come ho detto e come immaginavo hai commesso un classico errore di chi magari ha usato altri linguaggi...
    esattamente come sono certo che se questa è vera
    (esempio faldone = 69, cartella = 2613 mi genera nella variabile CodiceSocio il numero univoco 692613)
    avrai enormi problemi ... quindi spero ci sia un separatore almeno e che tu l'abbia omesso per brevità... pensa solo se ti trovi il faldone 692 e la cartella 613 ... tranne che tu non abbia la ASSOLUTA certezza di non avere pi+ di 99 faldoni ma mi sembrerebbe limitante.
    Poi come Alex non capisco la logica, prova a spiegare meglio
    anche se questa
    Per motivi di grandezza del DB sono stato costretto a dividerlo in 2.
    mi fa terribilmente pensare male
  • Re: Query parametrica in VBA

    muttley005 ha scritto:


    (esempio faldone = 69, cartella = 2613 mi genera nella variabile CodiceSocio il numero univoco 692613)
    avrai enormi problemi ... quindi spero ci sia un separatore almeno e che tu l'abbia omesso per brevità... pensa solo se ti trovi il faldone 692 e la cartella 613 ... tranne che tu non abbia la ASSOLUTA certezza di non avere pi+ di 99 faldoni ma mi sembrerebbe limitante.
    Poi come Alex non capisco la logica, prova a spiegare meglio
    anche se questa
    Per motivi di grandezza del DB sono stato costretto a dividerlo in 2.
    mi fa terribilmente pensare male
    I faldoni non arrivano a 70. Il problema è che sono costretto ad usare Access perché me lo ha espressamente richiesto la committenza. In quanto alla divisione del DB, questa è stata necessaria perché essendo circa 2700 cartelle, il loro contenuto scansionato e salvato in formato pdf occupa parecchio e le dimensioni del file access, che li contiene come allegati, raggiunge facilmente i 2 GB consentiti da Access. Ora le cose stanno in questo modo in un file access sono contenuti i dati relativi alla posizione fisica in archivio delle pratiche al quale si accede per una ricerca per cognome che esegue una query il cui risultato è:

    Cognome e Nome Faldone Cartella
    Tizio n0 x y pulsante APRI CARTELLA
    Tizio n1 x1 y1 pulsante APRI CARTELLA1
    Tizio n xn yn pulsante APRI CARTELLA2

    Affianco ad ogni record trovato c'è un pulsante che apre il secondo file e deve aprire una tabella puntata al record cui si riferisce il pulsante. L'altro file contiene il contenuto di ogni singola cartella in parte messa come allegato. Devo quindi programmare il pulsante "APRI CARTELLA".
    Spero di essere stato chiaro.
  • Re: Query parametrica in VBA

    Non dovresti inserire i pdf nel DB ma usare dei file esterni a cui fai riferimento tramite il DB. Così non avresti alcun problema di dimensioni del db.
  • Re: Query parametrica in VBA

    oregon ha scritto:


    Non dovresti inserire i pdf nel DB ma usare dei file esterni a cui fai riferimento tramite il DB. Così non avresti alcun problema di dimensioni del db.
    Non so come si fa! Se me lo puoi spiegare te ne sarei molto grato!
  • Re: Query parametrica in VBA

    Non c'è molto da spiegare. Metti i file pdf in una cartella (o percorso) nota e inserisci in un campo della tabella del db il percorso completo di nome di file.
  • Re: Query parametrica in VBA

    Come temevo questa
    Per motivi di grandezza del DB sono stato costretto a dividerlo in 2.
    si è rivelata un "errore" di implementazione.
    Andando oltre, come ti ha già indicato Oregon la strada giusta NON è includere i PDF nel DB e aggiungo un bel cerca di evitare i campi allegato come la peste.
    La soluzione giusta è quella di avere non il file ma un link al file.
    Per darti un'ulteriore "finezza" che potrebbe tornarti utile, io non memorizzo il fullpath ma solo il parziale partendo da un percorso base in modo che se un giorno tu avessi la necessità di spostare il repository non avresti poi bisogno di update-are tutti i record.
    ES: RepoPath (percorso base) = "D:\Repository" e percorso di un file fisico "D:\Repository\16773\6363\File1.pdf" -> tu memorizzi solo "\16773\6363\File1.pdf" e ricostruisci il fullpath concatenando quel campo col RepoPath che metti in una tabella SETUP piuttosto che in un file INI piuttosto che nel registro.

    PS: il fatto che tu abbia fino ad un max di 70 faldoni ora non significa che con questo metodo tu non rischi in futuro ...
Devi accedere o registrarti per scrivere nel forum
10 risposte