Gestione Tabelle collegate

di il
12 risposte

Gestione Tabelle collegate

Salve!

mi e' sorto un problema
ho una file .mdb collegato a tabelle via ODBC a sql server

per agevolare il mio lavoro
dal mio pc ho collegato il tutto a sql locale

poi quando vado a trasferire il tutto sul pc del cliente devo modificare il collegamento

quindi strumenti GESTIONE TABELLE COLLEGATE

se cambio il collegamento ODBC tutto ok MA MI CHIEDE SEMPRE LA PASSWORD-

Non c'e' un modo di far ricordare la password quando riallineo GESTIONE TABELLE COLLEGATE?

l'unico modo e' creare un database vuoto e creare da 0 il collegamento e importare query maschere e moduli?

grazie anticipatamente

PFMarro

12 Risposte

  • Re: Gestione Tabelle collegate

    Io solitamente mi comporto così:
    Mi creo una Tabella locale in Access chiamata [_LinkedTables] nella quale inserisco i Nomi delle Tabelle da LINKARE sul SERVER.

    A questo punto su apertura dell'applicativo chiamo la Routine che RIPRISTINA le connessioni:
    
    Private Const cCnnString as String="ODBC;DRIVER={SQL Server};SERVER=NOME_SERVER;UID=USER_NAME;PWD=PASSWORD;DATABASE=DB_NAME;LANGUAGE=Italiano;
    
    Private Const cLnkTbl As String = "_LinkedTables"
        
    Private Function LinkODBCTbl() As Boolean
        On Error GoTo Err_RlnkODBCTbl
        Dim tdf As DAO.TableDef
        Dim rs As DAO.Recordset
        Dim S As String
        Dim strSQL As String
        LinkODBCTbl = False
        strSQL = cLnkTbl
        Set rs = CurrentDb.OpenRecordset(strSQL)
        rs.MoveFirst
        Do Until rs.EOF
            S = rs.Fields(0).value
            If fTableExist(S) Then CurrentDb.TableDefs.Delete S
            Set tdf = CurrentDb.CreateTableDef(S)
            tdf.Connect = cCnnString
            tdf.SourceTableName = S
            CurrentDb.TableDefs.Append tdf
            Set tdf = Nothing
            rs.MoveNext
        Loop
        LinkODBCTbl =     True
        Exit_Here:
        rs.Close
        Set rs = Nothing
        Set tdf = Nothing
        Exit Function
    Err_RlnkODBCTbl:
        LinkODBCTbl = False
        MsgBox "Impossibile connettersi al Server"
        Resume Exit_Here
    End Function
    
    Function fTableExist(strName As String) As Boolean
        On Error GoTo ERR_Exist
        Dim obj As Object
        Set obj = CurrentDb.TableDefs(strName)
        fTableExist = True
    Exit_Here:
        Exit Function
    ERR_Exist:
        fTableExist = False
        Resume Exit_Here
    End Function
    Una cosa simile... provala bene perchè l'ho scritta senza riverificarla...
  • Re: Gestione Tabelle collegate

    Ringrazio del messaggio

    mi metto subito all'opera per provarlo

    Grazie

    PFMarro
  • Re: Gestione Tabelle collegate

    [quote="@Alex"]Io solitamente mi comporto così:
    Mi creo una Tabella locale in Access chiamata [_LinkedTables] nella quale inserisco i Nomi delle Tabelle da LINKARE sul SERVER.


    SALVE!

    ho provato il programma una domanda

    che nome devo mettere della tabella?
    sembra banale la domanda ma noto che in

    sqlServer il nome della tabella e' as es. dbo_AWDT_Nazioni

    mentre in access il collegamento e' dbo.AWDT_Nazioni

    cambia da "_" a "."

    Grazie anticipatamente

    PFMarro
  • Re: Gestione Tabelle collegate

    Salve.

    Se fai entrambe le prove con una sola tabella da ricollegare... quanto tempo pensi di perdere in più rispetto alla risposta che riceveresti quì nel forum...?
  • Re: Gestione Tabelle collegate

    Credimi prima di scrivere ho provato!!!

    ecco la stringa di connessione

    Provider=SQLNCLI10.1;Integrated Security'';Persist Security Info=False;User ID=sa;PWD=xxxx;Initial Catalog=aziendasrl;Data Source=4srvmio;Initial File Name=";Server SPN=''




    ecco il file .dsn
    ho aggiunto solo il parametro password!


    [ODBC]
    DRIVER=SQL Server
    UID=sa
    Regional=Yes
    StatsLog_On=Yes
    QueryLog_On=Yes
    LANGUAGE=Italiano
    DATABASE=aziendasrl
    WSID=UTENTE-PC
    APP=Sistema operativo Microsoft® Windows®
    SERVER=4SRVMIO


    mi compare sempre "Impossibile connettersi al Server"

    PFMarro
  • Re: Gestione Tabelle collegate

    Riesci a collegare le tabelle Manualmente...?

    Immagino di si, allora la cosa è più semplice di quanto pensi, perchè se vai dal menù
    Strumenti--->Opzioni--->TAB[Visualizzazione]---> ad abilitare gli Oggetti di Sistema, ti apparirà una Tabella chiamata MSysObject.
    Se la apri vedrai un'elenco di Record, le prime 2 Colonne sono Connect/Database.
    Se copi le stringhe relative alle Tabelle ti accorgerai che IN CHIARO vedi tutto quello che serve, e questo è il motivo per il quale le tabelle linkate si DISTRUGGONO e si RIPRISTINANO...

    A quel punto la stringa che recuperi la passi nel codice.
  • Re: Gestione Tabelle collegate

    Molto gentile

    seguito i tuoi passi
    copiata stringa
    e fatto la prova sia col nome dbo_ o dbo.

    ma nulla da fare "Impossibile connettersi al Server"

    sODBC="DSN=sqlCliente;UID=sa;PWD=XXX;DATABASE=aziendasrl;LANGUAGE=Italiano;Regional=Yes"
  • Re: Gestione Tabelle collegate

    Prova a togliere dbo e lasciare solo il Nome... è l'ultima chance... non saprei cosa suggerirti mi pare veramente anomalo...
  • Re: Gestione Tabelle collegate

    Nel frattempo ho provato a scrivere


    Sub prova()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim strConnect, strSQL1 As String

    strConnect = "DSN=dns_file_cliente;UID=sa;PWD=xxxx;DATABASE=aziendasrl;LANGUAGE=Italiano;Regional=Yes"

    Set db = OpenDatabase("DatabaseAzienda", dbDriverNoPrompt, False, strConnect)

    Debug.Print db.Name
    Debug.Print db.TableDefs(1).Name ' mi scrive ----> dbo.AWDT_Nazioni

    End Sub
  • Re: Gestione Tabelle collegate

    Bene direi un primo passo... anche se hai usato un DSN... e si potrebbe fare a meno...!
    Ora prova a far connettere una sola tabella semplificando il codice che ti ho passato prima
    
    
    Dim tdf as Access.Tabledef
    Dim strConnect as String
    
    strConnect = "DSN=dns_file_cliente;UID=sa;PWD=xxxx;DATABASE=aziendasrl;LANGUAGE=Italiano;Regional=Yes"
     
           Set tdf = CurrentDb.CreateTableDef("AWDT_Nazioni")  ' Questo nome può essere diverso dal SourceTableName
            tdf.Connect = cCnnString
            tdf.SourceTableName = "dbo.AWDT_Nazioni"  ' Questo deve essere giusto...
            CurrentDb.TableDefs.Append tdf
            Set tdf=Nothing
    Se funziona è questione della stringa di connessione... e mi pare anomalo che con DSN funzioni...
  • Re: Gestione Tabelle collegate

    Prima di tutto grazie della dritta


    Public Function linkODBCTbl2()
    Dim tdf As dao.TableDef
    Dim strConnect As String

    strConnect = "DSN=dns_file_cliente;UID=sa;PWD=xxxx;DATABASE=aziendasrl;LANGUAGE=Italiano;Regional=Yes"

    Set tdf = CurrentDb.CreateTableDef("AWDT_Nazioni") ' Questo nome può essere diverso dal SourceTableName
    tdf.Connect = strConnect ' cCnnString
    tdf.SourceTableName = "dbo.AWDT_Ballotti" ' Questo deve essere giusto...
    CurrentDb.TableDefs.Append tdf
    Set tdf = Nothing
    End Function


    se metto cosi' ERRORE ISAM

    se metto tdf.Connect = cCnnString
    non essendo definita la stringa cCnnString si apre la finestra che mi chiede tutti i parametri e allora riesco ad allineare

    non capisco dov'e' l'errore nella stringa di connessione


    e per non usare un DSN


    riGrazie
  • Re: Gestione Tabelle collegate

    L'ultima idea è quella di Linkare le Tabelle a MANO, poi CICLARE la collection Tabledefs
    per stampare in Debug la stringa...
    
    Dim tdf as DAO.Tabledef
    For each tdf in CurrentDb.Tabledefs
       If Len(tdf.Connect)>0 Then
           Debug.Print "Tabella=" & tdf.Name & " Connection=" & tdf.Connect
       End If
    Next
    Ovviamente vai a visualizzare con [CTRL+G] in finestra immediata...
    Poi con le varie stringhe e tabelle riproverei il tentativo di CONNESSIONE singola...
Devi accedere o registrarti per scrivere nel forum
12 risposte