Newsgroup: it.comp.appl.access
Titolo: collegamento tabelle

E' possibile inserire un tasto nella maschera iniziale
che possa permettere all'utente , una volta lanciato il programma,
di gestire il collegamento con le tabelle collegate al programma
stesso ? del tipo : avere la possibilità di ricercare la base dati
in una altra directory ?
grazie
Alfonso

 wrote in message
6g7O7.217104$sq5.10...@news.infostrada.it...

 Sì è possibile, nel sito comune ci dovrebbe essere qualcosa in merito.
Ciao
DBA



Salve, sono uno nuovo.... Emanuele
prova le seguenti istruzioni...
Dim strpath As String
Dim a, b As Variant
a = Array("merce", "ditta")
strpath = Application.CurrentProject.Path & "\Dati" &
Application.CurrentProject.Name
On Error Resume Next
For Each b In a
    DoCmd.DeleteObject acTable, b
    DoCmd.TransferDatabase acLink, "Microsoft Access", strpath,
acTable, b, b
Next

 Next
Ciao Nuovo Emanuele.
Mi ha stupito questo codice, che non ho provato, ma immagino
funzioni benissimo.
Il fatto è che non capisco perchè non ricorrere alla proprietà
TableDef.Connect=Path di ogni singola Tabella piuttosto che cancellarle e 
Reimportarle collegate.
Ritengo sia inutilmente più lungo, anche se forse la differenza di tempo
non si nota...!
Scusa l'intromissione, era solo curiosità...!
@Alex
-- 
Posted from  [62.98.10.59] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


wrote:

Salve,
probabilmente hai ragione, ma non sono molto pratico della
programmazione in access  e questa soluzione fatta in casa l'ho
realizzata più di un anno fa,
con il numero di archivi ed i computer che uso non ha problemi di
velocità, cercherò di trovare il tempo di seguire il tuo suggerimento.
In fondo sto' cercando di leggere questa newsgroup proprio per
imparare. 
Sono all'inizio della lettura delle lettere e percio' per ora mi
limitero' a rispondere senza fare domande, penso sia corretto
comportarsi così.
Saluti.
Emyr

 Emyr
In realtà, il mio era un quesito proprio per capire se ciò che hai fatto,
che è tutt'altro che da pricipiante, potesse avere delle agevolazioni
rispetto altri metodi che non avevo considerato.
In oltre la programmazione è aperta a tutte le forme artistiche, nel senso
che per ottenere lo stesso risultato ci sono molte possibilità..., l'unica
cosa da considerare un "DOGMA" sono le convenzioni e la logica attribuzione
corretta degli elementi, metodi e proprietà degli oggetti.!
Ciao.
@Alex
-- 
Posted from  [62.98.48.251] 


 wrote in message

finalmente ho avuto tempo di provare il tuo suggerimento e ne sono
venute fuori queste funzioni....
Dim strpath As String
strpath = aprifile("mdb", Application.CurrentProject.Path) ' Fa
scegliere un file mdb all'utente partendo dalla posizione corrente
If strpath = "" Then Exit Sub ' se non indica nessun file annnulla
l'azione
Dim db As Database
Dim tabelle As TableDef
Set db = CurrentDb
On Error Resume Next ' in caso di errori continua
For Each tabelle In db.TableDefs ' scorre le tabelle dell'archivio
    If tabelle.Connect <> "" Then
        tabelle.Connect = ";DATABASE=" & strpath  ' se la tabella è
esterna la ricollega al file indicato
        tabelle.RefreshLink
    End If
Next
Set db = Nothing
' se voglio solo alcune tabelle posso usare il fatto che posso dire
tabelle(b) usando for each b in a e ciclo for e un array dei nomi che
mi interessano
queste le ho trovate su un file speditomi da ThaiChi (molto utili,
quelle su sitocomune non funzionavanop sul mio SO)
naturalmente le ho un pò modificate
Option Compare Database
Option Explicit
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
            Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME)
As Long
Private Type OPENFILENAME
   lStructSize As Long
   hwndOwner As Long
   hInstance As Long
   lpstrFilter As String
   lpstrCustomFilter As String
   nMaxCustFilter As Long
   nFilterIndex As Long
   lpstrFile As String
   nMaxFile As Long
   lpstrFileTitle As String
   nMaxFileTitle As Long
   lpstrInitialDir As String
   lpstrTitle As String
   flags As Long
   nFileOffset As Integer
   nFileExtension As Integer
   lpstrDefExt As String
   lCustData As Long
   lpfnHook As Long
   lpTemplateName As String
End Type
Public Function aprifile(tipo As String, Optional posizione As String
= "C") As String
   Dim OpenFile As OPENFILENAME
   Dim lReturn As Long
   Dim sFilter As String
 
   OpenFile.lStructSize = Len(OpenFile)
   sFilter = "File di Tipo *." & tipo & Chr(0) & "*." & tipo & Chr(0)
   OpenFile.hwndOwner = Application.hWndAccessApp
   OpenFile.lpstrFilter = sFilter
   OpenFile.nFilterIndex = 1
   OpenFile.lpstrFile = String(257, 0)
   OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
   OpenFile.lpstrFileTitle = OpenFile.lpstrFile
   OpenFile.nMaxFileTitle = OpenFile.nMaxFile
   OpenFile.lpstrInitialDir = posizione
   OpenFile.lpstrTitle = "Scelta File"
   OpenFile.flags = 0
   lReturn = GetOpenFileName(OpenFile)
 
   If lReturn = 0 Then
      aprifile = ""
 
   Else
      aprifile = Left(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile,
Chr$(0)) - 1)
   End If
End Function
Saluti.
Emanuele.