+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: dichiarare come variabile pubblica la path del database

  1. #1
    marco61 non è in linea Scolaretto
    Luogo
    Lecco
    Post
    119

    dichiarare come variabile pubblica la path del database

    Ciao a tutti e scusate per la banalità della domanda.
    Siccome devo caricare su una chiavetta il mio applicativo per presentarlo ad un corso, vorrei dichiarare pubblica, in un modulo, la variabile del percorso del file di access.
    Ho provato in questo modo
    codice:
    Public Mypath As String
    Mypath = Application.CurrentProject.Path
    ma mi compare il box con "Errore di compilazione - Non valido all'esterno di una routine"
    Grazie per la comprensione

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,918
    Perchè devi dichairarla come Variabile Public dal momento che come hai anche tu evidenziato [CurrentProject.Path] che è Public la espone già...?

    Per quello che fai poi l'errore è banale... solo la DEFINIZIONE del Vartype può essere fatto fuori da Sub/Function, l'assegnazione invece può avvenire solo in Sub/Function.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,158
    Blogs
    5
    Mi pare evidente

    Non valido all'esterno di una routine

    Perché non leggere i messaggi d'errore prima di scrivere nel forum?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  4. #4
    marco61 non è in linea Scolaretto
    Luogo
    Lecco
    Post
    119
    Perchè se fossi stato in grado di risolvere il problema da solo (come faccio quasi sempre), non avrei rotto le scatole al forum!

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,918
    Quote Originariamente inviato da marco61 Visualizza il messaggio
    Perchè se fossi stato in grado di risolvere il problema da solo (come faccio quasi sempre), non avrei rotto le scatole al forum!
    Marco ma di cosa parli...?

    Quello che hai esposto è un NON PROBLEMA... tu a cosa ti riferisci...?
    Se rispondi fallo senza polemiche, altrimenti chiudiamo.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  6. #6
    marco61 non è in linea Scolaretto
    Luogo
    Lecco
    Post
    119
    Scusatemi ma mi sono arenato su una stupidata, lo ammetto.
    Per spiegarlo in parole povere, nel mio applicativo che lavora diviso FE e BE su server ho dichiarato delle costanti pubbliche per mappare determinate cartelle in rete, esempio
    codice:
    Public Const model As String = "L:\DPM\impiantistica\DBImpianti\Modelli"
    cosi, nel caso di spostamenti sul server cambio semplicemente la stringa.
    Ora dovendo portare tutto su chiavetta, sia applicativo che cartelle, varie volevo semplicemente dichiarare che la nuova stringa "model" è
    codice:
    Public Const model As String = Application.CurrentDB.path & "\Modelli"
    ma mi da (giustamente) l'errore che vi ho postato
    Grazie

  7. #7
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,918
    Perchè è una COSTANTE ed il Compilatore si arrabbia...

    Per fare quello che chiedi si adopera una Funzione invece di una Costante...
    codice:
    Private sPathModel      As String
    
    Function PathModel(Value) As String
        If IsMissing(Value) Then
            PathModel = sPathModel
        Else
            sPathModel = Value
        End If
    End Function
    Su AutoExec, lanci la chiamata alla Funzione
    codice:
    Call PathModel(Application.CurrentDB.path)
    Poi da quel momento li in poi la stessa funzione la usi richiamandola per recuperare il Valore:
    codice:
    MsgBox PathModel()
    oppure:
    codice:
    NomeFileCompleto=PathModel() & "\Pippo.xls"
    In questo modo la puoi anche inserire in una Query...
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  8. #8
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,158
    Blogs
    5
    Quote Originariamente inviato da marco61 Visualizza il messaggio
    Perchè se fossi stato in grado di risolvere il problema da solo (come faccio quasi sempre), non avrei rotto le scatole al forum!
    Ma infatti ti ho chiesto come mai non hai letto il messaggio d'errore. Che parla chiaro. Scusa, cosa non si capisce in

    "Non valido all'esterno di una routine"

    ?

    ma mi da (giustamente) l'errore che vi ho postato
    Se dici "giustamente" vuol dire che hai compreso che una informazione "dinamica" non può essere costante.

    Non è "vietato" rivolgersi al forum ma fare qualche tentativo, in base a ciò che ti viene suggerito dallo stesso sistema, sarebbe auspicabile.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  9. #9
    marco61 non è in linea Scolaretto
    Luogo
    Lecco
    Post
    119
    Non sono un tipo che si arrende facilmente e di prove, credetemi, è da ieri che le sto facendo, provando anche a cercare in rete eventuali soluzioni.
    Stavolta purtroppo mi sono dovuto arrendere!
    Grazie ancora

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi