Newsgroup: it.comp.appl.access
Titolo: [A2007] Riquadro di spostamento

Purtroppo mi trovo ad usare A2007...
Se imposto a non visibile il riquadro di spostamento, quello con
l'elenco oggetti del Db per capirci a SX, questo se ne frega altamente
nel caso in cui all'avvio su macro AutoExec faccia il Relink delle
tabelle...
Mi fa vedere non solo il Riquadro, ma anche l'aggiunta delle
Tabelle... e questo oltra a rallentare il tutto... non è quello che
voglio...!
Non sono certo ma credo che il problema sia il Relink, non nel codice
che funziona, ma nella metodologia con cui lo faccio.
Di fatto all'apertura non ho nessuna Tabella linkata, cancellate alla
precedente chiusura, quindi vengono inserite da nuovo usando
TransfertDatabase... ecc..., quindi è come andare a modificare il
progetto e sembra che l'antipatico di A2007 non reagisca come il
fratello A2003...!
C'è qualche impostazione particolare che mi è scappata o che deve
essere fatta...?
Tnx
@Alex

?
"@Alex"  ha scritto nel messaggio 
news:5b3c7902-4467-4563...@21g2000prv.googlegroups.com...




Tnx
@Alex
Ciao @Alex,
uso da tanto il 2007 ma non mi crea questo fastidio.
Il problema è da qualche altra parte

 Il problema da qualche altra parte
Ciao Massimiliano,
no purtroppo il problema è proprio quello che ho detto, evidentemente
tu segui la procedura del ripristino della proprietà CONNECT per il
RELINK... cosa che ho verificato non genera l'anomalia.
Se invece le LinkedTable non ci sono in quanto cancellate, quindi sono
da ricreare con Tabledefs oppure con l'importazione dal Server in
modalità acLink... accade quello che ti dico.... inspiegabilmente.
@Alex

@Alex
Mi accodo ad @Alex......io le ho provate veramente tutte (quelle che mi sono
venute in mente....) ma nn ho risolto.......in più il consiglio di Karl
(qualcosa tipo DatabaseWindow, table = hide adesso non mi sovviene) oltre a
non funzionare (a me chiaramente) in A2007, mi genera errori nel 2003....
-- 

 ha
scritto:

Ciao @Alex
ho avuto lo stesso problema che ho risolto in questo modo:
    Application.Echo False
	....... codice per il relink delle tabelle
        DoCmd.RunCommand acCmdWindowHide
    Application.Echo True
Se non dovesse funzionare e se per caso tuo db di partenza era in
formato Access 2003 poi convertito in formato 2007, prova anche a
creare un nuovo db nativo 2007 ed importare tutti gli oggetti.
A volte mi è capitato di osservare comportamenti bizzarri di db
convertiti poi risoltisi "magicamente" con l'importazione dei dati.
David

 David
Vi posto la soluzione che mi ha risolto tutto... è equivalente alla
mia prima, quindi distruggo sempre le LinkedTable alla chiusura del FE
e le ricostruisco all'apertura su macro AutoExec.
Chiaramente ho una LOCAL_TABLE con il nome delle Tabelle da LINKARE...
Public Const DB_LINKEDTABLE     As String = "_LINKED"
Public Const DB_SERVER          As String = "SERVER_RICETTE.mdb"
Public Function NewLinkTable() As Boolean
    Dim rs                          As DAO.Recordset
    Dim strConnection               As String
    Dim tdf                         As DAO.TableDef
    Dim msg                         As String
    On Error GoTo ERR_LINKED
    strConnection = CurrentProject.Path & "\" & DB_SERVER
    NewLinkTable = False
    ' ----------------------------------------------------------
    ' APRO UN RS CON L'ELENCO DELLE TABELLE DA LINKARE
    ' CONTENUTO NELLA TABELLA COPIATA [_TL]
    ' ----------------------------------------------------------
    Set rs = DBEngine(0)(0).OpenRecordset(DB_LINKEDTABLE,
dbOpenDynaset, dbReadOnly)
    If rs.EOF Then
        Exit Function
    End If
    rs.MoveFirst
    Do Until rs.EOF
        Set tdf =
CurrentDb.CreateTableDef(rs.Fields("NomeTabella").Value)
        tdf.SourceTableName = rs.Fields("NomeTabella").Value
        tdf.Connect = ";DATABASE=" & strConnection
        CurrentDb.TableDefs.Append tdf
        rs.MoveNext
    Loop
    NewLinkTable = True
    DoCmd.OpenForm "ElencoRicette"
Exit_Here:
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    Set tdf = Nothing
    Exit Function
ERR_LINKED:
    Select Case Err.Number
        Case Is = 3265
            msg = "La tabella allegata " &
rs.Fields("NomeTabella").Value & ", necessaria "
            msg = msg & "all'elaborazione, non è stata trovata nel
presente database." & vbCrLf
            msg = msg & vbCrLf & "Contattare supporto informatico."
            MsgBox msg, 16, "ELABORAZIONE INTERROTTA!!!"
        Case Is = 3011
            msg = "Una tabella allegata LOCALE, necessaria
all'elaborazione, "
            msg = msg & "non è stata trovata nel database remoto" &
vbCrLf
            msg = msg & vbCrLf & rs.Fields("NomeTabella").Value &
vbCrLf & vbCrLf
            msg = msg & "al quale ci si è connessi." & vbCrLf
            msg = msg & vbCrLf & "Contattare supporto informatico."
            MsgBox msg, 16, "ELABORAZIONE INTERROTTA!!!"
        Case Is = 3049
            msg = "Il file scelto" & vbCrLf & strConnection & vbCrLf
            msg = msg & "è un database danneggiato o non è un database
Access." & vbCrLf
            msg = msg & "Controllare di aver selezionato il file
giusto o tentare di "
            msg = msg & "recuperarlo chiudendo il presente database e
selezionando il "
            msg = msg & "menu File-Recupera database." & vbCrLf &
vbCrLf
            msg = msg & "In caso di ulteriore insuccesso contattare il
supporto informatico."
            MsgBox msg, 16, "ELABORAZIONE INTERROTTA!!!"
        Case Else
            msg = "Errore non prevedibile N°." & Err & vbCrLf
            msg = msg & """" & Error(Err) & """" & vbCrLf
            msg = msg & vbCrLf & "Contattare supporto informatico."
            MsgBox msg, 16, "ELABORAZIONE INTERROTTA!!!"
    End Select
    Resume Exit_Here
End Function
Questo il codice per ELIMINARE le LINKED:
Public Function CLOSE_DB()
    ' ----------------------------------------------------------
    ' FUNZIONE CHE RIMUOVE TUTTE LE CONNESSIONI E LE
    ' TABELLE COPIATE IN LOCALE
    ' ----------------------------------------------------------
    On Error GoTo Err_Close
    Dim rs                      As DAO.Recordset
    Set rs = DBEngine(0)(0).OpenRecordset(DB_LINKEDTABLE,
dbOpenDynaset, dbReadOnly)
    rs.MoveFirst
    Do Until rs.EOF
        DoCmd.DeleteObject acTable, rs.Fields("NomeTabella").Value
        rs.MoveNext
    Loop
Exit_Here:
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    Exit Function
Err_Close:
    ' ----------------------------------------------------------
    ' Se non trova la Tabella da ELIMINARE riprende ERR=7874
    ' ----------------------------------------------------------
    If Err.Number = 7874 Then Resume Next
    MsgBox Err.Number & " " & Err.Description
    Resume Exit_Here
End Function
Saluti
@Alex

@Alex
Scusami @Alex, per capire......cosa c'è di differente nel codice nuovo
rispetto al vecchio?? Di fatto utilizzi sempre CurrentDb.TableDefs.Append tdf
 Non ti fa più quella cosa antipatica del navigatio panel??
-- 


Io non usavo TableDefs prima ma TransfertDatabase.
Ora il Tabledefs lo puoi usare se non elimini le Tabelle, quindi
RefreshLink e Connect=connectionString...
Se elimini le tabelle un'altro modo per ricrearle è DAO con
CreateTableDefs.
Quindi da quanto ho ipotizzato, ma non ho certezza, il problema è dato
dall'inserimento di Oggetti nel progetto usando il metodo di
Application.
Usando DAO non si passa per Application.... credo sia tutto quì... e
credo sia molto probabilmente un Baco...
Non ho altre spiegazioni da dare... ed anche questa è solo una
considerazione logica ma non provata.
@Alex

@Alex
Ok, grazie mille, vedo di indagare un po'.....
--