Newsgroup: it.comp.appl.access
Titolo: filedialog con late binding

Buona sera a tutto il NG, colgo l'occasione per agurarvi una buona
Madonna.
La domanda è la seguente, esiste la remota possibilità di creare
l'oggetto FileDialog con il metodo del late binding o e' sempre e
comunque necessario fleggare il riferimento della libreria  Microsoft
Office 10 ?
Perche' alla fine il problema che mi si pone è sempre lo
stesso...metti che l'applicativo dovrà girare su un A00 o AXp che
faccio?...lì la Libreira di riferimento è la 10 mentre l'applicativo
che sto sviluppando e' creato con A2003 che ha come riferimento la
verisione 11.
Chiedo lumi...ed inoltre se fosse fattibile, non e' che per caso
potreste suggerirmi un sito o un demo dove prendere l'esempio?
Grazie
Saluti
Diego

 ha scritto nel messaggio
news:1165519679.2...@n67g2000cwd.googlegroups.com...



Grazie
Saluti
Diego
Nella speranza di aver capito bene cosa chiedi riprendo citazione di namor
che rispondeva al messaggio postato appena prima del tuo ... sei stato
fortunato.
www.sitocomune.com
 sez. General 6.22 o Modules 5.5
Ciao.

diego ha scritto:

Access2000 non supporta FileDialog in nessun modo...., quindi a mio
avviso le vecchie
care e dolci API sono ancora la soluzione migliore da A97 ad A2007.
Detto questo il LateBinding si fà così:
Dim myObj As Object
Set myObj = CreateObject("Office.FileDialog")
Ora in myObj hai l'oggetto FileDialog istanziato accedendo alla
libreria di Office presente
nel S.O.(ovviamente da A2002 in poi che se non ricordo male è Office
10)
@Alex

 @Alex
Ciao Alex...grazie della tua disponibilità,
ricordi bene sino al A2002, in A2003 la versione e' la 11
metto subito in pratica il tuo suggerimento.
Grazie e Buona Madonna.
Saluti
Diego

 Ciao.
Ciao Ciroteo, Grazie per avermi risposto, ho visionato in S.C. il tuo
suggerimento, ma non e' proprio quello che cercavo, vicerversa
Alessandro ha capito, intendevo proprio la creazione dell'oggetto
FILEDIALOG allo stesso modo di come si creerebbe un oggetto tipo Word o
Excel senza dover fare riferimento alle librerie.
Ti ringrazio comunque della tua disponibilità e ti auguro una Buona
Madonna
Saluti
Diego

 @Alex
Mannaggia mi restituisce un errore, "Il componente active x non e' in
grado di creare l'oggetto"
e il debug si ferma qui : Set myObj = CreateObject("Office.FileDialog")
io scrivo questo:
    Dim fd As Object
    Dim msoFileDialogFilePicker
    Set fd = CreateObject("Office.FileDialog")
    Set fd = FileDialog(msoFileDialogFilePicker)
dove sbaglio??
saluti 
Diego

 care e dolci API sono ancora la soluzione migliore da A97 ad A2007.
scusa Alex, non è che prima di fare il LateBinding devo fare
riferimento alle API ? del tipo:
Private Declare Function FileDialog Lib "comdlg32.dll" _
            Alias "FileDialog" (FileDialog As FileDialog) As Long
Non so che cosa ho scritto, ho preso spunto dal S.C. Sez.General 6.22,
il suggerimento di Ciroteo insomma, siccome tu prima hai parlato di
API, e il modulo del S.C. ne fa riferimento, pensavo bisognasse farlo
anche con il tuo suggerimento prima di procedere con il LateBinding.
Sono in errore?


"diego"
Ciao Alex...grazie della tua disponibilità,
ricordi bene sino al A2002, in A2003 la versione e' la 11
metto subito in pratica il tuo suggerimento.
Grazie e Buona Madonna.
Ma lascia perdere: ti hanno suggerito di usare le API del sito comune per i
selettori Files e cartelle.
L'oggetto FileDialog peraltro non è supportato dalle versioni Runtime.
Saluti.

Simone Calligaris ha scritto:

;-)
@Alex

Vabbe'...vedrò come fare ad usarle!
Saluti
Diego

 Diego
Ti suggerisco questo Demo che è completo:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=27
@Alex

 @Alex
Grazie Alessandro, ho scaricato e, per quanto mi e' possibile in base
alle mie conoscenze, cercato di studiarlo, implementa l'apri File ed il
Salva File, con tutto il codice che ne concerne.
Ciò che realmente mi bisognava era un sostitutivo del FileDialog, e
cio' che, sia Ciroteo e tu, mi avete proposto sicuramente riuscirebbe a
sostituirlo alla grandissime, considerando anche il fatto che può
essere usato RunTime, dirai a questo punto...ma allora che cavolo
cerchi?...ed a questo rispondo immediatamente, nell'applicativo che sto
cercando di sviluppare è contemplato il relinkamento delle tabelle
qualora il Db_Be venisse spostato, o se ogni volta che si avvia il pc
che fa da server per accedere alle tabelle viene chiesta la password, e
quindi è come se dovessi riallegare le tabelle dopo uno spostamento.
avevo trovato nel S.C. un demo sul relinkare le tabelle, ma questo demo
usa il filedialog, quindi che succede se lo uso sul mio pc che ha A003
va bene perche' gli fleggo la libreira di riferimento e vado...ma se lo
sposto in un pc con Axp o A00 mi attacco al tram, ecco il perche' della
mia ostinazione sul trovare un modo sostitutivo al FileDialog, avendo
provato il tuo demo e quello suggeritomi da ciroteo (mi pare che
l'autore fosse Stefano Bettini) mi sorge il problema di come rialeegare
le tabelle in quanto il commonDialog in questione le apre o le salva!!
per completezza d'Argomento Posto il codice che permette il
Riallegamento:
Public Function CheckLinks() As Boolean
' Check linked tables relink if necessary. Returns true if
' links are okay (or links are successfully refreshed).
    ' On Error GoTo CheckLinksErr
    Dim tdf As TableDef
    Dim strNewMDB As String
    Dim fd As FileDialog
    For Each tdf In CurrentDb.TableDefs
        If Len(tdf.Connect) > 0 And tdf.Fields.count = 0 Then
            If Len(strNewMDB) = 0 Then
                MsgBox "Il File di Dati Back-End per questo Database" &
Chr(13) & "       è stato spostato o rinominato" & Chr(13) &
"Scegliere un File di dati valido per continuare", vbCritical,
TitoloApp
                ' Create a FileDialog object.
                Set fd =
Application.FileDialog(msoFileDialogFilePicker)
                With cmdlg_file
                    ' Set dialog box properties.
                    .AllowMultiSelect = False
                    .InitialFileName = CurrentDBFolder()
                    .Filters.Add "Access Database File (*.mdb)",
"*.mdb", 1
                    .Title = "Select Back-End Data File"
                    .ButtonName = "Link Tables"
                    ' Show the dialog box.
                    If .Show = False Then  ' User clicked Cancel.
                        Exit Function
                    Else
                        ' Selected file is in the SelectedItems
collection.
                        strNewMDB = .Additems(1)
                    End If
                End With
            End If
            ' Refresh the link using the selected back-end database.
            tdf.Connect = ";DATABASE=" & strNewMDB
            tdf.RefreshLink
        End If
    Next tdf
    CheckLinks = True   ' Relinking was a success.
       MsgBox "Collegamento alle Tabelle del Database Effettuato !",
vbInformation, TitoloApp
CheckLinksDone:
    Exit Function
CheckLinksErr:
    MsgBox "Error #" & Err.Number & ": " & Err.Description, vbCritical
    Resume CheckLinksDone
End Function
Saluti
Diego

diego ha scritto:

Aspetta, andiamo per passi.
Di solito il SERVER, o nel caso di Access il BE, che si trova in una
rete LAN, non DEVE cambiare posizione, farlo sarebbe come giocare....!
Invece prevedere che possa succedere è un'altro discorso...!
Come si può procedere...?
Premesso che una volta Linkate le tabelle non DEVE più essere
necessario darlo se il BE rimane al suo posto, quindi se ti succede una
cosa simile ti conisiglio di capire il perchè e risolverlo....!
In ogni caso, io le cancello sempre tutte le LinkedTable alla chiusura
dell'applicativo, e le ricollego dopo il Login(nel Client o FE ho una
Tabella Locale con l'elenco delle Tabelle da cercare lato Server)
Dove mi salvo il percorso del Server e l'autenticazione...?
In una ChiaveDiRegistro Criptata che creo con il Setup.
A quel punto nel file MDE apro un rs con ODBC collegato al BE(o server)
verifico il LOGIN
quindi ciclo la tabella Locale con l'elenco dei Nomi delle Tabelle e
tramite CreateTabledefs
le creo e gli assegno la proprietà Connect costituita da
";DATABASE=Nome;PWD=***"
La cosa è semplicissima.
Se il responsabile della rete ha dovuto cambiare il server o la sua
posizione, distribuisco un filettino di pochi KB che va a modificare
nel Registro la Chiave con PERCORSO(ovviamente criptata)....!
Questo rende meno facile far scorrazzare l'utente che non deve essere
messo nella condizione di girare per ricollegare
tabelle....!!!!!!!!!!!!!!!!!!!!!!!!
@Alex

 La cosa è semplicissima.
Insomma !!!!


 ha scritto nel messaggio
news:1165579719.5...@j44g2000cwa.googlegroups.com...
ciroteo (nospam) ha scritto:



Saluti
Diego
ok, meglio così! davanti ai Guru mi inchino volentieri ...
;-)
M

 M
Occhio a non romperti l'altro tendine nel chinarti...!
;-)
@Alex

 M
Occhio a non romperti l'altro tendine nel chinarti...!
;-)
@Alex
...azz ... te l'ho servita su un piatto d'argento!