Meilleur auteur de réponses
ADOX et Key ou ADOCommand

Question
-
Bonjour,$
je ne sais pas si je suis au bon endroit mais bon.
Alors j'utilise ADOX pour créer ma base de données sous ACCESS (.mdb). J'arrive à créer les tables, les champs et les index seulement impossible de créer des relations par l'objet Key.
[code]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Prov = PROVIDER_SOURCE + mNomFichier; Catalog->set_ActiveConnection(Prov); Catalog->Connect(); OleVariant NomTableDn = "TOTO"; TADOXKey *Key = new TADOXKey(NULL); OleVariant NomRelation = "Relation1"; Key->Name = NomRelation; Key->Type = KeyTypeEnum::adKeyForeign; OleVariant NomTableUp = "TUTU"; Key->RelatedTable = NomTableUp; OleVariant NomChpDn = "Num_TOTO"; OleVariant NomChpUp = "ID"; Key->Columns->Append(NomChpDn,Adox_tlb::DataTypeEnum::adInteger,0); Key->Columns->get_Item(NomChpDn)->RelatedColumn = NomChpUp; if(Casc_Add) Key->UpdateRule = RuleEnum::adRICascade; if(Casc_Del) Key->DeleteRule = RuleEnum::adRICascade; KeyVar = (IDispatch *) Key->GetDefaultInterface(); Catalog->Tables->get_Item(NomTableDn)->Keys->Append(KeyVar,Key->Type,NomChpDn,NomTableUp,NomChpUp); Catalog->Disconnect(); delete Key;
[/code]
Je n'ai aucune erreur mais aucunes relations ne se créent.
Alors j'ai aussi essayé en SQL avec ADO, mais si comme provider dans la chaîne de connexion je mets "Microsoft.jet.OLEDb.4.0" alors je ne peux pas exécuter une requête contenant un nom de champ ou de table qui vaut Module ou Zone.
Si je mets "MSDASQL.1" alors je peux créer les tables avec Module ou Zone mais je ne peut pas créer des relations avec l'option "ON UPDATE CASCADE".
Je suis donc bloqué. J'ai trois solutions possible mais aucune ne fonctionne. (Ou du moins je n'y arrive pas).
Je précise je en suis pas ne Visual C++ mais en C++ builder mais je cherche les réponses ou je peux les trouver!!
Je suis preneur d'une solution qui fonctionne!!!!!
Merci d'avance
- Déplacé Ciprian Duduiala mercredi 7 décembre 2011 07:58 hors contexte (Origine :Visual Basic 6)
Réponses
-
D’accord avec vous, mais C++ Builder n’est pas un produit Microsoft et votre problème est généré par le mode dans lequel l’accès à votre base de données Access est fait et pas par le produit MS Access, donc je ne peux pas vraiment vous aider. Essayez obtenir d’aide sur le site d’Embarcadero , par exemple.
Je vais déplacer votre question dans le forum avec les messages hors contexte, vu que la question n’est pas liée au développement avec les technologies Microsoft. Merci pour votre compréhension.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Ciprian Duduiala mercredi 7 décembre 2011 07:57
Toutes les réponses
-
Tout d’abord, vous êtes sur le forum VB6. Puis si vous utilisez C++ builder, je ne crois pas que vous avez beaucoup de chances de trouver d’aide sur les forums MSDN.
De toute façon, j’ai trouvé un pdf concernant les bases de données en C++ Builder 2006 . Peut-être essayer créer les tables et créer les relations dans une requête et puis utiliser son nom pour l’appeler dans votre code va résoudre votre problème. Finalement, il faut s’assurer qu’il n’y a pas d’autres relations qui empêchent la création d’une relation nouvelle.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
Bonjour,
En effet j'ai bien vu que j'étais sur un forum VB6. Mais comme ADOX est plus utilisé en VB6 je me suis dit que peut être quelqu'un aurait vu un souci dans ma manière de créer la relation.
De plus j'avais précisé dans mon message que j'ai essayé en SQL mais que j'ai quelque souci.
Enfin je n'avance pas plus malgré cette réponse qui ne me montre pas de chemin que je n'ai pas déjà essayé.
-
D’accord avec vous, mais C++ Builder n’est pas un produit Microsoft et votre problème est généré par le mode dans lequel l’accès à votre base de données Access est fait et pas par le produit MS Access, donc je ne peux pas vraiment vous aider. Essayez obtenir d’aide sur le site d’Embarcadero , par exemple.
Je vais déplacer votre question dans le forum avec les messages hors contexte, vu que la question n’est pas liée au développement avec les technologies Microsoft. Merci pour votre compréhension.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
- Marqué comme réponse Ciprian Duduiala mercredi 7 décembre 2011 07:57