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

WinDev Discussion :

Ajout d'enregistrement par rapport à d'autres tables


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut Ajout d'enregistrement par rapport à d'autres tables
    Bonjour,

    Pour que vous compreniez tout de suite ce que je vais vous dire, voici mon analyse :



    Voici mon ihm :



    Les liste Opérateur, N° de banc, Type de Test et Organe listent les enregistrement des tables Opérateur, Banc, Type_Test et Organe.

    Je souhaite ajouter un enregistrement dans la table Test (tout les champs). Mais les champs doivents etres liés au tables Opérateur, Banc, Type_Test et Organe.
    (Je ne prend pas en compte la table Commentaire)

    J'ai essayé une requete INSERT INTO classique mais ça ne fonctionne pas.

    Comment faire ?

    J'espere avoir été assez clair

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 878
    Points
    12 878
    Par défaut
    Bonjour,
    Citation Envoyé par BaStaub Voir le message
    Bonjour,
    ...
    J'ai essayé une requete INSERT INTO classique mais ça ne fonctionne pas.
    ...
    Qu'est-ce que tu entends pas "ça ne fonctionne pas" ? Tu as un message d'erreur?
    Est-ce que tu peux nous montrer ton code et/ou la requête en question ?
    Est-ce que tes combos sont bien renseignées ?
    Tatayo.

    P.S. Pourquoi une relation 0.1 <> 1.1 entre le test et le commentaire ? Tu ne peux pas avoir plusieurs commentaires pour un test ?

  3. #3
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par tatayo Voir le message
    P.S. Pourquoi une relation 0.1 <> 1.1 entre le test et le commentaire ? Tu ne peux pas avoir plusieurs commentaires pour un test ?
    Non, je ne peut pas avoir plusieurs commentaire. Mais un commentaire peut contenir 500 caracteres, ce qui est largement suffisent.

    Citation Envoyé par tatayo Voir le message
    Est-ce que tes combos sont bien renseignées ?
    Je pense qu'ils sont bien renseignés, quand je démarre l'application, il m'affiche bien tout les enregistrements que contiennent les tables.

    Citation Envoyé par tatayo Voir le message
    Qu'est-ce que tu entends pas "ça ne fonctionne pas" ? Tu as un message d'erreur?
    Est-ce que tu peux nous montrer ton code et/ou la requête en question ?
    Il ne m'affiche pas d'erreur mais il n'ajoute pas d'enregistrement dans la base.
    J'ai essayé 2 requetes :


    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
     
    // Les valeurs contiennent les ID des enregistrements choisis dans chaques listes
    INSERT INTO Test
    (
    	NomOperateur,
    	NumBanc,
    	TypeTest,
    	Libélé,
    	NumTest
    	)
    VALUES
    (
    	{IDOpérateur},
    	{IDBanc},
    	{IDType_Test},
    	{IDOrgane},
    	{NumTest}
    J'ai ensuite essayé celle-ci ! Je ne l'ai jamais utilisé donc je pense que je m'y prend tres mal, elle doit etre completement fausse...

    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
    INSERT INTO Test 
    (
    	DateTest,
    	NomOperateur,
    	NumBanc,
    	TypeTest,
    	Libélé,
    	NumTest
    )
    SELECT te.IDTest 
    FROM Test te, Banc b, Opérateur opé, Organe org, Type_Test ty
    WHERE te.DateTest = {dDateProjet}
    AND opé.IDOpérateur = {sOperateurProjet}
    AND b.IDBanc = {nBancProjet}
    AND ty.IDType_Test = {sTypeTestProjet} 
    AND org.IDOrgane = {sOrganeProjet}
    AND te.NumTest = {NumTest};

  4. #4
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    ta deuxième requête est vraiment fausse et archi fausse. Tu peux l'oublier.
    tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into table (ch1,ch2) 
    values ('ch1','ch2')
    et encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into table (ch1,ch2) 
    values ('ch1','ch2') 
    where ch3 like 'xxd'
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into table (ch1,ch2) values ('ch1','ch2')
    where ch3 in (select ch4 from table2 where ...)
    Mais ta syntaxe ne correspond absolument pas à un insert


    tu as fais un trace ou un info des id de tes combos pour voir quels résultats sont retournés ?
    Gancau

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 878
    Points
    12 878
    Par défaut
    Citation Envoyé par gancau Voir le message
    Bonjour
    ta deuxième requête est vraiment fausse et archi fausse. Tu peux l'oublier.
    Heu... non, je fais souvent des INSERT INTO() SELECT, c'est une syntaxe qui fonctionne parfaitement (mais peut-être pas avec HF ?).

    Bastaub: on peut voir ton code ? Peut-être que tu n'as pas d'erreur car tu ne vérifie pas s'il y en a une ?

    Tatayo.

  6. #6
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Voici le code du bouton "Créer le test" :

    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
    22
    23
     
    // Récupération des donnée qui caractérise un test
    // On récupere la date de début de test choisit
    dDateProjet est une Date 
    dDateProjet = SAI_DATE_Select
    // On récupere l'ID de l'opérateur choisit
    sOperateurProjet est une chaîne
    sOperateurProjet = COMBO_Opérateur_Select
    // On récupere l'ID du numéro de banc choisit 
    nBancProjet est un entier
    nBancProjet = COMBO_Banc_Select
    // On récupere l'ID du type de test choisit
    sTypeTestProjet est une chaîne
    sTypeTestProjet = COMBO_Type_Test_Select
    // On récupere l'ID de l'organe choisit
    sOrganeProjet est une chaîne
    sOrganeProjet = COMBO_Organe_Select
    // On récupere le numéro de test
    NumTest est une chaîne
    NumTest = SAI_NumTest_Select
     
    // On éxecute la requete d'ajout de test 
    HExécuteRequête(REQ_Ajout_Test)
    REQ_Ajout_Test correspond à une des requete que j'ai détaillé plus tôt.

    Gancau : Merci, je vai essayer de faire une requete comme tu me le propose. J'ai bien vérifié que les valeures que me retourne les liste était bien les bonnes, et c'est le cas, elles correspondent bien au id des enregistrements

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 878
    Points
    12 878
    Par défaut
    Tu ne vérifies pas si la requête fonctionne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SI PAS HExécuteRequête(REQ_Ajout_Test) ALORS
        Erreur(hErreur())
    fin
    Ainsi tu sauras peut-être ce qui ne va pas

    Tatayo.

  8. #8
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Effectivement il me met une erreur : 70208 !
    Je vai essayé d'en savoir plus

  9. #9
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Y a un truc que je comprend pas !
    Quand je test la requete seule, elle ajoute bien un test, mais quand je l'ajoute au code du bouton, elle ne marche plus ! C'est à ce moment la qu'elle affiche l'erreur 70208 !

  10. #10
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    D'après le code
    70208: ERREUR D'INITIALISATION DE LA REQUÊTE
    Une erreur a été rencontré dans l'analyse de la requête. Le message d'erreur détaille exactement le problème
    .
    Tu peux mettre le détail exact ?

    tatayo
    Heu... non, je fais souvent des INSERT INTO() SELECT, c'est une syntaxe qui fonctionne parfaitement (mais peut-être pas avec HF ?).
    Méa culpa.

    Gancau

  11. #11
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Le problème c'est que tu ne passes pas les paramètres à ta requête. Tu devrais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    REQ_Ajout_Test.IDOpérateur = COMBO_Opérateur_Select
    REQ_Ajout_Test.IDBanc = COMBO_Banc_Select
    ...
    HExécuteRequête(REQ_Ajout_Test)
    ou bien passer les paramètres directement à l'appel de la fonction HExécuteRequête.

    Tu pourrais aussi lier les champs avec ta requête dans l'interface et faire un EcranVersFichier avant ton HExécuteRequête. Tu n'aurais pas à assigner les paramètres manuellement.

  12. #12
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Oui, c'était bien ça, merci à tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 19/02/2008, 14h10
  2. Réponses: 8
    Dernier message: 23/11/2007, 17h46
  3. [debutant]somme colonne par rapport a autre table
    Par decksroy dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/01/2007, 11h32
  4. Réponses: 1
    Dernier message: 01/08/2006, 14h43
  5. Réponses: 7
    Dernier message: 12/07/2006, 17h34

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