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

Access Discussion :

Insertion base de données avec condition


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut Insertion base de données avec condition
    Bonjour,

    Je travaille sur une bonne de dialogue avec 4 comboBox. Chaque combobox corresponde respectivement au champs Nom,Adresse,Ville,Code postal.

    La table correspondant est la table "liste client" dans laquelle on retrouve les champs ID, Nom, Ville, Code postal, Nombre affaires, Adresse.

    Je récupère la sélection des combobox dans des cellules sur une feuille devis, que la sélection soit faite à la main ou sélectionné dans la liste.

    Si l'utilisateur à rentré les champs à la main, c'est que cela correspond à un nouveau client.

    J'aimerais par une requête comparer les valeurs des 4 cellules au 4 champs et si parmi les 4 comparaisons il y en a une deux différentes, la requête insère automatiquement les 4 champs dans la base de donnée ainsi qu'un nombre d'affaire de 1.

    Pourriez vous m'aider, car je débute dans le SQL, les sous requête de insert, select et de condition en même temps ne sont pas encore à ma portée !

    Cordialement, Simsim

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 150
    Points : 1 414
    Points
    1 414
    Par défaut
    Bonjour

    ce serait bien de lire les règles du forum avant
    par exemple :
    + quel est le SGBD


    Citation Envoyé par simsim1 Voir le message
    Bonjour,
    La table correspondant est la table "liste client" dans laquelle on retrouve les champs ID, Nom, Ville, Code postal, Nombre affaires, Adresse.

    Si l'utilisateur à rentré les champs à la main, c'est que cela correspond à un nouveau client.
    Mais l'utilisateur peut très bien indiqué quelque chose qui existe déjà (4 champs identique. Que faut-il faire ? [SQL ne sait pas si les champs sont choisis ou tappés ]

    Citation Envoyé par simsim1 Voir le message
    J'aimerais par une requête comparer les valeurs des 4 cellules au 4 champs et si parmi les 4 comparaisons il y en a une deux différentes, la requête insère automatiquement les 4 champs dans la base de donnée ainsi qu'un nombre d'affaire de 1.
    2 sur 4, mais que faire s'il y a un, 3 ou 4 identique ?

    Et pourquoi 2 sur 4, A priori si quelque chose est différent c'est quelqu'un d'autre ? ou il a déménage (mais au vue de la structure de la base, cela ne change rien)

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Quel est le SGBDR que vous utilisez ?
    Est ce que vous connaissez la methode de mérise ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create procedure sp_client_add
     @nom varchar(50),
     @Ville varchar(50),
     @[Nombre affaires] int,
     @Adresse Varchar(96)
    as
     
    if not exists(
    select Nom, Ville, [Code postal], [Nombre affaires], Adresse
    from Client
    where  Nom + Ville + [Code postal]+[Nombre affaires] + Adresse = @Nom + @Ville + @[Code postal]+@[Nombre affaires] + @Adresse
    )
    insert into Client(ID,Nom,Ville,[Code postal],[Nombre affaires],Adresse)
    Values(@id,@Nom + @Ville + @[Code postal]+@[Nombre affaires] + @Adresse
    Voici sous SQL Serveur.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    En fait sil y a un champs différent, par exemple le nom de l'entreprise, ladresse sera logiquement différente, peut etre pas la ville, ni le code postal donc on envoie les 4 champs dans la base.

    Si le nom n'est pas différent, que l'adresse, la ville et le code postal sont différents, cela signifie que c'est une agence d'une même entreprise mais dans une ville différente, donc c'est pas pareille à partir du moment ou il y un des 4 champs qui est différent par rapport à la base, c'est un nouveau client.

    On ajoute dans tout les cas les 4 champs à la base ainsi qu'une incrémentation du nombre d'affaire de 1.

    J'étais parti sur cette idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Insert into liste client(Nom,Ville, Code postal, Adresse, nombre affaires) values ('SCREG','Abbeville','80100','8 rue du chateau',1) wher not (Nom='SCREG') or not (Adresse='8 rue du chateau') or not (Ville ='Abbeville' ) or not (Code postal='80100')
    mais ça ne marche pas.

    Voyez vous ce que je veux faire ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Wolo laurent,

    Est ce que je peux inserer ton code dans une macro ??

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 150
    Points : 1 414
    Points
    1 414
    Par défaut
    Quel est le SGBD ???

    cela sent le ACCESS

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    openoffice

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    wolo laurent dois je remplacer ce qui est derriére le @ par les valeurs que je veux comparer ??

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 150
    Points : 1 414
    Points
    1 414
    Par défaut
    tu peux peut être essayer cela, mais sans certitude


    Code sql : 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 Liste Client(Nom,
                             Ville,
                             Code Postal,
                             Adresse,
                             Nombre Affaires)
    SELECT 'SCREG',
           'Abbeville',
           '80100',
           '8 rue du chateau',
           1
      FROM Liste Client
      WHERE NOT EXISTS(SELECT 1
                         FROM Liste Client
                         WHERE (Nom = 'SCREG')
              AND (Adresse = '8 rue du chateau')
              AND (Ville = 'Abbeville')
              AND (Code Postal = '80100'))


    ah oui, le nom de la table 'Liste Client' avec un espace me semble très très dangereux. 'Liste_Client' serait plus judicieux

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    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
     INSERT INTO liste Client(Nom,
                             Ville,
                             Code postal,
                             Adresse,
                             Nombre Affaires)
    SELECT 'SCREG',
           'Abbeville',
           '80100',
           '8 rue du chateau',
           1
      FROM liste Client
      WHERE NOT EXISTS(SELECT 1
                         FROM Liste Client
                         WHERE (Nom = 'SCREG')
              AND (Adresse = '8 rue du chateau')
              AND (Ville = 'Abbeville')
    A quoi correspond le 1 après le select ? Pourquoi mets tu des quote à 80100 et non à 1 ?

    J'ai testé le code mais "erreur in sql expression" !! :s

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    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
    INSERT INTO liste client(Nom,
                             Ville,
                             Code postal,
                             Adresse,
                             Nombre affaires)
    SELECT 'SCREG',
           'Abbeville',
           '80100',
           '8 rue du chateau',
           1
      FROM liste client
      WHERE NOT EXISTS(SELECT FROM liste client
                         WHERE (Nom = 'SCREG')
              AND (Adresse = '8 rue du chateau')
              AND (Ville = 'Abbeville')
              AND (Code postal = '80100'))
    j'ai modifié les nom de champ et de table par rapport à ce que j'ai vraiment, mais toujours "syntax error in sql expression "

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 150
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par simsim1 Voir le message
    Pourquoi mets tu des quote à 80100 et non à 1 ?
    j'ai utilisé les éléments de ta requête; code postal était entre quote, mais pas le 1 ....

    Citation Envoyé par simsim1 Voir le message
    A quoi correspond le 1 après le select ?
    Dans une requête utilsant un EXISTS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ....
    WHERE EXISTS (SELECT 1 FROM ...)
    le 1 est là pour remplir la clause select puisque tout ce que l'on désire est de savoir si la condition est réalisée (ou non). Tu peux mettre *, ou n'importe quoi...


    Citation Envoyé par simsim1 Voir le message
    J'ai testé le code mais "erreur in sql expression" !! :s
    Vérifies bien que les types de données sont bien correctes (genre : le code postal est une colonne texte ou numérique). mais j'ai plutôt peur que le SQL d'Open office soit trop "simple" pour pouvoir traiter ce type de requête

    Et le nom de la table ?? ou le nom des colonnes avec des espaces ???

    peut être en regardant dans le forum ACCESS ?

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Je pense aussi que le sql de openoffice doit être trop simple pour supporter ça ! T'aurais pas une autre méthode sous l'coude par hasard ou alors bien caché dans le fond de ton esprit si subtile en programmation ?? ^^

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO "Clients" ("Nom", "Prénom")
    SELECT "Nom", "Prénom"  FROM "AjoutClients" 
    WHERE NOT "AjoutClients"."ID" IN ( SELECT "Clients"."ID" FROM "Clients" )
    Est ce que cette requête vous inspire en la remplacant par mes données ??

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    voici le chapitre openoffice sur le sql !!
    Je n'arrive pas à tout saisir la !!

    http://wiki.services.openoffice.org/...LDB_Guide/ch09

  16. #16
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par simsim1 Voir le message
    Wolo laurent,

    Est ce que je peux inserer ton code dans une macro ??
    Oui si Acces n'est utilisé que pour l'affichage.
    Non, si la base de données est ACCESS.

    Essaie de remplacer les @variables par des variables généralement sous VBA.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IF NOT EXISTS(
    SELECT Nom, Ville, [Code postal], [Nombre affaires], Adresse
    FROM Client
    WHERE  Nom + Ville + [Code postal]+[Nombre affaires] + Adresse = @Nom + @Ville + @[Code postal]+@[Nombre affaires] + @Adresse
    )
    INSERT INTO Client(ID,Nom,Ville,[Code postal],[Nombre affaires],Adresse)
    VALUES(@id,@Nom + @Ville + @[Code postal]+@[Nombre affaires] + @Adresse

  17. #17
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 150
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par simsim1 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO "Clients" ("Nom", "Prénom")
    SELECT "Nom", "Prénom"  FROM "AjoutClients" 
    WHERE NOT "AjoutClients"."ID" IN ( SELECT "Clients"."ID" FROM "Clients" )
    Est ce que cette requête vous inspire en la remplacant par mes données ??
    Je vois 2 tables différentes ? "Clients" et "AjoutClients" (les double-quotes sont-elles indispensables ?)

    SELECT "Nom", "Prénom"
    Cela va devoir être les 'vrais' valeurs

    si cette requête fonctionne, je m'étonne que la précédente ne marche pas ?

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    C'est une requête que j'ai trouvé sur le chapitre openoffice en exemple!
    Je sais pas du tout si ca fonctionne et je ne sais pas du tout pourquoi il y a deux table, je n'arrive pas à comprendre !

    Rolala !

    J'ai essayé de remplacer mes données dans ce code mais c'est un casse tête, j'y arrive pas la sérieu ^^

    dans ce code excusez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO "Clients" ("Nom", "Prénom")
    SELECT "Nom", "Prénom"  FROM "AjoutClients" 
    WHERE NOT "AjoutClients"."ID" IN ( SELECT "Clients"."ID" FROM "Clients" )

  19. #19
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    simsim1, certes vous êtes débutant mais ce site regorge de tutoriaux pour appréhender le langage SQL.

    Commencez par faire le premier travail de lecture, de compréhension, quelques exercices de base.
    Revenez ensuite pour poser des questions dont on ne trouve pas la réponse en trente secondes de recherche.

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2011
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Bonjour Monsieur

    Certes, je suis débutant et je pose des questions qui ne demandent pas 30s de recherche !

    Mais j'ai lu beaucoup de tutoriaux, j'ai fait beaucoup de recherches, j'ai passé des heures à écrire ce code, de plusieurs façons, un peu dans tous les sens, en partant sur différentes idées !

    Je ne trouve toujours pas et ces personnes très sympathiques qui m'aident à trouver une réponse, ne la trouvent pas en 30s!

    Mes recherches et questions sont-elles vaines ?
    Cela vous embête-t-il que je pose des questions ?

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/04/2013, 22h38
  2. [MySQL] Problème pour l'insertion dans une base de données avec variables $_POST
    Par hakkio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2012, 17h04
  3. Réponses: 19
    Dernier message: 27/10/2011, 14h01
  4. Réponses: 2
    Dernier message: 25/05/2011, 15h36
  5. Réponses: 7
    Dernier message: 01/12/2009, 15h10

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