IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

ADOX et Relation


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut ADOX et Relation
    Bonjour a tous.
    J'essaie de créer des relations en utilisant ADOX.
    Je ne peux pas en SQL car is je prends comme Provider dans ma chaîne de connexion 'Mircosoft.Jet.OLEDB.4.0' alors je ne peux faire des requêtes sontenant le mot 'module' ou 'zone' pourquoi j'en sais rien.
    si je prends le provider 'MSDASQL.1' alors là je ne peux pas dans ma requête SQL ajouter des 'ON UPDATE CASCADE' qui ne sont pas gérés.

    J'essaie donc de créer ma relation en utlisant l'objet Key de ADOX seulement ca ne fait rien!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Prov = 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;
    Voilà si quelqu'un a déjà fait et réussi je suis preneur.
    J'ai même essayé de faire la requête en mode SQL et de rajouter le 'ON UPDATE CASCADE' après via une ADOXKey mais je crois que une fois l'objet crée on ne peut plus le modifier.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    Question subsidiare:
    Pourquoi si j'utilise ADOCommand avec provider=Microsoft.Jet.OLDEB.4.0
    et la requête SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE CA ADD CONSTRAINT CentCA FOREIGN KEY (Module) REFERENCES Cent(ID)
    cela me génère une erreur dans la clause constraint mais si je fais un copier coller sous access en mode sql dans création de requête cela se passe bien!!!
    Je sais que c'est le champ Module qui pose un souci car si je le renomme sans e cela passe bien. Mais je comprends pas cette différence de comportement et comment surtout passée outre !!!

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Ton problème de mot clé "module" c'est comme dans le précédent sujet Utilisation TADOCommand et Paramètres

    Module et Zone sont peut-être des mots clés de ADOX \ 'Mircosoft.Jet.OLEDB.4.0', faudrait vérifier cela !
    Il existe d'autres chaines de connexion pour ACCESS, tu devrais voir ça aussi
    Connection strings for Access

    'ON UPDATE CASCADE' ne passe en 'MSDASQL.1' mais ça passe sous ACCESS directement ?
    'MSDASQL.1' c'est un provider générique, il utilise le DSN pour déterminer la base en dessous, il n'y a rien de plus "dédié" ?


    C'est encore du ACCESS ?
    ça m'étonne que cela gère autant de chose dans ACCESS !
    N'oublie pas que ce n'est pas un vrai SGBD, c'est une solution bureautique, loin des performances et capacité de SQL Server

    D'ailleurs, pense à chaque fois de nous spécifier la DB utilisée !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Par défaut
    oui mon problème de module est le même que dans le précédent post.

    Ben mon souci c'est que si je prends ma requête avec module et zone sous access en mode SQL cela fonctionne. Et je n'ai pas réussi à trouver la liste des mots clefs pour jet. ( je suis pas le plus fin limier du web non plus)

    Alors oui les ON UPDATE Cascade passe sous access en mode SQL.

    Je sais que ACCESS n'est pas une vrai SGBD mais quand on reprend quelque chose qui existe juste pour l'adapter ben on fait avec l'existant!!

    Sinon merci pour les connection string mais aucune ne me permet de résoudre mon pb!!

Discussions similaires

  1. Mettre en relation les contrôles DBLookUpComboBox et DBGrid
    Par Gendarmette dans le forum Bases de données
    Réponses: 7
    Dernier message: 19/01/2004, 13h16
  2. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07
  3. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26
  4. Réponses: 2
    Dernier message: 26/09/2003, 15h54
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo