Update table SQL avec valeur d'une autre table [Résolu]

lebelge80 22 Messages postés mardi 10 août 2010Date d'inscription 4 novembre 2016 Dernière intervention - 23 juil. 2016 à 11:32 - Dernière réponse : lebelge80 22 Messages postés mardi 10 août 2010Date d'inscription 4 novembre 2016 Dernière intervention
- 27 juil. 2016 à 03:38
Bonjour
j'ai besoin d'aide sur une requête SQL
J'ai moi aussi 2 tables :
- Table Personnel
- Table Pays

Le lien entre les 2 tables est personnel.usine = table_pays.PaysID (C'est un integer)
J'ai créer un formulaire qui permet de modifier le pays du personnel.

Ma requête, qui ne marche pas, est la suivante :

update Personnel set Personnel.usine = Table_Pays.PaysID
FROM Personnel INNER JOIN Table_Pays ON Personnel.Usine = Table_Pays.PaysID
WHERE Table_Pays.PaysID = ( SELECT Table_Pays.PaysID FROM Table_Pays WHERE Table_Pays.Pays = '" & CB_Choice_Plant.Text & "')
WHERE Personnel.ID_Personne = 1

CB_Choice_plant est ma combobox qui permet de sélectionner un pays existant dans ma table pays

Pourriez vous svp m'aider ?

En fait je pense que je m'emmele les pinceaux, et ma requête est n'importe quoi !!
D'avance merci
Afficher la suite 

8 réponses

Répondre au sujet
Bertr27 50 Messages postés vendredi 10 novembre 2000Date d'inscription 26 juillet 2016 Dernière intervention - 25 juil. 2016 à 11:11
0
Utile
Bonjour,
Pourriez-vous donner schéma mcd ou uml de ces deux tables.

Merci
Commenter la réponse de Bertr27
lebelge80 22 Messages postés mardi 10 août 2010Date d'inscription 4 novembre 2016 Dernière intervention - 25 juil. 2016 à 18:32
0
Utile
Bonjour et merci de votre réponse

Désolé mais je ne sais pas comment faire un schéma mcd ou uml.
Est ce que ceci vous convient ?
Commenter la réponse de lebelge80
Bertr27 50 Messages postés vendredi 10 novembre 2000Date d'inscription 26 juillet 2016 Dernière intervention - 26 juil. 2016 à 10:11
0
Utile
Pour modifier le pays d'une personne :
UPDATE Personnel SET Personnel.usine = ( SELECT Table_Pays.PaysID FROM Table_Pays WHERE Table_Pays.Pays = '" & CB_Choice_Plant.Text & "') WHERE Personnel.ID_Personne = 'ID de la personne a modifier'

Bon courage
Commenter la réponse de Bertr27
lebelge80 22 Messages postés mardi 10 août 2010Date d'inscription 4 novembre 2016 Dernière intervention - 26 juil. 2016 à 18:51
0
Utile
encore merci pour votre aide mais ça ne marche toujours pas. J'ai une erreur au niveau du SELECT. En fait je pense que le problème vient du langage utiliser. Peut etre trop évoluer pour SQL server compact 3.5 sous windows 7 32bits.
Je m'explique
J'ai utilisé Visual Studio 2010 pour créer ma base de donnée avec Microsoft SQL Server Compact 3.5 et peut être cette syntaxe n'est pas accepté. Est ce correct ?

Quand j'essaye de faire une requête UPDATE dans l'outil requête, il m'interdit d'utiliser une autre table. Et quand j'utilise un FROM dans un UPDATE, il me marque que ce n'est pas possible.

Ai-je tort ? Si vous avez une solution à mon problème je suis preneur
Commenter la réponse de lebelge80
Bertr27 50 Messages postés vendredi 10 novembre 2000Date d'inscription 26 juillet 2016 Dernière intervention - 26 juil. 2016 à 19:09
0
Utile
Et comme ça :
UPDATE Personnel SET usine = ( SELECT PaysID FROM Table_Pays WHERE Pays = '" & CB_Choice_Plant.Text & "') WHERE ID_Personne = 'ID de la personne a modifier'
?
Commenter la réponse de Bertr27
lebelge80 22 Messages postés mardi 10 août 2010Date d'inscription 4 novembre 2016 Dernière intervention - 26 juil. 2016 à 19:42
0
Utile
Pareil. Problème au niveau du select. Je pense réellement que le problème vient de SQLCE

J'ai trouvé un moyen pour contourné mon problème mais j'avoue que c'est pas ce que j'espèrais. J'utilise 2 requête enchainé. Je sais c'est pas le top mais ça fonctionne.
Voici le code :

Private Sub Btn_Save_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Save.Click
Dim Pays as String
Try
' Commande SQL pour Prendre l'ID du pays
Req_sql_string = "Select Table_Pays.PaysID " & _
" FROM Table_Pays " & _
" WHERE Table_Pays.Pays = '" & CB_Choice_Plant.Text & "'"

SourceBaseMethod.Open()
MycommandMethod.CommandText = Req_sql_string

Pays = MycommandMethod.ExecuteScalar

SourceBaseMethod.Close()

Catch ex As Exception
MsgBox(ex.Message)
SourceBaseMethod.Close()
End Try

Try
' Commande SQL pour mettre a jour tous les champs de la personne sélectionné

Req_sql_string = "update Personnel set Personnel.usine = '" & Pays & "' WHERE Personnel.ID_Personne = '" & TB_ID.Text & "'"

SourceBaseMethod.Open()
MycommandMethod.CommandText = Req_sql_string

Dim NbreLignesAffectés As Integer
NbreLignesAffectés = MycommandMethod.ExecuteNonQuery()

'MsgBox("Number of Lines Updated : " & NbreLignesAffectés)

SourceBaseMethod.Close()

Catch ex As Exception
MsgBox(ex.Message)
SourceBaseMethod.Close()
End Try

End If

End Sub

En tout cas merci pour votre aide.
Je vais mettre le problème en résolu.
Commenter la réponse de lebelge80
Bertr27 50 Messages postés vendredi 10 novembre 2000Date d'inscription 26 juillet 2016 Dernière intervention - 26 juil. 2016 à 20:32
0
Utile
1
Après réflexion :
UPDATE Personnel
SET Personnel.usine = P.PaysID
FROM ( SELECT PaysID FROM Table_Pays WHERE Pays = '" & CB_Choice_Plant.Text & "') P
WHERE Personnel.ID_Personne = 'ID de la personne a modifier'

Normalement c'est bon pour SQLCE
lebelge80 22 Messages postés mardi 10 août 2010Date d'inscription 4 novembre 2016 Dernière intervention - 27 juil. 2016 à 03:38
Pareil, problème avec le FROM. Message d'erreur.
Commenter la réponse de Bertr27

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.