Newsgroup: it.comp.appl.access
Titolo: memorizzare percorso file

Ciao
sto facendo un database che, in breve, tramite una maschera assegna un
numero progressivo (numero di pratica) e fa impostare alcuni paramtri
tramite combobox. Ora io vorrei allegare dei filea queste pratiche,
file che possono essere anche diversi, documenti, immagini. La nuova
funzione di access 2007/2010 è interessante perchè mi allega
diretamente il file al database ma temo che man mano l'mdb mi diventi
cosi grande da risultare ingestibile.Voi che ne pensate?chi ha
esperienze in materia?
Infatti quello he volevo fare io è lasciando intatta la mia struttura
di memorizzazione dati  sull hard disk, memorizzare solo il percorso
dei vari file nel record in questione. Quindi al momento di aprire un
determinato file aprire il percorso contentente ildocumento stesso (o
se possibile il documento stesso)..ma senza incorporarlo
Che ne pensate, è possibile?
grazie


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

 - Mostra testo citato -
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

 come uso il tuo codice?
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

 - Mostra testo citato -
piano piano..
allora
ScegliFileDaAprire()  cosa è?  un campo del record?

 - Mostra testo citato -
per essere piu pecisi..non capisco cosa dovrebbe essero questi
ScegliFileDaAprire()
Me.SubFormDocumenti
("NomeDocumentoDaAggiungere")

 ("NomeDocumentoDaAggiungere")
Mmmmm ... forse è meglio se prima dici tu cosa hai gia' nel db e poi
vediamo cosa fare.
Popi

 - Mostra testo citato -
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

 - Mostra testo citato -
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