Newsgroup: it.comp.appl.access
Titolo: mde e perdita riferimenti...

salve a tutti,
ho passato l'ultima settimana ad impazzire su vari problemi relativi a
vecchi file .mde (fatti da terzi) ma non ne esco, nonostante le
tonnellate di pagine web "sfogliate".
Mi affido alla vostra sapienza e magnanimita'!! :)
Riassumo la questione: ho formattato un PC che aveva WinXP SP2 con
Office 2000 installato su Office 97 (con Access 97 ancora presente) e
reinstallato il sistema con il solo Office 2003. Purtroppo mi sono
reso conto solo troppo tardi che i suddetti file .mde (preventivamente
backuppati, ovviamente) non erano in formato Access 2000 bensi' 97....
ovviamente quando li ho provati sul nuovo sistema mi hanno dato
diversi problemi, essenzialmente quelli di "riferimenti persi" di cui
al punto 7.1 delle FAQ di donkarl (in particolare, errori con semplici
funzioni "LEFT"). Le cose non sono cambiate anche disinstallando
Office 2003 ed installando nell'ordine il 97 con SR1 e SR2 ed il 2000
(senza rimuovere Access 97).
Leggendo anche l'articolo sul sito MS linkato su donkarl mi pare di
capire che pero' sui file .mde non ci sia verso di aggiornare i
riferimenti... sono senza speranze? Devo ricontattare gli sviluppatori
dei suddetti file .mde perche' mi ricompilino gli mdb direttamente sul
PC (putroppo non mi e' mai stata lasciata una versione installabile,
gli aggiornamenti al software venivano fatti "on site")?
E soprattutto...avevo scelta?? Oppure la presenza di file .mde
condanna necessariamente chi volesse reinstallare il sistema operativo
a richiamare gli autori?? Mi sembra un po' allucinante...
--	   
             ***** on line  since 1993 *****
www.bhsa.it
                                 ICQ#44021136

 a richiamare gli autori?? Mi sembra un po' allucinante...
Ciao Andrea
Dovresti essere più preciso nell'indicare i messaggi di errore che 
rilevi. Se il problema è la funzione left potrebbe essere sufficiente 
referenziare (Strumenti/Riferimenti) "Microsoft Visual Basic for 
Application Extensibility 5.3" dopo aver creato un nuovo mdb (che poi 
potrai cestinare) e all'interno di questo un nuovo modulo.
Ciao
MArco
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:km08d1pcgh5nde5re...@4ax.com...

Ci ho lavorato un'oretta ma lla fine sono riuscito a fare questa routine che 
dovrebbe elencarti i riferimenti di un file mdb o mde. Se gli amici del 
sitocomune ritengono di pubblicarla, faranno cosa gradita.
Premessa indispensabile è che è testato per Access97 e che richiede un 
riferimento a Microsoft Access 8.0 Object Library.
Crea con Access97 (forse funziona anche con altre versioni di Access ma il 
riferimento alla libreria sopra indicata è indispensabile per gli mde 
Access97) un nuovo db.
Crea un nuovo modulo e scrivi:
Option Compare Database
Option Explicit
Dim appAccess As Access.Application
Sub ElencaRiferimentiAltroDB(strDB As String)
'indispensabile il riferimento a Microsoft Access 8.0 Object Library
'Percorso di strDB "C:\Franto\Frantoio1.mde" questo è un esempio
    Dim RefAcc As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String
    Set appAccess = New Access.Application
    appAccess.OpenCurrentDatabase strDB
    intCount = appAccess.Application.References.Count
    For intX = intCount To 1 Step -1
      Set RefAcc = appAccess.Application.References(intX)
      With RefAcc
          strPath = .FullPath
          Debug.Print strPath
    End With
    Next
  Set RefAcc = Nothing
    appAccess.CloseCurrentDatabase
    Set appAccess = Nothing
End Sub
E' chiaro che avuto il percorso e il nome del riferimento dovrai provvedere 
a sistemare le opportune librerie lì dove indicato. In caso contrario 
potresti usare quest'altra sub che ripristina i collegamenti mancanti:
Sub CercaRiferimentiAltroDB(strDB As String)
    Dim RefAcc As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String
    Set appAccess = New Access.Application
    appAccess.OpenCurrentDatabase strDB
    intCount = appAccess.Application.References.Count
    For intX = intCount To 1 Step -1
      Set RefAcc = appAccess.Application.References(intX)
      With RefAcc
        blnBroke = .IsBroken
        If blnBroke = True Or Err <> 0 Then
          strPath = .FullPath
          With appAccess.Application.References
            .Remove RefAcc
            .AddFromFile strDB
          End With
        End If
       End With
    Next
  Set RefAcc = Nothing
  'chiamo SysCmd in modalità nascosta per compilare e salvare tutti i moduli
  'non so se funziona con gli mde, eventualmente si elimina
  Call SysCmd(504, 16483)
    appAccess.CloseCurrentDatabase
    Set appAccess = Nothing
End Sub
Fammi sapere se funziona.
Ciao, Carlo 

 ha scritto nel
messaggio news:wz3Be.62480$h5.26...@news3.tin.it...

In qualsiasi caso non si debbano gestire EVENTI degli Oggetti di Automazione
per il quale occorrerebbe costruirsio un componente esterno DCOM non
si devono inserire i Riferimenti alle Librerie, ma sfruttare il LateBinding.
IN questo modo qualsiasi problema di Riferimenti viene eliminato in quanto
il SW Referenzia in Automatico quello di cui dispone.
Questo è il mio parere, prendetelo come suggerimento....!
Saluti
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 Saluti
Scusa Alessandro,
ma come ti diverti a complicare la vita agli altri sviluppatori.
Se scrivi cose del genere non fai altro che la supercazzola di AmiciMiei
memoria: il 'Vbanorum' lascialo agli Azzeccagabugli del XXI secolo.
O spieghi con esempi come fare e se vuoi ti diciamo n volte bravo al giorno
(la quantità sufficiente la decidi tu)
e così sei più contento
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

... la supercazzola di AmiciMiei
Ciao MA,
per la cronaca si tratta della
supercazzulaprematurata...
un po' come supercalifragilestichespiralidoso...
Comunque Alex è un grande...anche se la sua mancanza alla CISA1 gli costerà 
moltissimo!
Ciao, Carlo 

 MAssimiliano Amendola            
www.accessgroup.it
Non ho complessi d'inferiorità tali da ritenere terapeutico un "Bravo"
al giorno, il mio consiglio non è un Segreto, basta leggere milioni di POST
sul LATE_BINDING e del perchè è preferibile questa tecnica rispetto
all'Early Binding(non è una varietà di Thè Indiano).
Poichè lo ritengo un argomento discretamente trattato, non solo da me,
ma da molti bastava fare una ricerca anche sul NG di MS, nel quale ho
esposto proprio il problema dell'impossibilità dell'uso di questo metodo
in relazione all'Uso di EVENTI d'oggetto(intendo gli eventi ereditati
dichiarando
esplicitamente l'oggetto come Classe inglobata Eventi inclusi WithEvents per
capirci).
Ne usci un articolo grazie ad un suggerimento di "Cinzia" della MS che
spiega
come poter realizzare un componente COM esterno in modo tale da risolvere
la cosa....!
Se ti serve sapere cos'è un COM o un DCOM faremo una CISA apposta per
te....! ;-)
Più non saprei, l'argomento è più sentito per chi programma in linguaggi
VB o C++, ma le problematiche sono le stesse in VBA.
Se hai bisogno di maggiori dettagli poso decisamente essere più esaustivo
e spingermi nel dettaglio che tu ritieni ti possa servire.


 Ciao, Carlo
Un caro saluto.


 Saluti
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it


 In realtà sono alto 1.70 magro, pertanto gracilino....,
sfido io, con quei piatti tipici delle tue parti così tristi...



Sai Massimiliano, da un pò di tempo ho preso una mia decisione
personale(discutibile, ma mia.....).
Voglio consirerare di rispondere solo a 3D ai quali valga la pena(secondo
la decisione di cui sopra) rispondere, preferibilmente Tecnici e tenermi
fuori da Flame ed OT vari che poi portano spesso ad incomprensioni
o altre cose per me non piacevoli.(e mi riferisco anche a quanto avvenuto
con te).
Il fatto che io in prima battuta sia sempre molto conciso è ormai 7 anni
che non rappresenta un segreto per nessuno, questo non significa che
a domanda di approfondimento io non replichi, anzi........... spesso capita
che il mio livello sia troppo approfondito ed il richiedente si scoraggia.
(Colpa mia e del fatto che non ho un'ottima propensione all'insegnamento)
Spesso non voglio sottovalutare l'interlocutore e dò semplicemente
un'accenno a quanto io ritengo possa essere d'aiuto.
Se sono stato troppo succinto o poco chiaro, oppure il richiedente
non ha le basi per procedere nella ricerca Autonoma di quanto detto
certamente non lesino sui contenuti Tecnici approfonditi al massimo
delle mie possibilità.


 Saluti
Va bene, ma per essere d'aiuto, credo, spesso tu ti debba tradurre
(non voglio incomprensioni, tradurre dal troppo tecnico al comprensibile)


 e così sei più contento
Bastano dieci secondi di googling per capire perfettamente a cosa Alessandro
si stia riferendo.
Massimiliano, questo (bel) ng non è casa tua. Io, imho, preferisco di gran
lunga dei mex dal taglio tecnico elevato, meglio se elevatissimo come tutti
i mex di Baraldi.
Ciao, Sandro.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Inviato via 
http://arianna.libero.it/usenet/
-- 



E questo che significa? Forse il caldo sta facendo inacidire un po gli
animi? Ti ho solo fatto notare che Usenet non è la tua posta personale. E la
cosa detestabile (imho, cioè secondo il mio modestissimo parere) è che il
reply che hai fatto a Baraldi aveva un tenore personale, e correttezza
avrebbe voluto che il tuo appunto glielo avessi fatto in pvt.
Per quel che mi riguarda in modo specifico, considerato che il Baraldi non
mi paga percentuale alcuna per questa arringa, vorrei solo che Alex, in
futuro, non si ponesse il problema di postare messaggi di contenuto elevato
dal punto di vista tecnico, seppur criptici e di non immediata comprensione,
magari solo per evitare il reply del MA di turno ...
Punto.
Mamma mia che suscettibilità!
:-/
Saluti, Sandro.


 Inviato via 
http://arianna.libero.it/usenet/
-- 


......
Ringrazio tutti per i preziosi suggerimenti... mi stavo cominciando ad
orientare (anche se la materia mi pare alquanto ostica) quando, per
grande fortuna, lo sviluppatore ha fatto un salto in ufficio e ha
messo le mani dove sapeva. Purtroppo non ero presente... devo indagare
perche' la cosa mi incuriosisce!
...in ogni caso mi resta un dubbio di fondo: compilando un file
stand-alone, e' garantito il funzionamento del progetto a prescindere
da Sistema Operativo e versione di Office? Forse e' una domanda
stupida...
