Salut
Apparemment, tu n'as pas compris comment préparer une requète :
La variable maRequete est une String.
Dedans, tu vas mettre ta requète SQL.
Il n'est pas encore question de la lancer, juste la préparer.
Je te conseille de comprendre à quoi srvent les _ en fin de ligne car la fin de ta requète comporte un _ ce qui signifie qu'elle va se continuer ensuite, ce qui n'est pas vrai.
De plus, ajouter des espaces permet de mieux voir la requète :
maRequete = _
"SELECT avoir.SEMESTRE," & _
" eleve.NUM," & _
" matiere.COD_MAT," & _
" avoir.NOTE1" & _
" FROM matiere INNER JOIN(" & _
" eleve INNER JOIN avoir ON " & _
" eleve.NUM = avoir.NUM) ON " & _
" matiere.COD_MAT = avoir.COD_MAT " & _
" Where avoir.NOTE1 = '" & Val(txtNOTE1) & "' " & _
" And avoir.SEMESTRE= '" & Trim(txtSEMESTRE) & "' " & _
" And matiere.COD_MAT='" & Val(txtCOD_MAT) & "' " & _
" And eleve.NUM='" & Val(txtNUM) & "'"
Ensuite, il faut bien comprendre aussi que tu ne fais que créer une chaine représentant ta requète.
Dans tes clauses Where, bien que txtNOTE1 représente un chiffre, il doit être inséré comme un texte qui représente des chiffres, rien de plus :
" Where avoir.NOTE1 = '" & Val(txtNOTE1) & "' " & _
-->
" Where avoir.NOTE1 = '" & txtNOTE1.Text & "' " & _
Ensuite, du côté des champs de ta database, de quel type sont déclarés les champs dans ta database ?
Si ton champ est de type :
Texte : il faut encadrer les valeurs par des ' (comme tu l'as fait)
Numérique : pas d'encadrement
Dates : il faut encadrer les valeurs par des #
Exemples :
' Pour un champ déclaré en type Texte dans la DB :
" Where avoir.NOTE1 = '" & txtNOTE1.Text & "' " & _
' Pour un champ déclaré en type Numérique dans la DB :
" Where avoir.NOTE1 = " & txtNOTE1.Text & " " & _
' Pour un champ déclaré en type Date dans la DB :
" Where avoir.NOTE1 = #" & txtNOTE1.Text & "# " & _
Ta syntaxe finale devrait donc ressembler à ça, reste à voir si les ' sont nécessaires ou pas :
maRequete = _
"SELECT avoir.SEMESTRE," & _
" eleve.NUM," & _
" matiere.COD_MAT," & _
" avoir.NOTE1" & _
" FROM matiere INNER JOIN(" & _
" eleve INNER JOIN avoir ON " & _
" eleve.NUM = avoir.NUM) ON " & _
" matiere.COD_MAT = avoir.COD_MAT " & _
" Where avoir.NOTE1 = '" & txtNOTE1.Text & "' " & _
" And avoir.SEMESTRE = '" & Trim(txtSEMESTRE.Text) & "' " & _
" And matiere.COD_MAT = '" & txtCOD_MAT.Text & "' " & _
" And eleve.NUM = '" & txtNUM.Text & "'"
RS.Open maRequete, CN
If RS.RecordCount <= 0 Then " & _
MsgBox "La Note de la matiere saisiE existe déjà.", _
vbExclamation, "Note ..."
End If
De quel type est l'objet RS ? ADODB ?
C'est une information importante à donner lorsque tu poses une question.
Pense à aller voir des exemples de code qui parlent de RecordSet, de ADODB parmi les codes du site, tu apprendras ainsi.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)