Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    65

    [VB.NET] Modificare una OledbConnection

    Hola
    Spero di riuscire a farmi capire.
    Dovrei intervenire sulla struttura di diversi database la cui struttura è identica ma riguardano anni diversi e quindi nomi diversi.
    Ho creato alcune routine in modo da poter ciclare il lavoro.
    Nella dichiarazione iniziale inserisco questa riga in modo sia valida in tutto il form
    codice:
    Dim MyDBAnno As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & pathMDb & nameMdbAnno)
    eseguo poi un ciclo in cui cambio il valore della variabile nameMbdAnno
    codice:
            For X = 2003 To Year(Now)
                nameMdbAnno = "anno_" & Trim(Str(X)) & ".MDB"
                Dim MyDBAnno As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & pathMDb & nameMdbAnno)
                If File.Exists(pathMDb & nameMdbAnno) Then
                    MyDBAnno.Open()
                    '..... routine per modifica struttura
                    MyDBAnno.Close()
                End If
            Next X
    Nel momento in cui arrivo ad eseguire le routine per la modifica struttura ottengo l' errore: "ExecuteScalar richiede una oggetto Connection aperto e disponibile. Lo stato attuale della connessione è chiuso."

    La cosa strana è che se non vado a cambiare la variabile nameMdbAnno (che rimane quella dell'anno attuale dichiarata a livello globale di progetto) il tutto funziona.
    Avete qualche suggerimento?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quando dichiari un oggetto 'globale' questa è visibile a tutto il progetto.
    Ma quando dichiari un variabile a livello di routine, questa è 'locale' e non ha nulla a che vedere con quella globale, non importa se hanno lo stesso nome.

    Per cui ciò che tu definisci strano è, al contrario, 'normale amministrazione'.

    Non devi dichiarare MyDBAnno a livello di routine, ma utilizzare l'oggetto MyDBAnno già dichiarato a livello 'globale'


  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    65
    Grazie per la risposta in questo giorno di festa.
    A livello globale dichiaro le 2 variabili pathMDb e nameMdbAnno e non MyDBAnno che invece dichiaro a livello locale.
    Altre ipotesi?

  4. #4
    Rileggi con attenzione cosa hai scritto all'inizio, rileggi con attenzione cosa ti ha risposto gibra e ti accorgerai che quest'ultimo t'ha risposto.
    Inizio con un aiutino:


    Nella dichiarazione iniziale inserisco questa riga in modo sia valida in tutto il form
    codice:
    Dim MyDBAnno As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & pathMDb & nameMdbAnno)
    ...

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da olmof
    Grazie per la risposta in questo giorno di festa.
    A livello globale dichiaro le 2 variabili pathMDb e nameMdbAnno e non MyDBAnno che invece dichiaro a livello locale.
    Altre ipotesi?
    MyDBAnno l'hai scritto tu, non io.

    Che fai, cambi le carte in tavola?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    65
    Mi sono spiegato male.
    La dichiarazione MyDBAnno la faccio all'inizio del form, le dichiarazione delle altre 2 variabili a livello di progetto.
    Una volta dichiarato MyDbAnno non posso più variarlo?

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.