Compufly
Messages postés15Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention21 octobre 2006
-
4 mars 2006 à 18:28
Compufly
Messages postés15Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention21 octobre 2006
-
4 mars 2006 à 21:23
Bonjour,
J'essaie d'utiliser une base de données ACCESS dans mon code en VB6.
J'aimerais que mon code crée une base de données ACCESS vide nommée pool.mdb si elle n'existe pas déjà.
Partout où je cherche, tout le monde dit d'utiliser ADODB pour gérer les bases de données ACCESS, mais tous les exemples de création d'un fichier de base de données ACCESS utilisent DAO...
Quelqu'un peut m'expliquer cette contradiction?
Mais surtout, quelqu'un peut m'indiquer comment créer ma base ACCESS avec ADODB?
Ensuite, je voudrais savoir comment lister le nom des tables existantes d'une base de données ACCESS existante.
Autrement dit, l'équivalent MySQL :
SHOW DATABASES;
SHOW TABLES;
SELECT DATABASE();
DESCRIBE table;
Puis, surtout, pourquoi :
CREATE TABLE player_name IF NOT EXIST ( ...
ne fonctionne pas?
Comment je peux détecter si une table existe ou non avant d'essayer de la créer?
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 4 mars 2006 à 18:49
Salut,
Rajoute la référence Microsoft ADO Ext 2.xx for dll and security.
Donc pour créer ta base access rien de plus simple:
Set catX = New ADOX.Catalog
catX.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TaBase.mdb"
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 4 mars 2006 à 21:10
Merci Darksidious de ton point de vue
Sinon Compufly pour récupérer les champs d'une table c'est à peu près pareil...
Do Until rs.EOF
If (rs.Fields("TABLE_NAME") = "NHL") Then
If rs.Fields("COLUMN_NAME") <> "" Then List1.AddItem rs.Fields("COLUMN_NAME")
End If
rsBase.MoveNext
Loop
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 4 mars 2006 à 19:25
Eh eh, le code qu'il t'a donné précédement te permet juste de créer le fichier, mais pas la base en elle même !
Son deuxième messaye permet par contre de créer 1 table (et déjà, pas mal de lignes de code !!!), je te laisse imaginé le nombre de ligne qu'il faut pour créer une table complète avec des champs indéxés... ca fait peur !!!
Le mieux : fait comme moi : créer une classe permettant de créer facilement et rapidement des tables/champs/index, etc.
Désolé, mais je ne peux pas te donner le code de ma classe : étant donné que je veux vendre le produit d'ici peu...
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 4 mars 2006 à 19:46
Darksidious a raison pour ce qui concerne la création de la base, la on créer que le fichier.
C'est sur après comme te conseilles Darksidious créer une classe pour simplifier les actions sur ta base...
Par contre il m'a semblait avoir lu il y a quelques temps voir plus d'un an, qu'il fallait préférer ado à dao.
Qu'en pensez-vous ??
Compufly
Messages postés15Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention21 octobre 2006 4 mars 2006 à 19:50
Désolé Dark Sidious, je m'étais probablement mal exprimé au départ, je cherchais vraiment un code pour créer le fichier .mdb donc le code de Willi était exactement ce que je cherchais.
Je connais déjà SQL, mais les seules applications que j'ai eu à faire jusqu'à maintenant étaient en PERL et MySQL.
C'est surtout une question d'adaptation au VB6 et M$ ACCE$$ qui me bloque chaque fois que j'essaie de faire quelque chose.
Donc, encore une fois, merci Willi pour le code de création du fichier.
Pour ce qui est de ADODB, je savais la base, mais je ne me serais jamais imaginé que ça prenait autant de code pour remplacer la bonne ville commande MySQL :
SHOW TABLES;
Merci
Par contre, le mystère suivant reste entier...
DESCRIBE table;
CREATE TABLE player_name IF NOT EXIST (...
Est-ce que la seule façon de ne pas recréer une table est vraiment de lister toutes les tables et de faire une boucle de comparaison pour voir si celle qu'on veut créer existe déjà où puis-je simplement demander à ACCESS comme je le fais pour MySQL de créer la table seulement si elle n'existe pas?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 4 mars 2006 à 20:21
Willi : j'ai toujours préféré utiliser DAO à ADO, non pas parce que je suis contre les nouvelles technologies (je prog toujours en VB6, et je ne pense pas migrer vers .NET !!!), mais tout simplement parce que DAO est plus léger et plus rapide qu'ADO. (cependant, je programme qu'en ADO maintenant car il paraît que DAO est obsolète...)
Maintenant, ADO apporte une approche plus objet que DAO, c'est pas plus mal, mais le problème, c'est qu'on a pas mal de dépendances si on veux créer une base et la gérer dans son intégralité, alors qu'avec DAO : on référence la librairie de base (qui en plus était très bien intégrée à VB6), et hop, le tour est joué.
Compufly : oui en effet, ca doit être possible de recréer ensuite toute ta base avec des instructions SQL.
Compufly
Messages postés15Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention21 octobre 2006 4 mars 2006 à 20:57
Je vois.
Je n'ai par contre jamais utilisé les class, donc je préfère ne pas trop m'aventurer à l'extérieur de ce que je connais pour l'instant.
J'ai commencé à travailler avec VB6 il y a un an seulement, avant j'étais toujours avec QBasic sous DOS et C++ sous DOS également.
J'ai aussi utilisé PERL sous Linux et MySQL comme base de données avec mon site Internet de l'époque, donc VB n'est pas vraiment "user freindly" pour moi.
Les objets, je commence à comprendre, mais les class et tout le tralala des ActiveX, j'ai de la misère.
Merci beaucoup pour votre aide.
Willi : Une dernière chose, je vois bien comment lister les tables maintenant, mais comment puis-je lister le nom des fields dans la table?
Par exemple, j'ai une table NHL qui contient les fields PLAYER_NAME et SCORE qui eux même contiennent les valeurs Saku et 20 (admettons).
Que puis-je faire au lieu d'un DESCRIBE TABLE NHL pour lister les noms des deux fields : PLAYER_NAME et SCORE ?