[ACCESS]problème d'ouverture d'application

problème d'ouverture d'application [ACCESS] - VB/VBA/VBS - Programmation

Marsh Posté le 02-08-2007 à 12:49:28    

bonjour tout le monde!
 
j'ai besoin, dans ma base de données, d'ouvrir un fichier PDF. j'ai donc défini mon champ "LienDocTechnique", dans lequel je compte rentrer le chemin d'accès a mon fichier. mon fichier, pour ce test, se trouve là: "C:\Documents and Settings\areitz\Bureau\cata"
 
a terme, tous mes documents seront sur un DD du réseau et l'endroit ne devrait plus bouger...  
 
en fait, je souhaiterai ouvrir mon fichier via un bouton. je viens d'essayer avec l'assistant access mais cela ne fonctionne pas ... j'ai ce code derrière le bouton:
 
Private Sub Commande18_Click()
On Error GoTo Err_Commande18_Click
 
    Dim stAppName As String
 
    stAppName = "C:\Documents and Settings\areitz\Bureau\cata"
 
    Call Shell(stAppName, 1)
 
Exit_Commande18_Click:
    Exit Sub
 
Err_Commande18_Click:
    MsgBox Err.Description
    Resume Exit_Commande18_Click
     
End Sub
 
pour l'istant le chemin est fixe, a terme il devra ouvrir le fichier contenu dans le chemin défini dans mon champ "LienDocTech"...  mais on n'en est pas encore là... pour l'instant j'ai juste besoin d'ouvrir ce fichier comme indiqué...  
 
j'ai éssayé de mettre cata.pdf dans le chemin, mais rien n'y fait...
 
silvouplé...

Reply

Marsh Posté le 02-08-2007 à 12:49:28   

Reply

Marsh Posté le 02-08-2007 à 16:01:53    

Bonjour,
stAppName = "C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe C:\Documents and Settings\ENFANTS_2\Mes documents\essaimergeTAM136.pdf"
    Call Shell(stAppName, 1)
Fonctionne très bien
Codialement

Reply

Marsh Posté le 02-08-2007 à 16:38:19    

donc dans mon stappname je met d'abord le chemin d'accès de mon programme, et ensuite celui de mon fichier... merci beaucoup! comme ca j'ai pu voir que je n'avais pas adobe... pas facile d'ouvrir un progamme que l'on a pas...
 
et penses tu que cela puisse etre dinamique: en l'état, il faut aller dans menu, insertion, objet, chercher l'objet... c'est pénible si la base a besoin de ces manips tout le temps... j'aimerai directement arriver a la fenetre d'exploration, sans passer par le menu...  
 
merci pour tout

Reply

Marsh Posté le 02-08-2007 à 20:56:00    

Re,
je n'ai pas bien compris ta question, mais voici une séquence d'ouverture de la boite de dialogue:
 
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.InitialFileName = "C:\Documents and Settings\areitz\Bureau\"
fd.Filters.Clear
fd.Filters.Add "Adobe", "*.pdf"
fd.Show
If fd.SelectedItems.Count > 0 Then MsgBox fd.SelectedItems(1)
Cordialement

Reply

Marsh Posté le 03-08-2007 à 09:59:39    

en fait, ces lignes de codes apparaitront derrière mon instruction Double click de la zone de lien OLE. en fait, j'aimerai faciliter la procédure de liaison d'un rapport, à savoir ne pas contraindre l'utilisateur a passer par le menu de Access pour lier un rapport de maintenance a un appareil. l'objectif est d'enregistrer le chemin d'accès au fichier PDF dans un champ, et qu'a chaque nouvel enregistrement il soit possible de réitérer la meme manipulation. (on est toujours avec les appareils et les controles qualité... je fais une sorte d'agenda/Inventaire/boite mail apartir d'access... pour la partie boite mail j'ai abandonné... je voulais envoyer par mail aux utilisateurs le nombre de jour restant avant le prochain controle de tel ou tel appareil...

Reply

Marsh Posté le 03-08-2007 à 10:19:05    

Re,
que contient ton lien ole?
tu veux sur chaque fenètre concernant un appareil disposer d'un moyen d'afficher le pdf sur un simple clic?
 

Reply

Marsh Posté le 03-08-2007 à 10:26:56    

oui... je pensais pouvoir enregistrer un lien OLE différent pour chaque enregistrement...
 
dans ma table "controle qualité niveau B" j'ai un champ de type LienOLE appelé "LienCQNivB", et ma table est lié a la table Installation_Appareil.

Reply

Marsh Posté le 03-08-2007 à 10:44:16    

re,
peux-tu nous envoyer un mdb?  (Access 2002 )

Reply

Marsh Posté le 03-08-2007 à 11:28:41    

je suis sous access 2000... je peux envoyer tout ce que vous voulez, il suffit de me dire quoi faire...

Reply

Marsh Posté le 03-08-2007 à 11:30:06    

dans ce sens là il y aura pas trop de soucis  :whistle:

Reply

Marsh Posté le 03-08-2007 à 11:30:06   

Reply

Marsh Posté le 03-08-2007 à 11:39:47    

qu'est-ce qu'un MDB? modèle de Base? un shéma?  


Message édité par La poisse1 le 03-08-2007 à 11:41:20
Reply

Marsh Posté le 03-08-2007 à 11:59:33    

le fichier mdb c'est la bdd, donc tu peux lui envoyer ca oui

Reply

Marsh Posté le 03-08-2007 à 12:13:00    

elle fait déjà 7Mo... avec seulement 4 formulaires 2 requetes et 2 enregistrements dans la base! si ca c'est pas une usine a gaz de dingue...

Reply

Marsh Posté le 03-08-2007 à 12:14:48    

fais tools> options de la bdd>compacter la base, ca gagnera de la place :)

Reply

Marsh Posté le 03-08-2007 à 12:33:09    

ah ben tout de suite... 657Ko... ca va mieux... a quelle adresse j'envoie la base? j'atend vos adresses en message privé...

Reply

Marsh Posté le 03-08-2007 à 12:50:54    

re,
http://www.cjoint.com/
pratique, mais un inconvenient, le fichier joint n'est conservé qu'un certain temps
Cordialement

Reply

Marsh Posté le 03-08-2007 à 12:57:51    

et bien c'est fait... http://cjoint.com/?idnRMaEnOl
éclatez vous avec tout ca... mois ca fait un mois et demi déjà... en meme temps, et pour ca je dois remercier tres sincerement jpcheck, les progrès effectués sont énormes!!!


Message édité par La poisse1 le 03-08-2007 à 13:44:12
Reply

Marsh Posté le 03-08-2007 à 12:59:56    

précision: jpcheck, la partie qui concerne l'etablissement, hopital, service etc... je l'ai laissé de coté, j'y reviendrai plus tard, je me suis fait casser les desnt quand ils ont vu que j'avais toujours pas le système d'alerte lors de la dernière réunion... :)

Reply

Marsh Posté le 03-08-2007 à 13:35:19    

Bonjour,
Le lien donne ton mail pas la bdd lol
@+

Reply

Marsh Posté le 03-08-2007 à 13:42:48    

c'est c... je recommence et je modifie le post laissé précédement

Reply

Marsh Posté le 03-08-2007 à 13:44:31    

voila qui est fait

Reply

Marsh Posté le 03-08-2007 à 14:45:27    

de rien, je laisse senior achever le topic, sauf besoin express ;)

Reply

Marsh Posté le 03-08-2007 à 18:06:01    

Bonsoir,
Ce lien n'est pas ou n'est plus disponible!!!
on n'a pas de chance
tu me "mail " et je remettrai sur cjoint
Cordialement
 

Reply

Marsh Posté le 03-08-2007 à 18:15:07    

décidement c'est de l'acharnement... vive la loi de murphy...  
j'envoi par mail pas de souci.  
merci

Reply

Marsh Posté le 03-08-2007 à 19:37:08    

Bonsoir,
j'ai reçu,  
 
pourquoi veux-tu passer par un OLE?
si tu mets le nom du rapport dans ta zone de texte, tu peux lancer le shell ..... de la façon suivante:
 
stAppName = "C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe C:\Documents and Settings\ENFANTS_2\Mes documents\" & liendoctechnique & ".pdf"  
    Call Shell(stAppName, 1)  
 
 
tu adaptes , et pour tester ajoute un champ texte dans la table avec le nom du pdf de la doc technique
Cordialement
 
je mets sur cjoint le copie de.... ou le copie de copie....?


Message édité par seniorpapou le 03-08-2007 à 19:37:54
Reply

Marsh Posté le 03-08-2007 à 22:58:32    

c'est vrai qu'en y réfléchissant y'a pas besoin d'OLE... je peux me servir d'un petit programme de recherche windows ou il fqut que les utilisateurs se tapent la recherche a la main?

Reply

Marsh Posté le 03-08-2007 à 22:59:34    

pardon pour les q a la place des a et inversement, je jongle entre clavier azerty et qwertz...  

Reply

Marsh Posté le 04-08-2007 à 07:20:29    

Bonjour,
J'avais cru comprendre que tous tes pdf seraient au même endroit.
En normalisant  un peu tu dois pouvoir dire: tous les modes d'emploi sont dans le dossier "mondossier" (par exemple)  du disque S: et chaque mode d'emploi porte le nom de l'appareil.
(on suppose que Modèleinstall est unique, sinon on ajoute le nom du constructeur)
ainsi tu auras pour othophos :sachant que Modèleinstall="othophos"
 
 
PdfAouvrir= "S:\.......\mondossier\" & Modèleinstall
puis:
 
MonAppli="C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe "
puis:
 
stAppName=MonAppli & PdfAouvrir
Call Shell(stAppName, 1)  
 
 
Les utilisateurs n'ont donc pas besoin d'aller chercher le pdf.
 
Cordialement


Message édité par seniorpapou le 04-08-2007 à 07:22:11
Reply

Marsh Posté le 04-08-2007 à 10:13:35    

Bonjour,
je sais porquoi ton .mdb ne va pas sur cjoint: il est trop gros, la limite de cjoint est 500ko
quelqu'un a-t-il un site moins restrictif?
Cordialement

Reply

Marsh Posté le 06-08-2007 à 17:00:41    

merci beaucoup seniorpapou pour ta mise a jour, je peux maintenant afficher le nombre de jours restant dans ma zone de texte... chouette!
 
j'ai encore vadrouillé dans les bureaux de mes collègues et ils ne sentent pas trop bien le fait de devoir normaliser le nom des fichiers, car une petite erreur de frappe ou un espace de trop poserait vite problème, et ils ne sauraient pas forcément quoi faire vu que je ne serai plus avec eux fin aout... en plus, certaines personnes voudraient garder pour eux leurs rapport de controle qualité. (plus conservateur que ca...)  
 
j'ai donc farfouillé, cherché, et encore cherché. et j'ai finalement trouvé.
les rapports doivent donc pouvoir se trouver n'importe ou, que ce soit sur le C: ou sur le réseau, en fonction de la facon de travailler de chacun, ils pouront soit ne rien ranger du tout et la base doit le gérer, soit structurer leur PC au cas ou la base ne bug... donc je vais me servir du code de senior papou pour ouvrir mon PDF une fois qu'il est lié, et j'ai trouvé un code simpa pour importer mon fichier sans passer par le menu insertion, juste en lisant le chemin d'accès et en le recopiant dans une table... voila le code, récupéré sur CodeS-sourceS:
 
'Utilisation de la fonction :
'mettre une commande de type : Call OuvrirAvecCD("xls", "c:\", "TOTO fait du ski" )
'Puis ont peux récupérer le chemin du fichier sélectionné par l'utilisateur
'dans la variable "FichierSélectionné"
'c'est tout !
 
Public FichierSélectionné As String
 
Public Function OuvrirAvecCD(Extension As String, DOSSIER As String, TITRE As String)
    FichierSélectionné = ""
    Set CD = CreateObject("MSComDlg.CommonDialog" )
    On Error Resume Next
Debut:
    With CD
        .MaxFileSize = 260
        .InitDir = DOSSIER
        .CancelError = True
        .DialogTitle = TITRE
        .Filter = "Fichiers " & Extension & "(*." & Extension & " )|*." & Extension & "|"
        .FilterIndex = 1
        Err.Clear
        .ShowOpen
        If Err.Number <> 0 Then
            If MsgBox("Vous n'avez pas sélectionné de fichier." & Chr(10) & "Voulez-vous annuler la sélection ?", vbYesNo, TITRE) = vbYes Then
                Exit Function
            Else
                GoTo Debut
            End If
        End If
    End With
    FichierSélectionné = CD.FileName
    Set CD = Nothing
End Function
 
 
mon mini problème c'est de récuperer la valeur de CD.Filename: je voudrai l'afficher dans une zone de texte( donc en appelant NomDeLaFonction.FichierSélectionné) et le copier dans le champ "LienVersCQ" de l'enregistrement en cours... comment puis-je faire cela?
 
merci d'avance...

Reply

Marsh Posté le 06-08-2007 à 17:19:55    

Bonsoir,
pour appeler ta fonction tu peux ecrire:
 
LienVersCQ=OuvrirAvecCD(.........)
 
et tu places l'instruction:
OuvrirAvecCd=CD.filename
avant le Set CD=Nothing
 
Cordialement
 
 

Reply

Marsh Posté le 06-08-2007 à 17:30:21    

nickel... eh bien il me semble que je touche au but...  
il ne me reste plus qu'a afficher mon alerte dans une zone de texte, et a faire le lien avec la partie administration...  
 
la partie administration est une sorte de gros entonnoir ou le bout le plus fin de l'entonnoir est l'appareil, le plus gros c'est l'établissement, et les etapes de l'entonnoir sont l'hopital, le service, la salle... le soucis c'est de gérer les redondances: au CHU il y a deux hopitaux au nom différent, mais dont le nom des services sont identiques... pour l'instant j'arrive pas a filtrer correctement... mais je vais deja faire fonctionner correctement ces deux parties avant, peut etre, de revenir poster par ici... merci a tous et je vous donne des nouvelles de l'avancement des choses...
 
a bientot

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed