saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 novembre 2011
-
13 juin 2011 à 15:11
Mayzz
Messages postés2812Date d'inscriptionmardi 15 avril 2003StatutMembreDerniè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
Mayzz
Messages postés2812Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 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.
saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 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
Mayzz
Messages postés2812Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 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.