Problema limite numero tabelle collegate da BE a FE

di il
20 risposte

20 Risposte - Pagina 2

  • Re: Problema limite numero tabelle collegate da BE a FE

    Se non fai debug difficilmente ne esci fuori ...

    Comunque da quello che scrivi probabilmente ti manca (o non esegui) :
    
    	rs.MoveNext
    
    lo scorrimento del recordset.
  • Re: Problema limite numero tabelle collegate da BE a FE

    @Alex ha scritto:


    ...ma se apri la Tabella MsysObjects, con le Tabelle LINKATE, trovi in chiaro la stringa alla Colonna CONNECT, devi ricostruire quella...!
    Confesso che non so se sia sempre stato così ma nella versione 2013 la connection string salvata nella tabella MsysObjects non contiene né l'utente né la sua password rendendo (forse) superflua la rimozione del link alle tabella alla chiusura dell'applicativo.
  • Re: Problema limite numero tabelle collegate da BE a FE

    max.riservo ha scritto:


    Se non fai debug difficilmente ne esci fuori ...

    Comunque da quello che scrivi probabilmente ti manca (o non esegui) :
    
    	rs.MoveNext
    
    lo scorrimento del recordset.
    buongiorno max, il codice che utilizzo è questo, consigliatomi da @Alez
    Dim rs       As DAO.Recordset
    Dim tdf      As DAO.TableDef
    Dim db       As DAO.database
    
    Dim strSQL As String, strPercorso As String, LinkBE As String, strPassword As String
    strPassword = "password"
    strSQL = cLnkTbl
    LinkTbl = False
    
    strPercorso = CurrentProject.Path & "\"
    LinkBE = strPercorso & "BE.accdb"
    
    
    Set rs = DBEngine(0)(0).OpenRecordset(strSQL) ' elenco tabelle da collegare
    If Not (rs.BOF And rs.EOF) Then
    
        Do Until rs.EOF
        rs.MoveFirst
            If TableExist(DBEngine(0)(0), rs.Fields(0).Value) Then
                DBEngine(0)(0).TableDefs.Delete rs.Fields(0).Value
            End If
            Set tdf = DBEngine(0)(0).CreateTableDef(rs.Fields(0).Value)
          
        
            tdf.Connect = ";DATABASE=" & LinkBE & ";PWD=" & strPassword & ";"
            tdf.SourceTableName = rs.Fields(0).Value
            DBEngine(0)(0).TableDefs.Append tdf
            
            rs.MoveNext
        Loop
    End If
    LinkTbl = True
    Exit_Here:
    
    rs.Close
    Set rs = Nothing
    Exit Function
    
    il comando rs.MoveNext viene gestito ma poi ritorna sulla prima tabella con rs.MoveFirst per cui il loop fa un avanti/dietro senza mai terminare...come se non uscisse mai dalla verifica dell'esistenza di tabelle linkate ma ad Alex funge a me invece
  • Re: Problema limite numero tabelle collegate da BE a FE

    max.riservo ha scritto:


    @Alex ha scritto:


    ...ma se apri la Tabella MsysObjects, con le Tabelle LINKATE, trovi in chiaro la stringa alla Colonna CONNECT, devi ricostruire quella...!
    Confesso che non so se sia sempre stato così ma nella versione 2013 la connection string salvata nella tabella MsysObjects non contiene né l'utente né la sua password rendendo (forse) superflua la rimozione del link alle tabella alla chiusura dell'applicativo.
    In effetti NON è più visibile, ma prova ad aprire un ACCDB Nuovo e linkati alla Linked del Client... che succede...?
  • Re: Problema limite numero tabelle collegate da BE a FE

    zio Ken ha scritto:


    max.riservo ha scritto:


    Se non fai debug difficilmente ne esci fuori ...

    Comunque da quello che scrivi probabilmente ti manca (o non esegui) :
    
    	rs.MoveNext
    
    lo scorrimento del recordset.
    buongiorno max, il codice che utilizzo è questo, consigliatomi da @Alez
    Dim rs       As DAO.Recordset
    Dim tdf      As DAO.TableDef
    Dim db       As DAO.database
    
    Dim strSQL As String, strPercorso As String, LinkBE As String, strPassword As String
    strPassword = "password"
    strSQL = cLnkTbl
    LinkTbl = False
    
    strPercorso = CurrentProject.Path & "\"
    LinkBE = strPercorso & "BE.accdb"
    
    
    Set rs = DBEngine(0)(0).OpenRecordset(strSQL) ' elenco tabelle da collegare
    If Not (rs.BOF And rs.EOF) Then
    
        Do Until rs.EOF
        rs.MoveFirst
            If TableExist(DBEngine(0)(0), rs.Fields(0).Value) Then
                DBEngine(0)(0).TableDefs.Delete rs.Fields(0).Value
            End If
            Set tdf = DBEngine(0)(0).CreateTableDef(rs.Fields(0).Value)
          
        
            tdf.Connect = ";DATABASE=" & LinkBE & ";PWD=" & strPassword & ";"
            tdf.SourceTableName = rs.Fields(0).Value
            DBEngine(0)(0).TableDefs.Append tdf
            
            rs.MoveNext
        Loop
    End If
    LinkTbl = True
    Exit_Here:
    
    rs.Close
    Set rs = Nothing
    Exit Function
    
    il comando rs.MoveNext viene gestito ma poi ritorna sulla prima tabella con rs.MoveFirst per cui il loop fa un avanti/dietro senza mai terminare...come se non uscisse mai dalla verifica dell'esistenza di tabelle linkate ma ad Alex funge a me invece
    Ovvio se all'interno del LOOP hai il MoveFirst...
    
    Set rs = DBEngine(0)(0).OpenRecordset(strSQL) ' elenco tabelle da collegare
    If Not (rs.BOF And rs.EOF) Then
    
        Do Until rs.EOF
        rs.MoveFirst <------ PERCHE' E' QUI'....??????
    Quel MoveFirst NON SERVE è sicuramente in First, ma eventualmente va messo PRIMA del Do Until....

    Come dobbiamo considerare questi errori...? "Sbadataggine" o "carenza"...?
  • Re: Problema limite numero tabelle collegate da BE a FE

    Purtroppo lo ammetto, carenza e sbadataggine...ho risolto grazie ai vostri sempre preziosissimi consigli. Buon weekend
Devi accedere o registrarti per scrivere nel forum
20 risposte