PB : requete sql et datagrid

trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010 - 18 juil. 2005 à 16:26
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010 - 19 juil. 2005 à 09:40
Bonjour,
J'ai un peu de mal avec ma requete sql pour se connecter via vb.net a access, ca ne doit pas etre bien compliqué, mais je ne vois pas.

Voici ma requete qui marche correctement :
Dim req = "INSERT INTO Couple ( [Nom couple], [Abscisse] ) VALUES ('" & nomCouple + "','" + abscisse + "')"

J'aimerais faire cette même requete d'enregistrement seulement si les enregistrements de ma base access ne possede pas deja des lignes nomCouple (clef primaire)

Pouvez vous m'aider? J'ai essayé avec la close where sans succes. Je ne sais pas si on peut utiliser where et value ensemble.

3 réponses

cs_hassen Messages postés 338 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 4 novembre 2008
18 juil. 2005 à 16:38
tu n'a qu'a executer une requete avant l'insertion pour voir si le code existe déja ou pas

select * from couple where nomcouple='" & replace(NomCouple,"'","''") & "'"
si le nombre d'enregistrement retourné par cette sql (RecordCount) >0 alors tu affiche un message "le code saisie est déja existant"
si non tu fait ton insertion

Hassen TUNISIE
0
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010
18 juil. 2005 à 17:13
Merci pour ta reponse, j'avais déjà pensé a ca mais je ne savais pas qu'on pouvait faire sql(recorcount)...ca se trouve dans quel objet?


Private
Sub Button6_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button6.Click





Dim i
As
Integer



Dim nomCouple
As
String
Dim abscisse
As
String
For i = 0
To DataGridView1.Rows.Count - 2
nomCouple = DataGridView1.Item(0, i).Value
abscisse = DataGridView1.Item(1, i).Value



Dim req1 =
"SELECT [Nom couple] from couple where [Nom couple]='" + nomCouple +
"'"


executionRequete(req1)'JE VAIS INSERER MON TEST ICI MAIS COMMENT UTILISER SQL(RECORDCOUNT)



Dim req =
"INSERT INTO Couple ( [Nom couple], [Abscisse] ) VALUES ('" & nomCouple +
"','" + abscisse +
"') "


executionRequete(req)



'""""""""""""""""""



Next i



End
Sub


Private
Sub executionRequete(
ByVal req
As
String)
cnx.Open()

Dim myCommand =
New OleDbCommand(req, cnx)myCommand.ExecuteNonQuery()
cnx.Close()

End
Sub
0
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010
19 juil. 2005 à 09:40
Bonjour,
voila j'ai écris mon code mais je n'arrive pas a recupérer le nombre de ligne. Pourtant la methode ExecuteNonQuery devrait renvoyer un integer sur le nombre d'enregistrement? Voilà mon code si quelqu'un a le temps de jeter un coup d'oeil.

'"""""""""""""""""""""""""""""""""""""""""
'Bouton OK
'"""""""""""""""""""""""""""""""""""""""""
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
'""""""""""""""""""
'Bon
'""""""""""""""""""
Dim i As Integer
Dim nomCouple As String
Dim abscisse As String

For i = 0 To DataGridView1.Rows.Count - 2

nomCouple = DataGridView1.Item(0, i).Value
abscisse = DataGridView1.Item(1, i).Value
Dim req1 = "SELECT [Nom couple] from couple where [Nom couple]='" + nomCouple + "'"
Dim value = executionRequete(req1)
cnx.Close()
If value > 0 Then 'test pour savoir si des lignes existes déjà

Dim req = "INSERT INTO Couple ( [Nom couple], [Abscisse] ) VALUES ('" & nomCouple + "','" + abscisse + "') "

executionRequete(req)
cnx.Close()
End If '""""""""""""""""""
Next i
End Sub

Private Function executionRequete(ByVal req As String) As Integer
cnx.Open()
' Dim myCommand = New OleDbCommand(req, cnx)
' myCommand.ExecuteNonQuery()
Dim myCommand As OleDbCommand
myCommand = New OleDbCommand
myCommand.CommandText = req
myCommand.Connection = cnx
'myCommand.ExecuteNonQuery()
Return myCommand.ExecuteNonQuery
cnx.Close()

End Function
0