Problemi Connessione Database al primo avvio soltanto

di il
21 risposte

Problemi Connessione Database al primo avvio soltanto

Salve a tutti, sicuramente è un problema risolvibile ma che non riesco a rintracciare. Quando eseguo il programma che ho creato, questo si collega ad un Database.mdb e funziona bene, solo la prima volta che viene avviato, mi da errore in apertura della connesione, la va a cercare in un posto che io non ho mai dichiarato, come c:\ o d:\

questo quanto da me dichiarato inizialmente:
Imports System.Data.OleDb
Imports System.Data
Public Class Login
    Dim provider As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    Dim dataFile As String = My.Settings.percorso & "\Dbga.mdb;Persist Security Info=True;Jet OLEDB:Database Password=mia-password"
    Dim connString As String = provider & dataFile
    Dim myConnection As OleDbConnection = New OleDbConnection
l'errore lo da qui in apertura dicendo che è impossibile trovare il file in C:\Dbga.mdb
myConnection.ConnectionString = connString
            myConnection.Open()
il My.Settings.percorso ha un percorso che inizialmente è fissato nella special directory documenti

Cosa sto sbagliando? e sopratutto perchè dopo il primo avvio funziona? Il file viene scaricato da resources nella cartella esatta documenti e interrogato correttamente... (dopo)

21 Risposte

  • Re: Problemi Connessione Database al primo avvio soltanto

    Ci sono molte cose che non sono chiare.

    1) dove sta quella Open?

    2) "inizialmente è fissato nella special directory documenti" ... come e dove?

    3) "la prima volta non funziona" ... che vuol dire? Devi riavviare? Quando funziona?
  • Re: Problemi Connessione Database al primo avvio soltanto

    Cosa c'è in My.Settings.percorso?
  • Re: Problemi Connessione Database al primo avvio soltanto

    oregon ha scritto:


    Ci sono molte cose che non sono chiare.

    1) dove sta quella Open?

    2) "inizialmente è fissato nella special directory documenti" ... come e dove?

    3) "la prima volta non funziona" ... che vuol dire? Devi riavviare? Quando funziona?
    ciao, allora, mi spiego subito, l'open sta nel pulsante ok di una pagina di login che è la prima che si apre, ovviamente, fa l'open della connessione per vedere poi se dentro il database sono presenti le credenziali inserite e tutto quanto ne concerne ovviamente.

    il percorso iniziale di default è nella special directory documenti\cartella programma sta ovviamente nel load del form perchè va a verificare prima se la cartella ed il file esistono.

    Quando avvio il programma su un nuovo pc, mi dice che il file in c:\Dbgm.mdb non è stato trovato, basta chiudere e riaprire e funziona tutto come scritto, in c:\ verifico ma non c'è nessun file e lui legge e scrive correttamente nella cartella da me specificata. Lo fa solo al primo avvio su macchina diversa, boh. Lo strano è proprio questo, poi funziona sempre e regolarmente senza intoppi e nel pc non ci sono altri files.
  • Re: Problemi Connessione Database al primo avvio soltanto

    Sabo ha scritto:


    Cosa c'è in My.Settings.percorso?
    percorso è impostato come string utente in My.Settings e di default c'è il percorso con la cartella, come segue:

    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\CartellaProgramma"
  • Re: Problemi Connessione Database al primo avvio soltanto

    Così si capisce poco.... mi sembra che ci siano tanti punti 'oscuri'... forse dovresti zippare un progetto minimo senza il resto del codice fa quello che dici... così lo possiamo controllare di persona
  • Re: Problemi Connessione Database al primo avvio soltanto

    Allego il progetto, sicuro troverete piu di un errore ma per chi è alle prime armi già va bene secondo me... (ripeto, secondo me)



    Attendo info.... grazie

    Marco
  • Re: Problemi Connessione Database al primo avvio soltanto

    In Login.cs all'inizio scrivi semplicemente
    
        Dim dataFile As String
        Dim connString As String
    
    e nella Load il codice inizia con
    
            LblData.Text = Date.Today
            BTNcrea.Enabled = False
    
            My.Settings.percorso = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\GestioneAtleti"
            My.Settings.Save()
    
            dataFile = My.Settings.percorso & "\Dbga.mdb;Persist Security Info=True;Jet OLEDB:Database Password=www.my-programs.it"
            connString = provider & dataFile
    
    Nel resto del codice, se modifichi un Setting poi devi fare il Save altrimenti non verrà registrato per il prossimo Load.
  • Re: Problemi Connessione Database al primo avvio soltanto

    Si ma il percorso rimane sempre quello, il save del setting lo faccio nella sezione quando cambio il percorso, non capisco perchè al primo avvio mi da quell'errore però e poi non lo da piu? se fosse un errore di lettura del percorso lo darebbe anche negli avvii successivi o sbaglio?
  • Re: Problemi Connessione Database al primo avvio soltanto

    Che vuoi dire? Con le modifiche non hai più il problema.
  • Re: Problemi Connessione Database al primo avvio soltanto

    Voglio dire che è un problema.che da solo al primo avvio e poi funziona regolarmente. Anche se faccio modifiche al percorso del database funziona correttamente perchè è stato avviato già una volta.

    È questo che non capisco... perchè fa quella richiesta al primo avvio soltanto? Se lo hai avviato hai notato l'anomalia, se vuoi ripeterla basta spostare l'exe in una partizione diversa o in un disco diverso e al primo avvio sicuro lo fa... poi nulla piu.
  • Re: Problemi Connessione Database al primo avvio soltanto

    orione1976 ha scritto:


    percorso è impostato come string utente in My.Settings e di default c'è il percorso con la cartella, come segue:
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\CartellaProgramma"
    In che punto del programma fai
    My.Settings.percorso = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\CartellaProgramma"
    ???

    Al primo avvio (secondo me) hai My.Settings.percorso che è vuoto, e quindi per default prende C:
    All'inizio del programma devi controllare e fare un bel
    If My.Settings.percorso = "" Then
       My.Settings.percorso = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\CartellaProgramma"
    End If
    oppure
    If My.Settings.percorso = "" Then
       My.Settings.percorso = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\CartellaProgramma"
    End If
  • Re: Problemi Connessione Database al primo avvio soltanto

    Orione.... hai provato anche con le modifiche che ti ho suggerito o non lo hai fatto e sei fermo al primo post?
  • Re: Problemi Connessione Database al primo avvio soltanto

    Ciao oregon, ma quello che mi hai suggerito è già presente nel programma a dire il vero.

    il my.settings.percorso è una stringa vuota ma riempita subito nel load del login con il percorso che deve avere di default se controlli,
    il controllo se è vuoto l'ho messo infatti, ho fatto cosi:
    se il percorso è vuoto carica quello di default che è fisso....
    infatti è qui che non capisco...
    magari mi sfugge qualcosa dei tuoi suggerimenti, ma sembra ci sia già tutto o sbaglio?
    se vedi nel load del login ci sono tutti i controlli necessari per il percorso o sbaglio?
  • Re: Problemi Connessione Database al primo avvio soltanto

    Nel load c'è questo:
     Dim percorsodb As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\GestioneAtleti"
            If My.Settings.percorso = Nothing Then
                My.Settings.percorso = percorsodb
                My.Settings.Save()
            End If
Devi accedere o registrarti per scrivere nel forum
21 risposte