Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188

    [VB& SP6] Parametrizzazione istruzione apertura connessione archivio.

    Buongiorno,

    ho una fissa che mi attanaglia e che non sono riuscito a risolvere.
    Volevo crearmi una sub contenente le 3 istruzioni di connessione archivio (adodb.connection), ma non riesco a passare il nome della connessione. Mi spiego:

    vorrei racchiudere queste istruzioni

    codice:
         Set dbarchivio = New Connection
          dbarchivio.CursorLocation = adUseClient
      
        
        dbarchivio.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=miodatabase;Jet OLEDB:Database Password="
    in una sub da richiamare dove ho dbarchivio dichiarata come variabile (ora mi scuso se non sto usando i termini tecnici corretti)

    Tipo:
    codice:
    public sub apridb (byval nomedb as adodb.connection)
         Set apridb= New Connection
          apridb.CursorLocation = adUseClient
    
        
        apridb.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=miodatabase;Jet OLEDB:Database Password=" 
    
    end sub
    da richiamare

    codice:
    apridb dbarchivio

    Il problema è che dopo l'struzione, dbarchivio non è inizializzata. Questo perchè non inizializza le prime due istruzioni, che se le metto fuori dalla sub, prima del richiamo della stessa, allora funge. Ma io volevo generalizzare anche loro, per scrivere meno codice

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    apridb è il nome della Sub, non può essere ANCHE il nome di una connessione.

    Devi prima dichiarare una variabile globale, quindi Pubblic, di tipo Connection, in un modulo BAS. Esempio:
    codice:
    Public CN As ADODB.Connection
    Poi potrai usarla nella tua Sub, per cui
    codice:
    Set CN = New ADODB.Connection

    N.B. Il parametro nella Sub è completamente sbagliato, deve essere una stringa che identifica il nome del database.


  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da gibra Visualizza il messaggio
    apridb è il nome della Sub, non può essere ANCHE il nome di una connessione.

    Devi prima dichiarare una variabile globale, quindi Pubblic, di tipo Connection, in un modulo BAS. Esempio:
    codice:
    Public CN As ADODB.Connection
    Poi potrai usarla nella tua Sub, per cui
    codice:
    Set CN = New ADODB.Connection

    N.B. Il parametro nella Sub è completamente sbagliato, deve essere una stringa che identifica il nome del database.


    Chiedo scusa, forse il caldo, ho sbagliato il copia ed incolla.
    codice:
    public sub apridb (byval nomedb as adodb.connection)
         Set nomedb = New Connection
          nomedb .CursorLocation = adUseClient
    
        
        nomedb .Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=miodatabase;Jet OLEDB:Database Password=" 
    
    end sub

    richiamo con
    codice:
    apridb dbarchivio
    dove, in un modulo, ho

    codice:
     public dbarchivio as adodb.connection

  4. #4
    Quote Originariamente inviata da benjy Visualizza il messaggio
    codice:
    public sub apridb (byval nomedb as adodb.connection)
         Set nomedb = New Connection
          nomedb .CursorLocation = adUseClient
    
        
        nomedb .Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=miodatabase;Jet OLEDB:Database Password=" 
    
    end sub

    richiamo con
    codice:
    apridb dbarchivio
    dove, in un modulo, ho

    codice:
     public dbarchivio as adodb.connection
    IMHO, ti conviene convertire la sub in una function che ha come parametro almeno la *stringa* di connessione e restituisce una adodb.connection.

    P.S.
    potrebbe funzionare anche con la sub che hai fatto tu se invece di passare la connection ByVal la passi ByRef sulla cui differenza ti consiglio di documentarti approfonditamente.

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da benjy Visualizza il messaggio
    Chiedo scusa, forse il caldo, ho sbagliato il copia ed incolla.
    Sarà anche il caldo, ma il tuo codice è comunque tutto sbagliato.
    E visto che non hai fatto alcuna domanda su ciò che ti è stato indicato, dubito molto che tu sappia cosa stai scrivendo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Sarà anche il caldo, ma il tuo codice è comunque tutto sbagliato.
    E visto che non hai fatto alcuna domanda su ciò che ti è stato indicato, dubito molto che tu sappia cosa stai scrivendo.
    Caro Gibra, con tutta la stima che ho per te e per il tuo lavoro, ma... questo post dove affermi che è tutto sbagliato e che non so cisa sto scrivendo, non è riferito al codice che ho riportato dopo aver fatto la battuta del caldo, giusto? Altrimenti sarebbe poco rispettoso, visto che quelle istruzioni sono corrette se prese al di fuori del tentativo di parametrizzarle, giusto? Ovvero: se io avessi una routine
    codice:
    private sub prova
     dim nomedb as adodb.connection
    Set nomedb = New Connection
          nomedb .CursorLocation = adUseClient
    
        
        nomedb .Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=miodatabase;Jet OLEDB:Database Password="
    ... questa funzionerebbe (anzi, funziona) normalmente. Magari non è il massimo della codifica, però funge.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    ...
    Ultima modifica di oregon; 27-07-2018 a 18:22
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Vedi che ti ha detto Gibra sulla "variabile globale" ... nella Sub ne usi un "locale" ... studia le differenze.

    E poi, nomedb non è un nome di variabile appropriato da associare ad una connessione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    secondo me confondi il nome dell'archivio con la connessione

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da patel Visualizza il messaggio
    secondo me confondi il nome dell'archivio con la connessione
    Scusa, ma l'archivio è miodatabase, non è di nostro interresse ora.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.