Ciao!
Non so il 2007/10, ma qua da me ho sempre optato per la seconda
opzione.
E con un semplice [Shell "CMD.EXE /C """ & NomeDocumento & """",
vbHide] lancio qualsiasi documento che abbia una estensione
riconosciuta dal sistema senza preoccuparmi dell'applicativo ad essa
associato.
HTH
Popi
scusa non riesco a seguirti
allora quello che mi serve è
1 salvare il percorso..con un tasto su una maschera..clicco e vado a
scegliere il percorso del file che voglio "allegare"
2 aprirlo tramite un altro box..
come uso il tuo codice?
grazie
Ok, mettiamo che il codice del pulsante con cui scegli il documento
sia qualcosa come quanto segue (la ScegliFileDaAprire e' una funzione
che usa l'API GetOpenFileName) per salvare il nome completo di
percorso del documento scelto.
Private Sub ScegliFile_Click()
Dim NomeFileScelto As String
Dim rsDocumenti As DAO.RecordSet
NomeFileScelto = ScegliFileDaAprire()
If (NomeFileScelto <> "" ) Then
set rsDocumenti = Me.SubFormDocumenti.RecordSetClone
rsDocumenti.AddNew
rsDocumenti.Fields("NomeDocumentoDaAggiungere") =
NomeFileScelto
rsDocumenti.Update
Set rsDocumenti = Nothing
Me.SubFormDocumenti.Requery
Shell "CMD.EXE /C """ & NomeFileScelto & """", vbHide
End If
End Sub
Se vuoi salvare il documento e mostrarlo al tempo stesso la shell
sara' a valle del salvataggio, altrimenti dovrai inserirla nel codice
evento di (ad esempio) un altro pulsante.
Private Sub VisualizzaDocumento_Click
Shell "CMD.EXE /C """ & Me.NomeDocumentoDaAggiungere & """",
vbHide
End Sub
HTH
Popi
piano piano..
allora
ScegliFileDaAprire() cosa è? un campo del record?
per essere piu pecisi..non capisco cosa dovrebbe essero questi
ScegliFileDaAprire()
Me.SubFormDocumenti
("NomeDocumentoDaAggiungere")
Mmmmm ... forse è meglio se prima dici tu cosa hai gia' nel db e poi
vediamo cosa fare.
Popi
ok..diciamo che è ancora in fase di progettazione
cmq per partire, ho una tabella "Pratiche"
con i campi
Numero
Cliente
Fattura (si/no)
Percorso (campo che ho creato per memorizzare il percorso del
documento fattura)
prevedo di svilupparlo con aggiunta di ulteriroi campi tipo ORDINE
(si/no) e relativo campo percorso..insomma seguendo piu o meno la
stessa logica
potrei avere qualche altra informazione?
grazie
Ok, quindi avrai una form che conterra', fra gli altri controlli, le
textbox associate ai campi contenenti il percorso dei documenti.
Nella form inserirerai due eventi per ciascun campo come segue (ad
esempio il percorso della fattura).
private sub PercorsoFattura_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
' Scegli il percorso se tasto destro premuto
if (button=acRightButton )then
me.percorsofattura =
ScegliFileDaAprire(Me.Hwnd,Nz(me.percorsofattura,""))
endif
end sub
private sub PercorsoFattura_DblClick(Cancel As Integer)
' Visualizza il documento se facciamo doppio click
Shell "CMD.EXE /C """ & Me.NomeDocumentoDaAggiungere & """",vbHide
end sub
La funzione ScegliFileDaAprire() sara' presente in un modulo
(inserisci quanto segue) e servira' per richiamare la finestra
standard di Windows di apertura file.
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_PATHMUSTEXIST = &H800
Public Type OpenFilename
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustomFilter 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 Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" (lpofn As OpenFilename) As Long
Public Function ScegliFile(HandleChiamante As Long, Optional
PercorsoBase As String, Optional EstensioniCercate As String, Optional
TitoloMascheraRicerca As String, Optional FileDeveEsistere As Boolean
= True, Optional NomePredefinito As String) As String
Dim FileScelto As OpenFilename
With FileScelto
.lStructSize =
Len(FileScelto) 'Dimensione della
struttura
.hwndOwner =
HandleChiamante 'Handle della
finestra chiamante la funzione
.hInstance =
0 'Handle
dell'istanza chiamante (non necessario)
.lpstrFilter = Nz(EstensioniCercate, "File di Access (*.MDB)"
& vbNullChar & "*.mdb" & vbNullChar)
'.lpstrFilter = "Tutti i File (*.*)" & vbNullChar & "*.*" &
vbNullChar
'"BMP Files (*.bmp)" & vbNullChar & "*.bmp" &
vbNullChar
'"GIF Files (*.gif)" & vbNullChar & "*.gif" &
vbNullChar
'"JPG Files (*.jpg)" & vbNullChar & "*.jpg" &
vbNullChar & vbNullChar
'.lpstrCustomFilter is ignored -- unused string
.nMaxCustomFilter = 0
.nFilterIndex =
1 'Default filter is
the first one
.lpstrFile = Left$(Nz(NomePredefinito, "") & Space$(256), 256)
& vbNullChar 'Nessun nome di default, con
spazio sufficiente per path scelto dall'utente
.nMaxFile = Len(.lpstrFile)
.lpstrFileTitle = Space(256) &
vbNullChar 'Spazio destinato al path scelto
dall'utente
.nMaxFileTitle = Len(.lpstrFileTitle)
.lpstrInitialDir = Nz(PercorsoBase, "C:\") &
vbNullChar 'Setta la directory di partenza
.lpstrTitle = Nz(TitoloMascheraRicerca, "Scelta File") &
vbNullChar 'Titolo della dialog
If (FileDeveEsistere = True) Then
.Flags = OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or
OFN_HIDEREADONLY
Else
.Flags = OFN_PATHMUSTEXIST Or OFN_HIDEREADONLY
End If
.nFileOffset =
0 'Le opzioni
restanti non sono necessarie
.nFileExtension = 0
'.lpstrDefExt is ignored -- unused string
.lCustData = 0
.lpfnHook = 0
'.lpTemplateName is ignored -- unused string
End With
If (GetOpenFileName(FileScelto) <> 0) Then
ScegliFile = Left$(FileScelto.lpstrFile,
InStr(FileScelto.lpstrFile, vbNullChar) - 1)
End If
End Function
HTH
Popi