Newsgroup: it.comp.lang.visual-basic
Titolo: Avvio file access

Ciao,
scusate la domanda probabilmente già fatta 1000 volte ma dalla ricerca
tra i post non ho trovato una soluzione...
Allora, su load di una form eseguo alcune operazioni di copia e
incolla e al termine devo avviare un file di access.
con
Shell("C:\Programmi\Microsoft Office\OFFICE11\MSACCESS.exe")
si apre microsoft access ma poi come faccio a lanciare il file che mi
serve? K:\File.mdb
Ho provato con ShellExecute ma non ci riesco, la funzione per
ShellExecute è la seguente :
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String,
ByVal lpFile As String, ByVal lpParameters As String, ByVal
lpDirectory As String, ByVal nShowCmd As Long) As Long
    Const SW_SHOWNORMAL = 1
grazie per l' eventuale aiuto
Marco

Allora, su load di una form eseguo alcune operazioni di copia e
incolla e al termine devo avviare un file di access.
********************************************
Private Sub Command1_Click()
    Dim objAccess As Object
    Dim sPath As String
    sPath = "C:\mioDB.mdb"
    Set objAccess = _
        CreateObject("Access.Application")
    With objAccess
        .OpenCurrentDatabase sPath
        .UserControl = True
    End With
    AppActivate "Microsoft Access"
    Set objAccess = Nothing
End Sub
Cambia la path e nome file con i tuoi.
-- 
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/

"Marco75"
Ciao,
scusate la domanda probabilmente già fatta 1000 volte ma dalla ricerca
tra i post non ho trovato una soluzione...
Allora, su load di una form eseguo alcune operazioni di copia e
incolla e al termine devo avviare un file di access.
con
Shell("C:\Programmi\Microsoft Office\OFFICE11\MSACCESS.exe")
si apre microsoft access ma poi come faccio a lanciare il file che mi
serve? K:\File.mdb
in console questa stringa funziona, vedi tu come passarla alla shell, 
considerando le virgolette (spazi in "program files" e "ms office"):
C:\Program Files\Microsoft Office\Office>msaccess "C:\Program 
Files\Microsoft Office\Office\db1.mdb"
ciao 

On 16 Apr, 10:16, "Mauro Gamberini"

ok, sembra funzionare tutto...
grazie e buon lavoro
Marco

 - Mostra testo citato -
Ancora una cosa se posso....
il file di access si avvia ma vorrei che all' apertura si espandesse a
tutto schermo invece si avvia in modalità ripristino
dove intervengo?
ciao

il file di access si avvia ma vorrei che all' apertura si espandesse a
tutto schermo invece si avvia in modalità ripristino
dove intervengo?
<cut>
Dalla guida del vb
relativa a: Istruzione AppActivate
<giuda>
Osservazioni
L'istruzione AppActivate attiva la finestra di
applicazione specificata senza modificarne la
modalità di visualizzazione (ingrandita o ridotta a icona).
La finestra resterà attiva fino a quando non verrà
chiusa o non verrà attivata un'altra finestra.
Utilizzare la funzione Shell per avviare un'applicazione e
impostare lo stile della finestra.
</guida>
Utilizza quanto postato da Andrea.


 Utilizza quanto postato da Andrea.
Alle volte non vi capisco...
Per aprire un tipo di file registrato si usa la ShellExecute, anche 
perché 'a priori' non si può sapere se nel piccì c'è office o open 
office, e quiesto cambia tutto. E non è importante sapere che quel 
programma girerà su un certo piccì dove c'è Office. Si fa così perché è 
giusto così.
Si istanzia un oggetto solo quando si vuole stabilire una connessione 
che consenta di interagire con le sue API, non per lanciarlo con un nome 
di file nella command line.
Inoltre il barocchismo del 'creo l'oggetto chiudo l'oggetto uso la 
appactivate no forse è meglio la shell ma non riesco a passare i 
paramentri e leggo dove è Office nel registro ma con vista è diverso' è 
da suicidio. Versioni diverse di uindos usano percorsi, cartelle, chiavi 
di registro diverse.
Si usa la ShellExecute, che fa tutto in una riga e consente di aprire 
file dati indipendentemente dalla presenza o meno di uno specifico 
programma (es: un .doc con Office oppure con OpenOffice)?
Metti sta roba in un modulo:
' inizio modulo
Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3
Sub eseGUI(ufFA As Form, coSA As String, optiona coME as long = 1)
    Dim x As Long
    x = ShellExecute(ufFA.hwnd, vbNullString, coSA, vbNullString, "", 
coME)
    if x then 'orrore
    end if
End Sub
' fine modulo
in un command del tuo form o dove ti pare usa quella roba così:
Private Sub Command1_Click()
    dim mioFILE as string
    mioFILE = "c:\pippo\peppe\pluto\miofile.mdb"
    eseGUI me, mioFILE, SW_SHOWMAXIMIZED
End Sub
Tutto qui. Ovviamente mioFILE può contenere qualsiasi tipo file 
registrato in uindos, e se ne esegui uno non registrato ti chiede come 
aprirlo. Ho scritto tutto a memoria e magari mi sono dimenticato qualche 
virgola, comunque non mi pare manchi nulla.
Ciao belli.
-- 
-> GbC|
www.gbcweb.com
www.chiappori.com
 

> Inoltre il barocchismo
;-)


 - Mostra testo citato -
ciao
mi da errore in x = ShellExecute(ufFA.hwnd, vbNullString, coSA,
vbNullString, "",  ==>uffa.hwnd
il codice che fino ad ora ho immesso è :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        Me.Visible = False
        Dim objAccess As Object
        Dim sPath As String
        Dim sorg, dest As String
        Dim sorgODBC, destODBC As String
        sPath = "K:\Gestione personale.mdb"
        objAccess = CreateObject("Access.Application")
        sorg = "J:\Folitec\DB Da SQL Server\Gestione personale
\Gestione personale.mdb"
        dest = "K:\Gestione personale.mdb"
        sorgODBC = "J:\Folitec\DB Da SQL Server\Gestione personale
\Collegamenti\GestPersonale.dsn"
        destODBC = "C:\Programmi\File comuni\ODBC\Data Sources
\GestPersonale.dsn"
        If Not Len(Dir(destODBC)) Then 'Se il file esiste già
            FileCopy(sorgODBC, destODBC)
        End If
        FileCopy(sorg, dest)
        With objAccess
            .OpenCurrentDatabase(sPath)
            .UserControl = True
        End With
        AppActivate("Microsoft Access")
        objAccess = Nothing
        Close()
    End Sub
se si può mettere all' interno di quanto già eseguito il codice per
aprire il file ed ingrandirlo ok, se no mi sa che mi arrendo...
grazie
Marco

> Mauro Gamberini wrote:
[snip]
    x = ShellExecute(Form1.hwnd, _
                              vbNullString, _
                              "K:\Gestione personale.mdb", _
                              vbNullString, _
                              "", _
                              3)
E, scusa l'ardire, prima di fare cut&paste cerca di capire cosa stai 
facendo.
ciaocia'


facendo.
Perchč possa capire meglio...
http://allapi.mentalis.org/apilist/ShellExecute.shtml
--
ciao
  Stefano


E scusa l'ardire, prima di rispondere vedi chi stai
quotando.... ;-)
(sto scherzando, ci sono faccine, no flame)


 [SNIP]
Che, a meno di smaneggiamenti, sotto Vista ha problemi di funzionamento 
anche a UAC
disabilitato.
http://www.google.it/search?q=shellexecute+vista
Lokar 


fate come ve pare :P



Hai ragione, a volte non guardo bene però alcuni parametri di cui
sopra li avevo messi correttamente...
rimane l' errore in hwnd dicendo che non è membro di access form1
Inoltre, ShellExecute lo devo inserire nel load della Form come l' ho
creata o rivedere il codice?
Sto leggendo un libro su VB ma tieni conto che sto imparando da solo e
da zero assoluto!
Spero che a breve l' azienda mi faccia partecipare ad un vero corso
come ha detto ma per ora vado alla cieca su quasi tutto.
grazie ancora
Marco

 ha scritto

senz'altro non come admin, sempre a uac disabilitato. lo uso in 
continuazione.
come user non ho provato.
ciao 


provato ora, entrando come 'utente standard' (pc di casa, non quello in 
dominio).
lanciato 2 shellexec su ie8, una su ff3, una su irfanview, una su un pdf 
(qui c'è acrobat, non il reader). tutte ok.
ciao

 rimane l' errore in hwnd dicendo che non è membro di access form1
Questa cosa mi fa capire che usi 
VB.NET
, cosa che mi sembra di non
aver letto nei tuoi post...
In ogni caso, hwnd = Handle
E se sei davvero in 
VB.NET
 puoi usare altri metodi molto migliori per
aprire files (io spero tanto che tu sia in VB6, altrimenti quello che
hai scritto finora è una schifezza pazzesca!!).
Ciao


Per la precisione uso Visual Basic 2008 express edition, non so se può
essere utile...
anche con hwnd = handle rimane l' errore.
quali altri sistemi esistono, visto che ne hai parlato?
ciao

 ciao
Il sistema è uno solo caro mio....informarsi e studiare....non copiare
a vanvera!
Il sistema detto da GbC è quello CLASSICO e canonico ....e non ne
esistono altri!
Richiami il file e l'applicazione associata!
Solo che se usi VB.net...puoi scordarti di referenziare le API...Net
le ha già incapsulate e te le mostra a livellodi classi e namespace!
Il sistema di GbC è ESATTAMENTE questo che ti posto sotto....solo
tradotto in 
vb.net
!
Però per capire cosa fà....cosa che ti consiglio perchè utile e perchè
ci sono mille opzioni per configurare altre cosa....per capire
dicevo....studia, documentati...per una volta ancora f1 è un ottima
partenza...la guida di NET è fatta benissimo!
EQUIVALENTE DIS-API.zzato
Form + Button
VB.net 2008 + net 3.5 (ma a bene anche sul 2.0 sull'! qualcosa  ...non
lo so...può darsi)
Imports System.Diagnostics
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
        Dim PathApp As String
        'una chiavetta usb
        PathApp = "g:\dbPreventivi.mdb"
        'un nuovo processo
        Dim p As New Process
        'un po di settaggi
        p.StartInfo.FileName = PathApp
        p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
        'ed infine il lancio
        p.Start()
        MessageBox.Show("Non è sincrona! Ho lanciato un file mdb!")
    End Sub
End Class

 quali altri sistemi esistono, visto che ne hai parlato?
Quello che ti ha appena suggerito Wodka è ottimo, ma tanto per
curiosità... cosa significa che "hwnd = handle" ti dà errore?
Non vorrei pensare subito "male", eh... ma di questi tempi se ne
sentono tante sul NG...
Ciao

 (qui c'è acrobat, non il reader). tutte ok.
Ho ricontrollato per scrupolo. Il motivo per cui non funziona e' altrove, ma
non ho avuto tempo di sbattermici. ShellExecute con open di un doc word
(estensione .doc) Office 2007 installato.
Da explorer (non internet explorer) si apre con un doppio click, ma come
allegato di posta (o shellexecute) mi dice che nessun programma è associato
all'estensione, sebbene l'associazione sia stata fatta da pannello di
controllo.
Boh!
Lokar