Comment executer une requête Access 2000 sans que Access soit installé? [Résolu]

JLV1975 55 Messages postés jeudi 16 octobre 2003Date d'inscription 15 septembre 2006 Dernière intervention - 31 août 2005 à 12:22 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 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
Afficher la suite 

14 réponses

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 31 août 2005 à 14:51
3
Merci
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

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

cs_Tipo 82 Messages postés dimanche 2 novembre 2003Date d'inscription 13 avril 2017 Dernière intervention - 31 août 2005 à 13:29
0
Merci
Hello,

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

Dim Db As New Access.Application
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 31 août 2005 à 13:33
0
Merci
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.
JLV1975 55 Messages postés jeudi 16 octobre 2003Date d'inscription 15 septembre 2006 Dernière intervention - 31 août 2005 à 14:18
0
Merci
Pour l'instant, on reste sur cette réponse : CE N'EST PAS POSSIBLE!!

J-L
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 31 août 2005 à 14:39
0
Merci
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 31 août 2005 à 14:41
0
Merci
woups :
référence : Microsoft DAO 3.6 Object Library

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

J-L
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 31 août 2005 à 14:53
0
Merci
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...
JLV1975 55 Messages postés jeudi 16 octobre 2003Date d'inscription 15 septembre 2006 Dernière intervention - 31 août 2005 à 14:55
0
Merci
OK, tu as raison.
Alors, peux t-on executer une macro sans que access soit installé?

J-L
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 31 août 2005 à 15:11
0
Merci
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
lefoimpeur 22 Messages postés mardi 20 juillet 2004Date d'inscription 13 février 2006 Dernière intervention - 7 sept. 2005 à 15:57
0
Merci
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 ;)
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 7 sept. 2005 à 16:31
0
Merci
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
lefoimpeur 22 Messages postés mardi 20 juillet 2004Date d'inscription 13 février 2006 Dernière intervention - 7 sept. 2005 à 17:56
0
Merci
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.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 7 sept. 2005 à 18:03
0
Merci
désolé
bon courage
PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.