Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/06/2011, 16h45   #1
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h18   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
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)
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h29   #3
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

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

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
Quel est le SGBDR que vous utilisez ?
Est ce que vous connaissez la methode de mérise ?

Code :
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.
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h30   #4
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
  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 ?
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h32   #5
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
Wolo laurent,

Est ce que je peux inserer ton code dans une macro ??
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h36   #6
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Quel est le SGBD ???

cela sent le ACCESS
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h39   #7
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
openoffice
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h40   #8
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
wolo laurent dois je remplacer ce qui est derriére le @ par les valeurs que je veux comparer ??
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h46   #9
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
tu peux peut être essayer cela, mais sans certitude


Code sql :
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h55   #10
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
Code :
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
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 17h57   #11
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
Code :
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 "
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h05   #12
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
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 :
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 ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h09   #13
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 ?? ^^
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h29   #14
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
Code :
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 ??
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h31   #15
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
voici le chapitre openoffice sur le sql !!
Je n'arrive pas à tout saisir la !!

http://wiki.services.openoffice.org/...LDB_Guide/ch09
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h32   #16
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

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

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
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 :
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
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h35   #17
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Citation:
Envoyé par simsim1 Voir le message
Code :
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 ?)

Citation:
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 ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h37   #18
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
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" )
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h51   #19
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 18h56   #20
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 ?
simsim1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h21.


 
 
 
 
Partenaires

Hébergement Web