+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Errore 3265

  1. #1
    L'avatar di inishmore
    inishmore non  in linea Novello
    Salve ragazzi, sto realizzando un'applicazione in Access 2010 divisa in FE e BE. Il BE contiene, oltre a tutte le tabelle dati, anche la tabella con i nomi delle tabelle da linkare. All'apertura della maschera di login dal FE, tramite chiamata a funzione, carico i link. Ho creato un modulo "basGLOBAL" in cui ho inserito il seguente codice:

    Public Const strLnkTab As String = "tabLnkTables"
    Public Const DB_SERVER As String = "SERVER.accdb"
    
    Public Function getConnection() As String
        getConnection = CurrentProject.Path & "\" & DB_SERVER
    End Function
    
    Public Function OpenConnection()
        On Error GoTo ERR_LINKED
        Dim strTabName As String
        Dim strPathBE As String
        Dim dbOpenConn As DAO.Database
        Dim rsOpenConn As DAO.Recordset
    
        strPathBE = getConnection()
    
        Set dbOpenConn = DBEngine.OpenDatabase(getConnection())
        Set rsOpenConn = dbOpenConn.OpenRecordset(strLnkTab, dbOpenDynaset, dbReadOnly)
    
        rsOpenConn.MoveFirst
        Do Until rsOpenConn.EOF
            strTabName = rsOpenConn.Fields(0).Value
            CurrentDb.TableDefs.Delete strTabName
            DoCmd.TransferDatabase acLink, "Microsoft Access", strPathBE, acTable, strTabName, strTabName
            rsOpenConn.MoveNext
        Loop
    
    EXIT_HERE:
        On Error Resume Next
        rsOpenConn.Close
        Set rsOpenConn = Nothing
        dbOpenConn.Close
        Set dbOpenConn = Nothing
        Exit Function
    
    ERR_LINKED:
        MsgBox "Errore n " & Err.Number & ": " & Err.Description, vbExclamation, "Errore di sistema"
        Resume EXIT_HERE
    End Function
    
    Poi nell'evento Open della maschera "frmLogin":

    Private Sub Form_Open(Cancel As Integer)
        Call OpenConnection
    End Sub
    
    Purtroppo non vuol saperne di funzionare. Continua a restituirmi "errore 3265: Elemento non trovato in questo insieme". Ho consultato l'help del programma, controllato nomi di variabili, cercato in rete... ma niente. Sto uscendo pazzo, non so pi che pesci pigliare. Spero che qualcuno possa darmi una mano.

    Ciao Alberto

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    La gestione errori cos come stata implementata serve a poco se non a ricevere l'errore di "Item non presente nell'insieme"...!

    Ora se per tu provi a guardare il codice non ci sono molti insiemi usati... hai solo TableDefs...!!! Quindi mi pare abbastanza probabile che tu stia cercando di Cancellare una Tabella che non presente.
    Fai un Debug derio, stampa con Debug.Print passo passo quello che pu servirti per capire dove sia il problema...!
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    L'avatar di inishmore
    inishmore non  in linea Novello
    Ciao Alex e grazie per la dritta.
    Sai com'... quando il cervello va in pappa e difficile ragionare e si fanno cavolate. In effetti il problema tutto l: non posso cancellare una Tabella che non c'! A questo punto direi che sufficiente modificare il codice in questo modo perch tutto funzioni:

        On Error Resume Next
        rsOpenConn.MoveFirst
        Do Until rsOpenConn.EOF
            strTabName = rsOpenConn.Fields(0).Value
            CurrentDb.TableDefs.Delete strTabName
            DoCmd.TransferDatabase acLink, "Microsoft Access", strPathBE, acTable, strTabName, strTabName
            rsOpenConn.MoveNext
        Loop
    
    In alternativa pensavo di rimuovere quella riga ed implementare una nuova funzione che alla chiusura dell'applicazione mi rimuova tutti i collegamenti. Cosa ne pensi? Ho iniziato da poco a programmare in VBA e quindi devo ancora matuare l'esperienza che mi garantisca una corretta logica di programmazione. A tal proposito volevo anche chiederti un consiglio sulla gestione degli errori.

  4. #4
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    PErsonalmente avrei scritto una gestione errori e se l'errore=3265 allora e solo allora faccio il RESUME NEXT, come hai scritto tu invece ANNULLI TUTTO.... direi che in questo contesto la tua ipotesi fragile...!
    Public Function OpenConnection()
        On Error GoTo ERR_LINKED
        .....
    EXIT_HERE:
        On Error Resume Next
        rsOpenConn.Close
        Set rsOpenConn = Nothing
        dbOpenConn.Close
        Set dbOpenConn = Nothing
        Exit Function
    
    ERR_LINKED:
        Select Case Err.Number
             Case Is=3265
                  Resume Next
             Case Else
                  MsgBox "Errore n " & Err.Number & ": " & Err.Description, vbExclamation, "Errore di sistema"
         End Select
         Resume EXIT_HERE
    End Function
    
    FOssi in te farei anche emergere gli errori in caso di Mancato BE ecc... devi simulare tutte le casistiche che si potrebbero verificare ed identificare gli SPECIFICI ERR.NUMBER e gestirli nella Rotuine degli errori in modo da non essere scoperto...
    ℹ️ Leggi di pi su @Alex ...

  5. #5
    L'avatar di inishmore
    inishmore non  in linea Novello
    Ottimo spunto Alex, grazie! Studier la procedura cercando di evidenziare le anomalie possibili e gestire i relativi Err.Number cos da sapere sempre quello che succede in caso di errore. Per quanto riguarda la rimozione dei collegamenti... ritieni sia opportuno rimuoverli alla chiusura dell'applicazione?

  6. #6
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Decisamente si.
    ℹ️ Leggi di pi su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. errore di run time 3061 e errore data (medesimo codice)
    Da tolya90 nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 07-11-2016, 15:04
  2. Errore runtime 3043 - errore di rete o disco
    Da h0m3r nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 04-02-2011, 21:15
  3. Errore di compilazione: errore di caricamento dll
    Da nogero nel forum Microsoft Word
    Risposte: 9
    Ultimo Post: 25-11-2009, 20:11
  4. errore run time 3265
    Da francof nel forum Visual Basic 6
    Risposte: 13
    Ultimo Post: 28-07-2006, 16:40
  5. Errore run-time '3265'
    Da Stefanone nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 14-03-2006, 16:26