Requette sql de mise à jour

saadouli7 Messages postés 36 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 18 novembre 2011 - 13 juin 2011 à 15:11
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 14 juin 2011 à 12:11
bonjours
j'ai essayé d'executer une requette de mise à jour qui traite deux champs d'une table de la manière suivante:
sql2 "update Enseignements set salle_ '" & salle2 & "',bloc_=(select Bloc_ from salles where salle_='" & salle2 & "') "
sql2 = sql2 & "where Filière_='" & TextBox1.Text & "' and CycleAnnée_ =" & TextBox4.Text & " and NE_ ='" & type & "' and Jour_ =" & DataGridView1.CurrentRow.Index + 1 & " and salle_= '" & salle & "' and HD =(select HD from Séances where Séances= " & DataGridView1.CurrentCell.ColumnIndex & ")"
cmd2 = New OleDb.OleDbCommand
cmd2.CommandText = sql2
cmd2.Connection() = cnx
cmd2.ExecuteNonQuery()
le problème c'est q'à l'execution rien ne se change et une message d'erreur s'affiche qui indique la chose suivante:
cmd2.ExecuteNonQuery-->L'opération doit utiliser une requête qui peut être mise à jour.
est ce que quelqu'un a une idée ou est le problème
merci d'avance

3 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 17:13
Bien moi je dirais que ta requête doit être mal formulée.

Après je ne connais pas trop les subtilités du SQL mais je dirais que :

bloc_=(select Bloc_ from salles where salle_='" & salle2 & "') "

Ne doit pas être possible. bloc_ est une variable n'attendant qu'une seule valeur. Une requête select retourne toujours au minimum un tableau de valeurs. Bien sur ici toi tu sait que le tableau ne comportera qu'une valeur mais pas lui. Donc déjà il y a une incompatibilité de type je pense. Je te conseillerais de poser la question sur sqlfr.com si tu ne trouve pas de réponse. Ton problème vient plus de la que du vb à mon avis.

Aussi la prochaine fois pense à utiliser la coloration syntaxique c'est plus lisible.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
saadouli7 Messages postés 36 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 18 novembre 2011
14 juin 2011 à 10:12
bonjour,
merci pour la reponce. j'ai trouvé une solution pour ma probleme
pour ceux qui sont intéréssés il suffit de déclaré une variable qui recupére le resultat de la requette select bloc_ from... where...
puis dans la requette sql2 il suffit d'affecté la valeur de cette variable à bloc_ de la façon suivante: update... bloc_='"& variable &"' where....
cordialement
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
14 juin 2011 à 12:11
Oui du coup tu as choisi de faire plusieurs requêtes en VB c'est pas plus mal. Mais pour info sache que ce que tu voulais faire au départ doit être possible en SQL il faut juste avoir la bonne syntaxe je pense.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous