Newsgroup: it.comp.appl.access
Titolo: apertura form esterno

Uso l'API seguente per aprire una maschera di un altro database. Va tuitto
bene con A97 tutto ok  e con gli MDB ma con gli MDE di A00 e successivi ho
verificato che se non lascio spuntata l'opzione di Avvio "Visualizza
finestra database"  la maschera non viene aperta e segnala errore di
Runtime.
Private Declare Function apiSetForegroundWindow Lib "user32" _
            Alias "SetForegroundWindow" _
            (ByVal hwnd As Long) _
            As Long
Private Declare Function apiShowWindow Lib "user32" _
            Alias "ShowWindow" _
            (ByVal hwnd As Long, _
            ByVal nCmdShow As Long) _
            As Long
Private Const SW_MAXIMIZE = 3
Private Const SW_NORMAL = 1
Function fOpenRemoteForm(strMDB As String, _
                                        strForm As String, _
                                        Optional intView As Variant) _
                                        As Boolean
Dim objAccess As Access.Application
Dim lngRet As Long
    On Error GoTo fOpenRemoteForm_Err
    If IsMissing(intView) Then intView = acViewNormal
    If Len(Dir(strMDB)) > 0 Then
        'Set objAccess = New Access.Application
        Set objAccess = GetObject(strMDB) 'se già aperto ritorna a quello
        With objAccess
            lngRet = apiSetForegroundWindow(.hWndAccessApp)
            lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL)
            'the first call to ShowWindow doesn't seem to do anything
            lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL)
...............
Vedere la finestra del database con MDE non è bello.
C'è una soluzione?
Grazie
Sandrobi

 ha scritto nel messaggio 
news:MZ%ie.16221$795.4...@twister1.libero.it...

Trovi soluzioni su 
www.sitocomune.com
In pratica è inutile ricorrere alle API quando puoi fare tutto con Access.
Nel db da chiamare inserisci una funzione del tipo:
Pubblic Function ApriMaschera(NomeMaschera as string)
docmd.openform NomeMaschera
End Function
Nei riferimenti del db principale metterai anche il db con la maschera da 
aprire.
Ora la funzione diventa locale e in qualsiasi punto del db potrai chiamarla 
con :
Call ApriMaschera("TuoNomeForm")
Facile no?
Ciao, Carlo 

"Sandrobi" >

Devi distribuire con la DEV: in esecuzione Runtime non esiste la finestra
database...
Ciao.


Ho scartato la soluzione dei riferimenti per almeno due motivi (gią discussi
in questo ng):
1) gli mde vanno creati tutti insieme e non posso sostituire un singolo mde
sucecsivamente;
2) spesso, per poter funzionare,  report e query vanno messi nel db
principale e non nel db dove metto le maschere che li utilizzano.
Ciao
Sandrobi


Puoi spiegarti meglio?
Ripeto che con A97 non ci sono problemi. Con mde di A00 su pc dove è
installato Access, vuole la spunta su "Visualizza finestra database".
Ciao
Sandrobi

 installato Access, vuole la spunta su "Visualizza finestra database".
Sì ma ... all'atto pratico non conviene distribuire le applicazioni facendo
conto che l'utente abbia una versione Full di Access installata sul PC.
E' già tanto che non ti crei problemi di compatibilità con la versione con
cui tu sviluppi.
Quindi, è *necessario* distribuire applicazioni basate su Access con
pacchetti Runtime: e in tal caso non avresti incontrato il problema oggetto
del Th.
Ciao.

 ha scritto nel messaggio 
news:wArje.18892$795.5...@twister1.libero.it...

Sinceramente non ho ben capito perchč scarti la soluzione dei riferimenti.
.."gli mde vanno creati tutti insieme..." chi lo ha detto? ..."non posso 
sostituire un singolo mde.." perchč?
Ogni mde viene creato singolarmente e non "tutti insieme". Ogni singolo mde 
puņ essere sostituito con la versione aggiornata, ovviamente tenendo conto 
delle implicazioni su altri mdb o mde collegati.
Puoi spiegarti meglio?
Ciao, Carlo 

 ha scritto nel messaggio
news:FmBje.19265$795.5...@twister1.libero.it...

A proposito di Runtime:
1) Almeno con Access97, il Runtime ha forti limitazioni nell'apertura di
immagini non bmp e nel collegamento con Word ed Excel.
2) L'installazione di una versione Runtime non crea problemi se sul pc è
installata una versione successiva di Access?
3) Cosa devo acquistare per creare un Runtime con A00?
Ciao e Grazie
Sandrobi


Uno del Th è questo:
http://groups.google.com/groups?hl=it&lr=&c2coff=1&threadm=nEQCd.16025%24H%2
56.683209%
40twister1.libero.it
&rnum=7&prev=/groups%3Fhl%3Dit%26lr%3D%26c2cof
f%3D1%26q%3Driferimenti%2Bmde%2Bsandrobi%26meta%3Dgroup%253Dit.comp.appl.acc
ess
In sostanza, pare che al momento di creare un mde viene assegnato un codice
ai riferimenti univoco creato al momento, se in seguito aggiorno l'mde
questo non viene più riconosciuto.
Purtroppo.
Sandrobi

 3) Cosa devo acquistare per creare un Runtime con A00?
Credo non sia più acquistabile la DEV per Access 2000: quantomeno attraverso
i canali MS troverai solo le ultime versioni.
Ciao.