begin process at 2012 05 26 23:33:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

Probleme avec doublon!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme avec doublon!

mardi 19 juillet 2005 à 10:23:11 | Probleme avec doublon!

trexor

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? Ca ne doit pas être la bonne solution car la premiere méthode  ExecuteNonQuery lors du premier test renvoie une erreure qd elle trouve des doublons (et ne renvoie pas le nombre de ligne..normal!). Il doit y avoir une solution toute bête mais je suis néophite en SQL. 
 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  

 
 
mardi 19 juillet 2005 à 11:28:59 | Re : Probleme avec doublon!

nhervagault

Administrateur CodeS-SourceS
Salut

ExecuteNonQuery comme son nom l'indique ne renvoie pas de données.
C'est pour les requetes ACTION MAJ, DEL, INS

Il faut que tu utilises excutereader. --> Datareader pour lire un select
Pour ta requete tu peux utilisé
excuteScalar si ta requete ne renvoie qu'une seule ligne et colonne exemple
select count(id) as nb from tab

Je ne vois pas pouruoi les doublons gene dans ton cas ( mais je ne pense pas pas me trompé )

Voila



mardi 19 juillet 2005 à 12:19:34 | Re : Probleme avec doublon!

trexor

J'ai changé mon code mais ca ne marche tjs pas. As tu des exemples?

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Me.Close()

End Sub

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

'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 + "'"

executionRequete(req1)

If erreurDoublon = False Then 'test pour savoir si des lignes existes déjà

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

executionRequete(req)

End If

Next i

End Sub

Private Sub executionRequete(ByVal req As String)

Try

erreurDoublon = False

cnx.Open()

Dim myCommand As OleDbCommand

myCommand = New OleDbCommand

myCommand.CommandText = req

myCommand.Connection = cnx

myCommand.ExecuteReader()

cnx.Close()

Catch ex As Exception

erreurDoublon = True

End Try

End Sub

mardi 19 juillet 2005 à 14:14:46 | Re : Probleme avec doublon!

nhervagault

Administrateur CodeS-SourceS
salut

commence par simple


        Try

            Dim req1 As String = "SELECT count(*) from matable"

            OleDbConnection.Open()
            Dim oledbcommand As OleDb.OleDbCommand = New OleDb.OleDbCommand()
            oledbcommand.CommandText = req1

            oledbcommand.Connection = OleDbConnection
            Dim nb As Int16 = CType(oledbcommand.ExecuteScalar(), Int16)

            OleDbConnection.Close()

        Catch ex As Exception

        End Try

Methode deux retour d'un select
(dr.GetValue(0).ToString) est a bannir au niveau perf c'est peut etre bon mais au niveau conprehension c'est pas le top ;-)

accede directement au champs par leurs clefs si tu veux que ton code soit maintenable ou par ordre si tu veux de la performance. Atention l'ordre des colonnes colonnes peuxc evoluée ?



            Dim req1 As String = "SELECT * from matable"
            Dim dr As OleDb.OleDbDataReader
            OleDbConnection.Open()
            Dim oledbcommand As OleDb.OleDbCommand = New OleDb.OleDbCommand()
            oledbcommand.CommandText = req1

            oledbcommand.Connection = OleDbConnection
            dr = oledbcommand.ExecuteReader
            While dr.Read
                MessageBox.Show(dr.GetValue(0).ToString)
            End While

            OleDbConnection.Close()

        Catch ex As Exception

        End Try

mercredi 20 juillet 2005 à 12:01:02 | Re : Probleme avec doublon!

trexor

Voilà j'arrive a la fin de mon bouton grace a votre aide. J'ai encore une petite question pour la requete delete. Avez vous une methode pour rechercher rapidement dans mon datagrid (au lieu de faire une recherche ligne/ligne)?

voici mon code (il n'y a pas encore la recherche sur le datagrid), je suis preneur d'amélioration ;-)

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

'Bouton OK

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

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

cnx.Open()

Dim req As String = "SELECT count(*) from Couple where [Nom couple]='" + nomCouple + "'"

Dim oledbcommand As OleDb.OleDbCommand = New OleDb.OleDbCommand()

oledbcommand.CommandText = req

oledbcommand.Connection = cnx

Dim nb As Int32 = CType(oledbcommand.ExecuteScalar(), Int32)

cnx.Close()

Try

If nb <= 0 Then

'Si la ligne n'existe pas alors on la creée

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

executionRequete(req1)

Else

'Si la ligne existe alors on la modifie

Dim req2 = "UPDATE Couple set [Abscisse]='" + abscisse + "' WHERE [Nom couple]='" + nomCouple + "'"

executionRequete(req2)

End If

'Suppression d'un enregistrement

Dim req3 As String = "SELECT * from Couple"

Dim dr As OleDb.OleDbDataReader

Dim valueLigne As String

cnx.Open()

oledbcommand.CommandText = req3

oledbcommand.Connection = cnx

dr = oledbcommand.ExecuteReader

While dr.Read

valueLigne = dr.GetValue(0).ToString

Dim t As Integer

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

' recherche a faire si pas de ligne dans le datagrid de nom valueLigne

executionRequete("delete from Couple WHERE [Nom couple]='" + valueLigne + "'")

Next t

End While

cnx.Close()

Catch ex As Exception

MessageBox.Show(ex.Message, Me.Text)

End Try

Next i

End Sub

'"""""""""""""
'execution requete
'"""""""""""

Private Sub executionRequete(ByVal req As String)

Try

cnx.Open()

Dim myCommand As OleDbCommand

myCommand = New OleDbCommand

myCommand.CommandText = req

myCommand.Connection = cnx

myCommand.ExecuteScalar()

cnx.Close()

Catch ex As Exception

MessageBox.Show(ex.Message, Me.Text)

End Try

End Sub




Cette discussion est classée dans : req, cnx, couple, mycommand, executenonquery


Répondre à ce message

Sujets en rapport avec ce message

Problème de conversion Money [ par kat40 ] Bonjour, Mon application vb utilise une base de données sql. Dans mon application j'ai des champs monétaires.  Lorsque je veux générer un rapport mens couple de clé primaire [ par Rjoe ] voila un ml Erreur de requête [ par trexor ] Bonjour, Avez vous une idée sur une erreur de requête?Voici la requête :Dim req2 = "UPDATE [Espacement couple] SET [Du couple]= '" + duCouple + "'  SE pb : ORDER BY [ par trexor ] Bonjour, J'ai utilisé une requète pour ma table liée et ca marche plutôt bien.Mais j'ai un petit problème avec ma requète ci dessous : cnxClasse.affic connexion multiples [ par beny100 ] bonjour,voici mon code de connexion ,mais apres connection j'arrive pas a obtenir la valeure dans l'entier Kaidez moi voici mon code je sais pas ou se transférer base SqlServer2000 vers SqlServer Ce [ par loic20h28 ] Bonjour tout le monde,Voila je souhaiterais transférer ma base sql Server 2000 vers Sql Server Ce. J'ai trouvé par la méthode Pull qui me donne : SqlC access à MySQL [ par johnbical ] slt je suis débutant en programmation j'effectue une requêtegrace à un code vb qui me permet de miger les champs contenus dans des tables d'une DB acc jdbc [ par nassourra ] bjrje suis en train de developper une application java j'utilise mysql servervoici la classe connect :import java.sql.*;public class Connect {     pri Problème avec executesql [ par anspauldou ] Bonjour J'ai vraiment besoin d'aide. J'ai écrit ce script qui ne m'envoie un résultat égale à zéro. Declare @reponseTrouv decimal(20,2), @Test@strTo Integration requete sql dans Talend [ par rblanc69 ] Bonjour, J'utilise Talend depuis peu. Je souhaiterais effectuer sur une table une sorte de classement: c'est-a-dire établir un compteur lorsqu'il y


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales