Créer une base de données Access en vb.net

Résolu/Fermé
Utilisateur anonyme - 5 mai 2008 à 00:35
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 - 5 mai 2008 à 01:08
Bonjour,

Voila plusieurs dizaines de minutes qu'un truc m'énerve au plus haut point. Je cherche à générer une base de données Access en VB.Net. Un champ devrait avoir la propriété Numéro auto. Et ben malgré plusieurs codes sources que j'ai vu, aucun ne fonctionne! Si quelqu'un pouvait m'éclairer. Voici le code :
        Dim adCat As New ADOX.Catalog
        Dim tb As New ADOX.Table
        adCat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb")

        tb.Name = "Contacts"

        Dim col As New ADOX.Column
        col.Name = "Numéro"
        col.Type = ADOX.DataTypeEnum.adInteger
        tb.Columns.Append(col)

        tb.Columns.Append("Nom", ADOX.DataTypeEnum.adVarWChar, 50)
        tb.Columns.Append("Prénom", ADOX.DataTypeEnum.adVarWChar, 50)
        tb.Keys.Append("PK_Numero", ADOX.KeyTypeEnum.adKeyPrimary, "Numéro")

        adCat.Tables.Append(tb)


Donc le champ Numéro devrait être automatique. D'après plusieurs forums, il faudrait mettre ça comme :

col.Properties("AutoIncrement").Value = True

Et ben VB.Net ne veut rien savoir, il me dit que cette propriété n'est pas présente dans la liste, qui est même vide (si je fais un col.Properties.Count ça me renvoie 0). Ca commence vraiment à m'énerver, alors si quelqu'un a une indication, je suis preneur.
A voir également:

6 réponses

BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
5 mai 2008 à 01:08
Ouais sauf que moi je termine le boulot à 5h du mat' ^^
Mais bon... bonne nuit à toi :p
1
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
5 mai 2008 à 00:47
Hello
tu pourrais toujours essayer une autre façon de faire...

J'ai pioché ce code SQL sur un site, il te suffira de l'adapter et de l'utiliser dans ton code :
CREATE TABLE Product
(
ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
Name VARCHAR(40) NOT NULL,
PRIMARY KEY (ID)
);

En espérant que ça pourra t'aider


0
Utilisateur anonyme
5 mai 2008 à 00:55
Oui j'y ai pensé, mais disons que si .NET fournit déjà des objets qui s'occupent de gérer du SQL pour toi, il faut les utiliser. C'est bien plus simple (quoique ça peut devenir tout aussi "prise de tête" dans certains cas).

Mais je viens juste de trouver où se trouve mon erreur : visiblement, il faut mettre

col.ParentCatalog = adCat

Quand on crée un objet Column pour prendre les propriétés de la BD visiblement.

Après je peux mettre :

col.Properties("Autoincrement").Value = True
col.Properties("Seed").Value = 1
col.Properties("Increment").Value = 1

Et ça marche. Dire que j'ai trouvé par hasard...
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
5 mai 2008 à 00:58
Ah oki...
Je comprend pas trop pourquoi il faut directement associer un objet colonne à un catalogue pour pouvoir initialiser ses propriétés... mais bon ^^ Le principal c'est que ça marche.
Bin t'as résolu ton propre problème... Congratulations ;)
0
Utilisateur anonyme
5 mai 2008 à 01:01
Moi non plus, mais bon vu que ça marche, je dis pas non...

Sûrement pour obtenir les propriétés de ce catalogue... Vu que l'objet Column n'est pas sensé savoir à quelle base de données on est connecté, il faut un minimum d'infos...
0

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

Posez votre question
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
5 mai 2008 à 01:03
Oui mais bon... je prend une analogie foireuse...
Quand tu initialise un item que tu vas insérer à une listview, tu le fais d'abord, puis tu l'insères seulement après à ton contrôle...
Enfin bon... si l'informatique était logique, ce ne serait plus l'informatique :p
0
Utilisateur anonyme
5 mai 2008 à 01:06
On a peut être atteint l'heure où le cerveau travaille en mode "économie d'énergie"...

Le mieux sera d'aller dormir un peu et reprendre le problème sous un autre angle après le repos. LOL. Bonne nuit.
0