Bonjour,
j'ai un programme qui pilote Access. Le problème, c'est que ce n'est pas tous les postes qui ont Access et la même version. Je cherche une façon de savoir si
A- Access est installé
B- Si oui, quel version ?
Merci de vos suggestion.
Bonjour,
j'ai un programme qui pilote Access. Le problème, c'est que ce n'est pas tous les postes qui ont Access et la même version. Je cherche une façon de savoir si
A- Access est installé
B- Si oui, quel version ?
Merci de vos suggestion.
je voi pas l'intérêt....
tu parle de Access que ce soit 2003 ou 2007,
mais u va être obligé de travaillé avec une extension identique (.mbd de 2003) non?
2007 va être également capable de travailler sur ce format, donc c'est bon
Oui je comprend ce que tu dis, mais j'ai des problèmes de compatibilité entre les versions. Je développe sur un poste avec Access 2003. Pour automatiser access j'utilise la référence à Access 2003, un petit exemple:
quand je roule ce code sur un poste avec Access2007 j'ai le code d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim appAccess2003 As Microsoft.Office.Interop.Access.Application Try appAccess2003 = New Microsoft.Office.Interop.Access.Application IconeAccess2003.Image = My.Resources.AccessOn lblAccess2003.Text = appAccess2003.SysCmd(AcSysCmdAction.acSysCmdAccessVer) appAccess2003.Quit() Catch ex As Exception IconeAccess2003.Image = My.Resources.AccessOff lblAccess2003.Text = "Erreur" MessageBox.Show(ex.Message) Finally appAccess2003 = Nothing End TryAvant j'utilisais une liaison tardive pour contourner ces problèmes:La récupération de la fabrique de la classe com ... à échoué en raison de l'erreur suivante : 80040154.
encore une fois, sous 2007 j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim LateAccess As Object Try LateAccess = CreateObject("Access.Application") IconeLateAccess.Image = My.Resources.AccessOn lblLateAccess.Text = LateAccess.SysCmd(AcSysCmdAction.acSysCmdAccessVer) LateAccess.Quit() Catch ex As Exception IconeLateAccess.Image = My.Resources.AccessOff lblLateAccess.Text = "Erreur" MessageBox.Show(ex.Message) Finally LateAccess = Nothing End TryLes postes équipé de office2007 tourne sous Win7 version 64 bits, peut-être une source de mon problème? Si vous pouviez me remettre sur les rails, car j'ai l'impression de rouler dans la broussailleImpossible de créer le composant ActiveX.
ah ...
ton poste équipé de Access 2003 tourne sur un OS 64 bit ?
attention aux applications 32 bit et 64 bit *sa peut venir de la aussi ...*
Quel méthode tu utilise pour te connecter a une Base?
voici la procedure ou ça coince
ce que je voulais faire, c'est d'ouvrir un fichier Access, modifier une requete, ensuite imprimer un Etat sur l'imprimante choisi. Encore une fois le code devais fonctionné avec Access 2000 ( ce qui n'est plus le cas maintenant ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Public Sub PrintRapport(ByVal MonImprimante As String, ByVal CodeUsager As String, ByVal DateDebut As Date, ByVal DateFin As Date, Optional ByVal CodeClient As String = "", Optional ByVal TypeClient As String = "Tous") Dim objAccess As New Mon.Access9.Interop.Application objAccess.Visible = False Try objImprimante.ImprimanteParDefaut = MonImprimante 'Code qui sert à ouvrir une base de données Access inférieur à 2003 qui est protégée par mot de passe 'http://msdn.microsoft.com/en-us/library/aa167790(office.11).aspx Dim objDbEngine As dao.DBEngine objDbEngine = objAccess.DBEngine Dim objDB As dao.Database objDB = objDbEngine.OpenDatabase(MyBase.AdresseDBAccess, False, False, ";PWD=" & MyBase.PasswordDBAccess) objAccess.OpenCurrentDatabase(MyBase.AdresseDBAccess, False) objDB.Close() System.Runtime.InteropServices.Marshal.ReleaseComObject(objDB) objDB = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDbEngine) objDbEngine = Nothing 'Fin du code d'ouverture **************************************************************************** If CodeClient = "" Then CodeClient = "%" If TypeClient = "Tous" Then TypeClient = "%" Dim qu_Rapport As New dao.QueryDef qu_Rapport = objAccess.CurrentDb.QueryDefs("Rapport") Dim stractVente_ActivitesVentes As String = "Ma chaine SQL" qu_Rapport.SQL = stractVente_ActivitesVentes qu_Rapport = Nothing objAccess.DoCmd.OpenReport("MonEtat", Mon.Access9.Interop.AcView.acViewDesign) objAccess.DoCmd.Close(Mon.Access9.Interop.AcObjectType.acReport, "MonEtat", Mon.Access9.Interop.AcCloseSave.acSaveYes) objAccess.DoCmd.OpenReport("MonEtat", Mon.Access9.Interop.AcView.acViewNormal) objImprimante.RestoreDefaultPrinter() objAccess.DoCmd.Quit() Catch ex As Exception Mess.ShowAlert(ex, "", ex.Message) End Try objAccess = Nothing End Sub
Les postes équipés de 2007 sont en 64 bits. Les autres ( 2003 ) sont en 32 bits. Les autres parties du programme fonctionnent très bien, j'utilise sql server. Mes états sont en access par souci d'économie, je sais que ce n'est pas l'idéal mais jusqu'à maintenant ça fonctionnait.
à l'origine je voulais savoir si c'était possible de connaitre la version de Access installé sur le PC. Je suis sur que ça peut se faire mais je ne sais pas comment, et je n'avais rien trouvé sur le sujet dans la FAQ. Donc est-ce possible ou non
J'ai trouvé ma solution, le problème venait du fait que les postes avec office 2007 sont en 64 bits. Dans les propriétés de compilation du programme, je lui ai dit de compiler pour une plateforme x86 au lieu de "AnyCpu". Maintenant, en utilisant un liaison tardive, ça fonctionne sur chacun des postes:
Configurer la plateforme
Pour le faire en VB Express
Un autre lien sur le sujet
Merci de vos réponses
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager