Comment executer une requête Access 2000 sans que Access soit installé?

Résolu
JLV1975 Messages postés 55 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 15 septembre 2006 - 31 août 2005 à 12:22
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 7 sept. 2005 à 18:03
Tout est dit dant le titre.
Pour info j'utilise ce code trouvé sur ce site, mais il ne fonctionne que si access est installé:
Dim Db As New Access.Application
'Ouvrir la base de données
Db.OpenCurrentDatabase ("C:\base.mdb")
'Exécuter une macro
Db.DoCmd.RunMacro ("Macro1")
'Fermer la base de données
Db.CloseCurrentDatabase
'Libérer les ressources
Db.Quit
Set Db = Nothing
J-L

14 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 août 2005 à 14:51
bah il n'en a pas l'air en tout cas

tu demandes de faire un acces base, une requête, sur une base access2000, sur un poste n'ayant pas access, à partir d'une application VB6.

c'est exactement ce que mon morceau de code fait.
PCPT
3
cs_Tipo Messages postés 82 Date d'inscription dimanche 2 novembre 2003 Statut Membre Dernière intervention 13 avril 2017 1
31 août 2005 à 13:29
Hello,

C'est possible mais pas avec la méthode utilisée dans ce code :

Dim Db As New Access.Application
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
31 août 2005 à 13:33
Salut,



Je pense pas que ça soit possible, déjà ton code commence mal :

Dim Db As New Access.Application = Création d'une nouvelle instance d'access....



Si tu veux utiliser une base access (pas les macro), c'est faisable
avec un langage de prog (VB6, VB.NET, ...) qui exploite le moteur jet
inclu dans le MDAC 2.7. Ca te permet de faire des requêtes sur la base
de données.

Par contre, pour les macro, je suis quasi certain qu'il faut access.



Chris

N'oubliez pas de cloturer votre post.
0
JLV1975 Messages postés 55 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 15 septembre 2006
31 août 2005 à 14:18
Pour l'instant, on reste sur cette réponse : CE N'EST PAS POSSIBLE!!

J-L
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 août 2005 à 14:39
salut,
message à tous, çà vous dirait pas de dire en quel language?

bref, sous VB6, voici une partie de code :

dim db As Database
Const PassBD As String = "MDP"



Dim rs As Recordset
Dim sql As String
dim NbUsers as integer


Set db = OpenDatabase(App.Path & "\bd1.mdb", True, False, ";pwd=" & PassBD)


'compte le nombre d'occurences et formate le tableau users
sql = "SELECT Count(users.USER) AS CompteDeUSER " & _
"FROM users"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
NbUsers = rs("CompteDeUSER")
Set rs = Nothing

fonctionne sur un poste n'ayant pas le PackOffice.....

PCPT
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 août 2005 à 14:41
woups :
référence : Microsoft DAO 3.6 Object Library

PCPT
0
JLV1975 Messages postés 55 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 15 septembre 2006
31 août 2005 à 14:46
Prog en VB6.
Ton code, pcpt, ne parle pas des macros?

J-L
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 août 2005 à 14:53
si tu veux executer une macro, c'est le VBA de access qui le gère. en l'occurrence, en effet, tu ne peux pas ouvrir un document .xls si tu n'a pas excel. pareil pour les macro donc...
0
JLV1975 Messages postés 55 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 15 septembre 2006
31 août 2005 à 14:55
OK, tu as raison.
Alors, peux t-on executer une macro sans que access soit installé?

J-L
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 août 2005 à 15:11
logiquement, non. pas plus que d'ouvrir n'importe que fichier propriétaire sans son logiciel...

idée comme çà, mais me semblant irréalisable :
essayer de trouver en binaire cette macro (à partir de VB, dans la bd), la convertir en VBS, l'enregistrer et l'executer (ce vbs).
(aucune idée si un VBS conçernant access peut fonctionner sans access....)

PCPT
0
lefoimpeur Messages postés 22 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 13 février 2006
7 sept. 2005 à 15:57
Moi j'ai un peu le même soucis.

Dans mon programme j'ai fais une fonction d'exportation et lorsque je
l'installe sur un poste qui ne possède pas access, j'ai le droit à
l'erreur suivante "erreur d'exécution '429' : Le composant ActiveX ne
peut créer l'objet".


Après analyse, j'ai trouvé que ca venait de la fonction OpenCurrentDatabase dans le code suivant:




Public Sub exporter()

Dim chemin As String

Dim cheminExport As String

Dim nom As String

Dim catalogBdd As ADOX.Catalog

Dim tblList As ADOX.Table

Dim ouvert As Boolean

Dim vide As Boolean

Dim exportation As Boolean

Dim db As Access.Application



'Initialisations

exportation = False

Set db = New Application

Set catalogBdd = New ADOX.Catalog



'Si la base de donnée est fermée on l'ouvre

If cnxBdd.State = adStateOpen Then

ouvert = True

Else

If ouvrirBdd Then

ouvert = True

Else

ouvert = False

End If

End If



If ouvert Then

'Récuperation du chemin et du nom de la base

chemin = lireChemin

nom = Mid(chemin, 1, Len(chemin) - 4)

'Ouverture pour l'exportation

db.OpenCurrentDatabase (chemin)

'Ouverture de la boite de dialogue pour choisir le chemin d'ou seront stockées

'les tables exportées

cheminExport = SelectFolder("Sélectionnez un
répertoire de destination pour exporter la base de données :",
frmPrincipal.hwnd)

If cheminExport <> "" Then

'On liste le nom de toutes les tables dans la base de données

'afin de voir si le nom passé en paramètre ne correspond pas à une table déjà existante

catalogBdd.ActiveConnection =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin &
";Jet OLEDB:Database Password=;"

For Each tblList In catalogBdd.Tables

If tblList.type = "TABLE" Then

exportation = True

'Si le port com est ouvert, on le ferme

PortSerie.fermerCom frmPrincipal.MSComm

frmPrincipal.Toolbar1.Buttons("btnEnregistrer").Enabled = False

'Exportation de la base

db.Visible = False

DoCmd.TransferText acExportDelim, , tblList.Name, _


IIf(Right(cheminExport, 1) = "", cheminExport & tblList.Name &
".csv", _

cheminExport & "" & tblList.Name & ".csv"), True

End If

Next

Set catalogBdd = Nothing

db.CloseCurrentDatabase

Set db = Nothing

frmPrincipal.Toolbar1.Buttons("btnEnregistrer").Enabled = True

If exportation Then

MsgBox "Exportation de la
base terminée.", vbOKOnly + vbInformation, "Logiciel Environnement"

Else

MsgBox "La base de données
est vide.", vbOKOnly + vbInformation, "Logiciel Environnement"

End If

Else

CloseCurrentDatabase

End If

End If

End Sub



Ta méthode PCPT parait pas mal mais pourrai-s-je ensuite faire une exportation au format csv de ma base? Si oui comment?



Merci d'avance à tous ceux qui pourront m'aider ;)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 sept. 2005 à 16:31
arf, c'est une idée, je ne connais ni VBA, ni VBS.
donc comment procéder, peut-être en analysant une base avec un éditeur Hexa tel que WinHex, mais aucune idée. ni même si cela est réalisable...

PCPT
0
lefoimpeur Messages postés 22 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 13 février 2006
7 sept. 2005 à 17:56
snif... :(

J'ai beau faire plein de recherches mais rien y fait.



Merci de m'avoir répondu même si tu ne sais comment faire.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 sept. 2005 à 18:03
désolé
bon courage
PCPT
0
Rejoignez-nous