Ma commande SQL est innopérante (vb2005-MySql)

[Résolu]
Signaler
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
-
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
-
bonsoir, je ne comprend pas pourquoi la procedure recup_sql fonctionne alors que la procédure selection me ressort les mêmes enregistrements:

code:

(  Me.grille_releves   est un datagridview déjà présent sur ma form  )

au début de la Class

Public mysqlconnection
As
New MySqlConnection

Public mysqltableadapter
As
New MySqlDataAdapter

Public myConnectionString
As
String

Public requete
As
String

Public MyCommand
As
New MySqlCommand

Public mymeteo
As
New DataSet

ensuite ...

Private
Subrecup_sql()

   Try
      myConnectionString = "Database=" &
Me.base_mysql & ";Data Source=" &
Me.adresse_mysql & ";User Id=" &
Me.user_mysql & ";Password=" &
Me.pass_mysql

      Dim myConnection
As
New MySqlConnection(myConnectionString)

      myConnection.Open()

      MyCommand.Connection = myConnection

      requete = "SELECT * FROM releves;"

      MyCommand.CommandText = requete

      Dim mytable
As
New MySqlDataAdapter
      mytable.SelectCommand =
New MySqlCommand(requete, myConnection)
      mytable.Fill(mymeteo)

      Dim bindingsource
As
New BindingSource
      bindingsource.DataSource = mymeteo.Tables(0)
      Me.
grille_releves.DataSource = bindingsource
      Me.
grille_releves.Refresh()
      myConnection.Close()

   Catch MySqlException
As Exception
      MessageBox.Show("Erreur SQL:" + MySqlException.Message, "Erreur",
MessageBoxButtons.OK, MessageBoxIcon.Error)

   End
Try
End
Sub

2ème procédure:

Private

Subselection

   Try
      myConnectionString = "Database=" &
Me.base_mysql & ";Data Source=" &
Me.adresse_mysql & ";User Id=" &
Me.user_mysql & ";Password=" &
Me.pass_mysql

      Dim myConnection
As
New MySqlConnection(myConnectionString)
      MyCommand.CommandText = requete

      myConnection.Open()
      MyCommand.Connection = myConnection
      requete = "SELECT * FROM releves
WHERE N°=1071
;"
      MyCommand.CommandText = requete

      Dim mytable
As
New MySqlDataAdapter
      mytable.SelectCommand =
New MySqlCommand(requete, myConnection)
      mytable.Fill(mymeteo)

      Dim bindingsource
As
New BindingSource

      bindingsource.DataSource = mymeteo.Tables(0)

      Me.
grille_releves.DataSource = bindingsource
      Me.
grille_releves.Refresh()
      myConnection.Close()
   Catch mysqlexception
As Exception
      MessageBox.Show("Erreur SQL:" + mysqlexception.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

   End
Try
End
Sub

je précise que le champ "N°" est le champ clef à valeur unique.
merci pour votre aide

5 réponses

Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
çà c'est impeccable:

Dim connectionstr
As
String = "Database=" &
Me.base_mysql & ";Data Source=" &
Me.adresse_mysql & ";User Id=" &
Me.user_mysql & ";Password=" &
Me.pass_mysql

Dim connection
As MySqlConnection =
New MySqlConnection
connection.ConnectionString = connectionstr
connection.Open()

Dim myadapter
As MySqlDataAdapter =
New MySqlDataAdapter

Dim mysqlcmd As String = requete
myadapter.SelectCommand =
New MySqlCommand(mysqlcmd, connection)

Dim ds
As DataSet =
New DataSet
myadapter.Fill(ds)

Dim binding
As BindingSource =
New BindingSource
binding.DataSource = ds.Tables(0)

Me.grille_releves.DataSource = binding
connection.Close()

en rouge, je passe la string en paramètres

merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
Ne pas oublier : Quand les noms des tables ou champs comportent des caractères spéciaux, il faut les encadrer avec des crochets droits [ et ] comme pour [N°]
C'est possible que cela vienne de là.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
bonjour,
je viens d'essayer, et non, celà ne vient pas de là
je désespère, surtout que si je copie la requete et que je l'envoye tel quel avec le browserquery de mysql, elle fonctionne bien;
grrr

merci
Messages postés
180
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
26 novembre 2007
2
Salut,

Un petit test, essaye de ne faire appel dans un premier lieu qu'une seule procédure à la fois, puis regarde si dans les deux cas les données concordent avec celles attendues.

Puis, (attente du résultat du test :d)
Bonne programmation.

Cordialement medelidrissi

<hr />En Informatique, rien n'est impossible. Mais, ce n'est pas toujours évident.
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
bon, j'ai fait des 2 procédure, une seule et je passe la requete en paramètre,
1ère requete demanée: SELECT * FROM relevés WHERE N°=1071 ; -> impeccable, il me sort le 1 enreg
2ème requete demandée: SELECT * FROM relevés WHERE N°=1072 ;-> il trouve bien 1 enregistrement, mais il l'ajoute au ligne du datagridview.

voilà mon problème, de datagridview ne se vide pas.

Private
Sub recup_sql(
ByVal req
As
String)

   Try
      myConnectionString = "Database=" &
Me.base_mysql & ";Data Source=" &
Me.adresse_mysql & ";User Id=" &
Me.user_mysql & ";Password=" &
Me.pass_mysql

      Dim myConnection
As
New MySqlConnection(myConnectionString)

      myConnection.Open()

      MyCommand.Connection = myConnection

      requete = req
      MyCommand.CommandText = requete

      Dim mytable
As
New MySqlDataAdapter
      mytable.SelectCommand =
New MySqlCommand(requete, myConnection)
      mytable.Fill(mymeteo)

      Dim bindingsource
As
New BindingSource
      bindingsource.DataSource =
Nothing
      bindingsource.DataSource = mymeteo.Tables(0)

      Me.grille_releves.DataSource =
Nothing
      Me.grille_releves.DataSource = bindingsource

      Me.grille_releves.Refresh()

      Me.grille_releves.Columns("N°").Frozen =
True
      myConnection.Close()

   Catch MySqlException
As Exception
      MessageBox.Show("Erreur SQL:" + MySqlException.Message, "Erreur",MessageBoxButtons.OK, MessageBoxIcon.Error)

   End
Try
End
Sub