Non car ici on utilise createobject qui gère le activex dynamiquement.
Version imprimable
Non car ici on utilise createobject qui gère le activex dynamiquement.
Bonjour,
Bon,
Ca n'a pas avancé, le pro sur java ne m'a pas fait avancer mais m'a conforté sur mon résonnement dans mon développement : il me faut un contenant pour mes bases de données.:ccool:
Je cherche donc un objet vba dans lequel je pourrais insérer
- Soit mes bases de données
- soit mes recordSet
pour pouvoir y appliquer
- Soit des méthodes intégrés de tri, filtre, etc...
- Soit des requètes SQL
Pour le moment, je fais des recherches sur les recordSet "vièrges" et sur "createDatabae". Et plus tard, je chercherai sur la manipulation de fichier avec une lecture comme une base de données.
Mais j'avoue que ça commence à devenir de la bidouille donc si je pouvais éviter de piocher n'importe comment dans les objets vba...
Bonsoir,
Testes comme ça.
Code:.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & ";Persist Security Info=False"
Merci pour les recherches mais maintenant, j'ai une autre erreur :
Pièce jointe 405211
Bonjour,
Ça ne m'étonne pas, c'est la méthode qu'on utilisait pour Access 2003 (mdb)
Bonjour et merci à dysorthographie pour m'avoir suivi dans mon désordre et mon ignorance qui diminue au fil des conversations
Pour résoudre mon problème, j'ai suivi quelques tutos et notamment :
https://warin.developpez.com/access/dao/?page=partie_4#
Mon problème :
J'ai 8 bases de données identiques (sauf les données) et je veux faire des stat sur les 8 bases en même temps.
dysorthographie me propose de passer par des requêtes SQL avec "UNION ALL IN ('C:\myrep\bd1.mdb')" etc...
Malheureusement les requêtes ne passent pas, pour quelle raison ? Je ne sais pas (encore).
Je me dirige vers ma première intuition : faire une base de données contenant mes 8 bases et ensuite faire des requêtes SQL sur cette base.
La tâche est rude pour mes petites connaissances mais le tuto ci-dessus m'a ouvert l'esprit. J'y est trouvé ma solution:
- Créer un base de données vierge :
- Créer la table qui m'intéresse dans cette base de données :Code:
1
2
3 Set wrkAcc = CreateWorkspace("AccessWorkspace", "admin", "", dbUseJet) If Dir("C:\myrep\NewDB.mdb") <> "" Then Kill "C:\myrep\NewDB.mdb" Set dbsNew = wrkAcc.CreateDatabase("C:\myrep\NewDB.mdb", dbLangGeneral)
- Créer les Champs de cette table :Code:Set nouvelleTable = dbsNew.CreateTableDef("maTable")
- Copier les valeurs dans la nouvelle table grâce aux RecordSet :Code:
1
2
3
4
5
6 For i = 0 To BD.TableDefs("maTable").Fields.Count - 1 'BD étant la base de données à copier With BD.TableDefs("maTable").Fields(i) nouvelleTable.Fields.Append nouvelleTable.CreateField(.Name, .Type, .Size) End With Next i dbsNew.TableDefs.Append nouvelleTable
Voilà il y a certainement un meilleurs moyen mais pour moi le résultat est là. L'inconvénient est qu'il me faut 5 min pour pouvoir créer ma nouvelle base de données qui fait maintenant 2 Go. Pour un traitement mensuel, c'est honorable!Code:
1
2
3
4
5
6
7
8
9 Enr.MoveFirst 'Enr étant le recordSet de la table à copier Do rstNew.AddNew 'rstNew étant le recordSet de la nouvelle table For i = 0 To Enr.Fields.Count - 1 If Enr.Fields(i) <> "" Then rstNew.Fields(i) = Enr.Fields(i) Next i rstNew.Update Enr.MoveNext Loop Until Enr.EOF
Je laisse ces bouts de programme pour les plus compétants ça peut être clair et pour ceux qui veulent des infos supplémentaires (comme le dimensionnement des variables) n'hésitez pas à me contacter.
Je n'ai pas encore testé le SQL sur cette nouvelle base de données, j'espère que ça va passer (pour info, je n'ai pas indexé ma table je ne sais pas si c'est important pour mon utilisation)
Bonjour,
dézip le répertoire sur ton bureau et fais un teste!