Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124

    [Access] collegamento dinamico a tabelle esterne

    Ciao a tutti.
    Avrei una domanda su Access 2003: è possibile creare una form con un campo nel quale inserire il path di collegamento a tabelle esterne?
    Faccio un esempio: ho creato un'applicazione in Access le cui tabelle sono collegate ad un database esterno posizionato in C:\test\database.
    Ora devo dare la mia applicazione ad un'altra persona, che però ha le stesse tabelle esterne posizionate in F:\test2\database2.
    A questo punto l'altra persona dovrebbe aprire l'applicazione Access che le ho dato e ricreare tutti i collegamenti alle tabelle esterne, ma io invece vorrei fare in modo che il path di collegamento a queste tabelle esterne sia settabile direttamente da una form di Access.
    E' possibile?

    Grazie

  2. #2
    post doppio. scusate.

  3. #3
    supponendo una tabella chiamata collegamento_tabelle contenente il solo campo nome_tabella sull'evento click di un pulsante inserisci:

    codice:
    dim rst As DAO.Recordset
    dim sql as string
    
    'apre recorset
    sql = "SELECT T_VERSIONE_NUOVA.data, T_VERSIONE_NUOVA.versione FROM T_VERSIONE_NUOVA ORDER BY T_VERSIONE_NUOVA.data DESC"
    Set rst = CurrentDb.OpenRecordset(sql)
         
        
        If Not rst.BOF Then 'verivica se il recordset non è vuoto
        
    	'scorro il recorset dal primo all'ultimo record
            With rst
                .MoveFirst 'posizionati sul primo record
               DoCmd.TransferDatabase acLink, "microsoft access", "F:\test2\database2.mdb", acTable, rst!nome_tabella, rst!nome_tabella, False
                .MoveNext 'passa al prossimo record
                Wend 'Not .EOF
            End With 'Rst
    	else
    msgbox "errore"
    end if
                  
            'chiudi e azzera il recordset
            rst.Close: Set rst = Nothing


    supponendo una tabella chiamata collegamento_tabelle contenente i campi nome_tabella e path (dove in path verrà scritto il percorso completo del database compresa l'estensione es. F:\test2\database2.mdb) sull'evento click di un pulsante inserisci:

    codice:
    dim rst As DAO.Recordset
    dim sql as string
    
    'apre recorset
    sql = "SELECT T_VERSIONE_NUOVA.data, T_VERSIONE_NUOVA.versione FROM T_VERSIONE_NUOVA ORDER BY T_VERSIONE_NUOVA.data DESC"
    Set rst = CurrentDb.OpenRecordset(sql)
         
        
        If Not rst.BOF Then 'verivica se il recordset non è vuoto
        
    	'scorro il recorset dal primo all'ultimo record
            With rst
                .MoveFirst 'posizionati sul primo record
               DoCmd.TransferDatabase acLink, "microsoft access", rst!path, acTable, rst!nome_tabella, rst!nome_tabella, False
                .MoveNext 'passa al prossimo record
                Wend 'Not .EOF
            End With 'Rst
    	else
    msgbox "errore"
    end if
                  
            'chiudi e azzera il recordset
            rst.Close: Set rst = Nothing

  4. #4
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Grazie.
    Una paio di domande per capire meglio:
    - in questo modo, se ad esempio nel mdb da collegare ho 100 tabelle, devo inserire nome e path di tutte e 100?

    - perchè la funzione scorre il recordset?

  5. #5
    Originariamente inviato da alexxxb
    Grazie.
    Una paio di domande per capire meglio:
    - in questo modo, se ad esempio nel mdb da collegare ho 100 tabelle, devo inserire nome e path di tutte e 100?
    si
    Originariamente inviato da alexxxb
    perchè la funzione scorre il recordset?.
    ammettiamo di avere la tabella compilata:
    nome_tabella path
    nome1 F:\test2\database2.mdb
    nome2 F:\test2\database2.mdb
    nome3 F:\test2\database2.mdb
    nome4 F:\test2\database2.mdb

    inizialmente il recorset punta al 1 record, per leggere tutti i dati devo scorrere man mano i record. è un pò come quando apri una maschera singola, all'inizio visualizzi solo il primo record e poi con i pulsanti di spostamento vai a vedere anche altri record. l'esempio non è proprio corretto ma dovrebbe farti capire perchè devo scorrere il recorset.

  6. #6
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Sto usando il secondo codice che mi hai postato (nome_tabella e path).
    Il debug mi ferma qui

    codice:
      Wend 'Not .EOF
    e mi da l'errore "Errore di compilazione: Wend senza While"

  7. #7
    codice:
    dim rst As DAO.Recordset
    dim sql as string
    
    'apre recorset
    sql = "SELECT T_VERSIONE_NUOVA.data, T_VERSIONE_NUOVA.versione FROM T_VERSIONE_NUOVA ORDER BY T_VERSIONE_NUOVA.data DESC"
    Set rst = CurrentDb.OpenRecordset(sql)
         
        
        If Not rst.BOF Then 'verivica se il recordset non è vuoto
        
    	'scorro il recorset dal primo all'ultimo record
            With rst
                .MoveFirst 'posizionati sul primo record
    	While Not.EOF 
               DoCmd.TransferDatabase acLink, "microsoft access", rst!path, acTable, rst!nome_tabella, rst!nome_tabella, False
                .MoveNext 'passa al prossimo record
                Wend 'Not .EOF
            End With 'Rst
    	else
    msgbox "errore"
    end if
                  
            'chiudi e azzera il recordset
            rst.Close: Set rst = Nothing
    mi era rimasto in tastiera il codice scritto in rosso. scusa.

  8. #8
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Ok, grazie.
    Scusa se ti stresso, ma non sono ferratissimo...

    Questa stringa SQL

    codice:
    sql = "SELECT T_VERSIONE_NUOVA.data, T_VERSIONE_NUOVA.versione FROM T_VERSIONE_NUOVA ORDER BY T_VERSIONE_NUOVA.data DESC"
    Come devo impostarla? A cosa corrispondono? Perchè mi va in errore su questo quando faccio click sul pulsante associato alla funzione

  9. #9
    Originariamente inviato da alexxxb
    Perchè mi va in errore su questo quando faccio click sul pulsante associato alla funzione
    perchè mi sono rinc.....nito, sai il caldo, l'età, il mio solo neurone andato in ferie.

    Originariamente inviato da alexxxb
    Questa stringa SQL

    codice:
    sql = "SELECT T_VERSIONE_NUOVA.data, T_VERSIONE_NUOVA.versione FROM T_VERSIONE_NUOVA ORDER BY T_VERSIONE_NUOVA.data DESC"
    Come devo impostarla?
    sostituiscila con questa:
    codice:
    sql = "SELECT * FROM collegamento_tabelle"
    in pratica gli dico di prendere tutti i dati di tutti i campi dalla tabella collegamento_tabelle

  10. #10
    Utente di HTML.it L'avatar di alexxxb
    Registrato dal
    Oct 2007
    Messaggi
    124
    Così funziona perfettamente!
    Grazie mille, sei stato gentilissimo.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.