Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 21-06-2004, 17.07.13   #1
gkcuvb
Junior Member
 
Registrato: 03-04-2002
Loc.: Follonica
Messaggi: 94
gkcuvb promette bene
[VB6]- Istanza di word

Ho sviluppato un'applicazione che crea un file di word con dei dati contenuti in un database. Il mio problema il seguente: Vorrei salvare questo file come temporaneo, quindi lo salvo sempre come temp.doc, ma quando per caso questo file aperto, mi compare il il messaggio di word che il file in sola lettura e poi il programma mi va in errore. Come posso fare a sapere se il file sul quale voglio salvare gi aperto?
Grazie a tutti
Ciao
gkcuvb non  collegato   Rispondi citando
Vecchio 21-06-2004, 19.53.40   #2
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
E' naturale.
Word a differenza di Excel o Access non da la possibilit a pi utenti di condividere lo stesso file (Mi pare invece che Word 2003 lo faccia, finalmente).
Pi utenti significa anche lo stesso utente che apre due volte lo stesso file.
Questo perch Word stesso che pone un lock sul file aperto e chiunque desideri leggere il file lo pu fare solo in lettura.
Devi gestire l'errore di accesso al file (l'accesso esclusivo) segnalando all'utente di rendere disponibile il file tmp per la modifica chiudendo Word stesso.
LoryOne non  collegato   Rispondi citando
Vecchio 22-06-2004, 08.58.30   #3
gkcuvb
Junior Member
 
Registrato: 03-04-2002
Loc.: Follonica
Messaggi: 94
gkcuvb promette bene
Ma non c' in modo di sapere se il file aperto senza che compaia la finestra di word dove mi dice che il file in sola lettura? Se riuscissi a spere prima se il file gi aperto potrei salvare il mio nuovo file direttamente da un'altra parte.
gkcuvb non  collegato   Rispondi citando
Vecchio 22-06-2004, 09.31.38   #4
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
Puoi provare ad aprirlo e se ti da un errore vuol dire che gi aperto.
Potresti fare una cosa cos:

Codice:
Function Func_ControllaFileAperto(PthFile As String)As Boolean
Dim Stato As Booelan

Stato=False
On Local Error Goto Errore
If Dir$(PthFile)<>vbNullstring Then
   Open PthFile For Input As FreeFile
   Reset
End If
Func_ControllaFileAperto=Stato
Exit Function
Errore:
Stato=True
Resume Next
LoryOne non  collegato   Rispondi citando
Vecchio 22-06-2004, 09.39.14   #5
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
Non funziona, come non detto.
LoryOne non  collegato   Rispondi citando
Vecchio 22-06-2004, 09.41.28   #6
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Aprendolo semplicemente per "output" non dovrebbe dare un'access denied?

Bye
P8257 WebMaster non  collegato   Rispondi citando
Vecchio 22-06-2004, 10.11.47   #7
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
He he he, dovrebbe ! (Y) ma non cos.
Quando apri un file di Word, esso si crea un file temporaneo identificato con ~$Nomefile.doc (cedigliadollaro) che ha attributo Hidden+Archive.

Il nome del file che segue ~$ ha lunghezza variabile, nonch nome variabile.
Se per il nome del file piuttosto corto (non saprei dire quanto), come nel caso in esame, il nome del file non subirebbe variazioni.

Nel caso in esame dovrebbe essere ~$temp.doc

Funzione:
Funzione=Iff(Dir$(NomeFile,vbHidden+vbArchive)<>vb nullstring,true,false)

E' uno schifo, lo so per al momento non mi viene in mente nulla di meglio
LoryOne non  collegato   Rispondi citando
Vecchio 22-06-2004, 11.03.19   #8
gkcuvb
Junior Member
 
Registrato: 03-04-2002
Loc.: Follonica
Messaggi: 94
gkcuvb promette bene
Ho provato.....ma la funzione mi ritorna sempre vero....ho dimenticato qualcosa?
gkcuvb non  collegato   Rispondi citando
Vecchio 22-06-2004, 11.28.21   #9
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Provare a cancellare il file temporaneo (utilizzando come caratteri di ricerca la tilde iniziale) e gestire l'access denied?...

Bye
P8257 WebMaster non  collegato   Rispondi citando
Vecchio 22-06-2004, 11.59.40   #10
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
Quota:
Originariamente inviato da gkcuvb
Ho provato.....ma la funzione mi ritorna sempre vero....ho dimenticato qualcosa?
Prima di tutto controlla la presenza del file temporaneo.
In secondo luogo accertati della correttezza del percorso e del nome del file che imposti nel Dir$
non mi piace come soluzione ma a me funziona.
LoryOne non  collegato   Rispondi citando
Vecchio 22-06-2004, 18.50.19   #11
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
2 Soluzioni di cui la seconda decisamente pi professionale, infatti si basa sull'handle del file aperto (Impossibile eseguire da VB puro)

Soluzione 1:
Codice:
Function Func_FileWordAperto(sPath As String,sFile As String) As Boolean
If Right$(sPath,1)<>"\" Then sPath=sPath & "\"
If Left$(sFile,2)<>"~$" Then sFile="~$" & sFile
Func_FileWordAperto=IIf(Dir$(sPath & sFile),vbHidden+vbArchive)<>vbNullString,True,False)
End Function
Soluzione 2:
Codice:
Private Const OPEN_EXISTING = 3

Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Private Type BY_HANDLE_FILE_INFORMATION
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    dwVolumeSerialNumber As Long
    nFileSizeHigh As Long
    nFileSizeLow As Long
    nNumberOfLinks As Long
    nFileIndexHigh As Long
    nFileIndexLow As Long
End Type

Private Declare Function GetFileInformationByHandle Lib "kernel32" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Function Func_FileWordAperto(sFile As String) As Byte
Dim hFile As Long, FileInfo As BY_HANDLE_FILE_INFORMATION

hFile = CreateFile(sFile, 0, 0, ByVal 0&, OPEN_EXISTING, 0, ByVal 0&)
GetFileInformationByHandle hFile, FileInfo
CloseHandle hFile
Func_FileWordAperto = FileInfo.nNumberOfLinks
End Function
La funzione ritorna 0 se il file aperto da Word, 1 in caso contrario
LoryOne non  collegato   Rispondi citando
Vecchio 24-06-2004, 09.07.57   #12
gkcuvb
Junior Member
 
Registrato: 03-04-2002
Loc.: Follonica
Messaggi: 94
gkcuvb promette bene
Scusate ma non sono ancora riuscite a risolvere il mio problema...
gkcuvb non  collegato   Rispondi citando
Vecchio 24-06-2004, 09.12.44   #13
gkcuvb
Junior Member
 
Registrato: 03-04-2002
Loc.: Follonica
Messaggi: 94
gkcuvb promette bene
DIvevo appunto che non sono ancora riuscita a risolvere il mio problema, questo il codice che ho utilizzato:

WordApp.Visible = True

'apro il documento
WordApp.Documents.Open (App.Path & "\Moduli\Lista_generale.doc")
WordApp.Documents(WordApp.Documents.Count).SaveAs NomeFile

WordApp.Activate

Insomma apro un documento e vorrei salvarlo immediatamente con un altro nome per non sporcare l'originale, MA......
Utilizzando la funzione che mi avete suggerito riesco a non avere l'errore sul SaveAs, ma ho comunque un'errore quando vado ad aprire il modello, come se mi rimanesse aperto....anche se io non lo vedo pi fra i documenti aperti....
gkcuvb non  collegato   Rispondi citando
Vecchio 24-06-2004, 09.21.32   #14
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
Dunque, vediamo se ho capito il problema perch forse non mi chiaro.
Correggimi se sbaglio (o integra con eventuali mie dimenticanze).

Tu hai creato una base dati con Access che ti serve per creare un file di Word, in Stampa Unione, presumo.
La prima cosa da fare creare un riferimento all'oggetto Word.Application e da qui proseguire passo-passo per interfacciarsi al Database e creare il file di Word.

Il file viene creato e chiamato temp.doc.
Il file deve poi essere modificato o ricreato completamente.
Prime di effettuare le due operazioni sopra descritte buona norma chiudere il file per poi riaprirlo e procedere con le modifiche.

Entrmabi i codici posati funzionano perfettamente nel caso in cui il file temp.doc sia presente sull 'hard disk e sia aperto da Word.
Non pu non funziopnare, l'ho testato e funziona.
Probabilmente il tuo problema dipende da qualcos'altro che per non riesco ad immaginare.
Forse ci aiuteresti maggiormante se ci spiegassi passo-passo la procedura che hai seguito fino al presentarsi dell'errore
LoryOne non  collegato   Rispondi citando
Vecchio 24-06-2004, 09.23.52   #15
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
Scusa, mentre stavo scrivendo non mi sono accorto che avevi scritto qualcosa di pi
LoryOne non  collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
Il codice HTML OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Free Word password / Excel password recovery crazy.cat Segnalazioni Web 4 03-03-2012 15.27.53
Free PDF to Word Doc Converter version 1.1 crazy.cat Segnalazioni Web 0 20-04-2008 18.11.07
Microsoft Office Compatibility Pack per formati di file Word, Excel e PowerPoint 2007 crazy.cat Segnalazioni Web 0 19-01-2007 16.09.52
Word si imposto su tutti Lillo Office suite 17 31-05-2004 13.55.14
Word 2000 su Win XP ferrari.m Software applicativo 2 17-09-2003 08.59.37

Orario GMT +2. Ora sono le: 20.31.41.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright Jelsoft Enterprises Limited.