Newsgroup: it.comp.appl.access
Titolo: Textbox ciclato in funzione

Ciao a tutti.
Ho trovato un modulo per riallegare le tabelle in automatico. Funziona tutto benissimo però vorrei implementarla con una cosetta. Ho realizzato una form "frmInizio" nella quale ho messo una casella di testo "testo2". In questa casella vorrei far comparire la tabella che si sta collegando in quel momento. La funzione comprende una stringa che fa comparire la tabella che si sta collegando nella SysCmd e questa funziona. La funzione è la seguente:
 
Function fRefreshLinks() As Boolean
Dim strMsg As String, collTbls As Collection
Dim i As Integer, strDBPath As String, strTbl As String
Dim dbCurr As Database, dbLink As Database
Dim tdfLocal As TableDef
Dim varRet As Variant
Dim strNewPath As String
Dim x As Integer
 
 
Const cERR_USERCANCEL = vbObjectError + 1000
Const cERR_NOREMOTETABLE = vbObjectError + 2000
 
    On Local Error GoTo fRefreshLinks_Err
 
    'If MsgBox("Are you sure you want to reconnect all Access tables?", _
     '       vbQuestion + vbYesNo, "Please confirm...") = vbNo Then Err.Raise cERR_USERCANCEL
 
    'First get all linked tables in a collection
    Set collTbls = fGetLinkedTables
 
    'now link all of them
    Set dbCurr = CurrentDb
 
    'strMsg = "Do you wish to specify a different path for the Access Tables?"
 
    'If MsgBox(strMsg, vbQuestion + vbYesNo, "Alternate data source...") = vbYes Then
    '    strNewPath = fGetMDBName("Please select a new datasource")
    'Else
        'strNewPath = vbNullString
 
        strNewPath = DLookup("[PercorsiTabelle]", "qryUtenti")
 
        'End If
'x = 0
 
 
    For i = collTbls.Count To 1 Step -1
        strDBPath = fParsePath(collTbls(i))
        strTbl = fParseTable(collTbls(i))
 
        'Questa è la string per far comparire la tabella in collegamento nella 
        'casella di testo che non funziona
 
        Forms!frmInizio!Testo2 = strTbl '"Sto riallegando " & strTbl & "...."
 
 
        'Questa invece fa comparire la tabella in collegamento nella SysCmd e funziona
 
 
        varRet = SysCmd(acSysCmdSetStatus, "Sto riallegando... '" & strTbl & "'....")
 
 
        If Left$(strDBPath, 4) = "ODBC" Then
            'ODBC Tables
            'ODBC Tables handled separately
           ' Set tdfLocal = dbCurr.TableDefs(strTbl)
           ' With tdfLocal
           '     .Connect = pcCONNECT
           '     .RefreshLink
           '     collTbls.Remove (strTbl)
           ' End With
        Else
            If strNewPath <> vbNullString Then
                'Try this first
                strDBPath = strNewPath
            Else
                If Len(Dir(strDBPath)) = 0 Then
                    'File Doesn't Exist, call GetOpenFileName
                    strDBPath = fGetMDBName("'" & strDBPath & "' not found.")
                    If strDBPath = vbNullString Then
                        'user pressed cancel
                        Err.Raise cERR_USERCANCEL
                    End If
                End If
            End If
 
            'backend database exists
            'putting it here since we could have
            'tables from multiple sources
            Set dbLink = DBEngine(0).OpenDatabase(strDBPath)
 
            'check to see if the table is present in dbLink
            strTbl = fParseTable(collTbls(i))
            If fIsRemoteTable(dbLink, strTbl) Then
                'everything's ok, reconnect
                Set tdfLocal = dbCurr.TableDefs(strTbl)
                With tdfLocal
                    .Connect = ";Database=" & strDBPath
                    .RefreshLink
                    collTbls.Remove (.Name)
                End With
            Else
                Err.Raise cERR_NOREMOTETABLE
            End If
        End If
     'x = x + 1
     'Test x
 
 
    Next
    fRefreshLinks = True
    varRet = SysCmd(acSysCmdClearStatus)
 
'Questa compila correttamente la casella di testo al termine del ciclo
 
    Forms!frmInizio!Testo2 = "Tabelle riallegate con successo!"
    'MsgBox "All Access tables were successfully reconnected.", _
     '       vbInformation + vbOKOnly, _
      '      "Success"
 
 
fRefreshLinks_End:
    Set collTbls = Nothing
    Set tdfLocal = Nothing
    Set dbLink = Nothing
    Set dbCurr = Nothing
    Exit Function
fRefreshLinks_Err:
    fRefreshLinks = False
    Select Case Err
        Case 3059:
 
        Case cERR_USERCANCEL:
            MsgBox "No Database was specified, couldn't link tables.", _
                    vbCritical + vbOKOnly, _
                    "Error in refreshing links."
            Resume fRefreshLinks_End
        Case cERR_NOREMOTETABLE:
            MsgBox "Table '" & strTbl & "' was not found in the database" & _
                    vbCrLf & dbLink.Name & ". Couldn't refresh links", _
                    vbCritical + vbOKOnly, _
                    "Error in refreshing links."
            Resume fRefreshLinks_End
        Case Else:
            strMsg = "Error Information..." & vbCrLf & vbCrLf
            strMsg = strMsg & "Function: fRefreshLinks" & vbCrLf
            strMsg = strMsg & "Description: " & Err.description & vbCrLf
            strMsg = strMsg & "Error #: " & Format$(Err.Number) & vbCrLf
            MsgBox strMsg, vbOKOnly + vbCritical, "Error"
            Resume fRefreshLinks_End
    End Select
 
End Function
 
 
Qualcuno sa come mai?
Grazie
Ciao
Stefano

 Forms!frmInizio!Testo2 = strTbl '"Sto riallegando " & strTbl & "...."
 
Suppongo che intendi:
 
Forms!frmInizio!Testo2 = "Sto riallegando '" & strTbl & "'...."
 
Dopo l'esecuzione del codice nella casella di testo ti viene mostrato
il nome dell'ultima tabella? In questo caso il problema č l'aggiornamento
della maschera che non succede prima della fine codice.
 
Puoi provare questo commando dopo la riga di sopra:
 
DoEvents
 
Trovi piů informazione se premi <F1> nel VBE mentre il cursore
si trova nella parola.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

 Access FAQ:  
http://www.donkarl.com/it
 
 
Sì intendo la stringa come l'hai messa tu. Ho fatto talmente tante prove che mi sono dimenticato di sistemare la stringa prima di pubblicarla.
Comunque ci ho aggiunto il DoEvents e funziona!
Adesso voglio capire però come mai ho dovuto fare così. 
Grazie mille!
Stefano

 Adesso voglio capire però come mai ho dovuto fare così.
 
È per questo che ti ho consigliato di leggere la guida su DoEvents.
