[Résolu] [vb.net] Requête SQL

Requête SQL [Résolu] [vb.net] - VB/VBA/VBS - Programmation

Marsh Posté le 09-06-2005 à 11:16:33    

Salut !  
 
J'ai un soucis avec une requête SQL, voici mon code :  
 

Code :
  1. ' On récupère la hauteur sélectionnée dans la combobox
  2. Dim ht As Double
  3. ht = CDbl(cmbBoxHauteur.SelectedItem)
  4. ht = Math.Round(ht, 2)
  5. ' On recherche les faisceaux disponibles pour cette hauteur
  6. Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
  7. "C:\bd.mdb" )
  8. Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
  9. Mycommand.CommandText = "SELECT DISTINCT faisceau FROM produit WHERE hauteur=" & ht & ""
  10. MyConnexion.Open()
  11. Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
  12. Do While myReader.Read()
  13. cmbBoxFaisceau.Items.Add(myReader.GetInt32(0))
  14. Loop
  15. myReader.Close()
  16. MyConnexion.Close()

 
 
 
Je pense qu'il s'agit d'un problème au niveau de la variable ht qui représente la hauteur ! Dans la base de données, hauteur est du type réel.  
L'erreur affichée est :  
Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll
 
Merci d'avance pour vos réponses...  
 
Alex


Message édité par steppenwolf le 09-06-2005 à 16:57:15
Reply

Marsh Posté le 09-06-2005 à 11:16:33   

Reply

Marsh Posté le 09-06-2005 à 11:58:45    

http://support.microsoft.com/defau [...] fr;f313547
Je pense que ca peut t'aider.


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 09-06-2005 à 12:12:34    

Merci pour ta réponse !
Ca m'aide moyennement car je sais pourquoi il y a cette erreur, c'est simplement sur la clause WHERE où je dois comparer 2 réels... Et je ne vois pas comment résoudre ça !
 
Ca doit etre un pb de syntaxe !
 

Reply

Marsh Posté le 09-06-2005 à 12:12:51    

Envoi la stacktrace de l'exception, ce serait gentil ;)

Reply

Marsh Posté le 09-06-2005 à 12:15:06    

stacktrace ???

Reply

Marsh Posté le 09-06-2005 à 12:18:29    

Ca doit être ca :  
Exception non gérée : System.Data.OleDb.OleDbException: Erreur de syntaxe (virgule) dans l'expression 'hauteur=1,1'.

Reply

Marsh Posté le 09-06-2005 à 12:19:48    

Ah ben voilà :D

Reply

Marsh Posté le 09-06-2005 à 12:20:05    

En fait, c'est pas comme ça qu'on fait les requêtes. 2 sec, je rédige la solution

Reply

Marsh Posté le 09-06-2005 à 12:21:19    

ok merci

Reply

Marsh Posté le 09-06-2005 à 12:24:02    

Donc, en .NET, on ne fait jamais, mais alors jamais ça :

Mycommand.CommandText = "SELECT DISTINCT faisceau FROM produit WHERE hauteur=" & ht & ""  


Ce qu'il faut, c'est utiliser les paramètres :

Mycommand.CommandText = "SELECT DISTINCT faisceau FROM produit WHERE hauteur=?"
 
Dim HauteurParameter As New System.Data.OleDb.OleDbParameter("hauteur", System.Data.OleDb.OleDbType.Double, 0, "hauteur" )
MyCommand.Parameters.Add(HauteurParameter)
 
HauteurParameter.Value = ht
 
MyConnexion.Open()  
 
[...]

Reply

Marsh Posté le 09-06-2005 à 12:24:02   

Reply

Marsh Posté le 09-06-2005 à 12:24:54    

Parce que là y'a un problème de séparateur décimal. Les paramètres gèrent ça tout seul. Ils s'assurent aussi que y'a pas de valeur erronée.

Reply

Marsh Posté le 09-06-2005 à 12:28:55    

Alors là, j'aurais pu chercher un moment... Je viens de tester et ca marche parfaitement !
Merci beaucoup !

Reply

Marsh Posté le 04-09-2007 à 11:33:49    

bonjour j'ai un petit pb avec vb voici on code  
 
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim str As String
        Dim Myconnection As OleDbConnection = New OleDbConnection("provider=oraoledb.oracle.1;userid=scott;password=tiger; database=ora" )
        str = "SELECT * FROM DEPT"
        MyCommand = New OleDbCommand(str, Myconnection)
        Dim a As String
        Myconnection.Open()
        Dim myReader As OleDbDataReader = MyCommand.ExecuteReader()
        Do While myReader.Read()
            a = myReader(0)
        Loop
        myReader.Close()
        Myconnection.Close()
    End Sub
End Class
sa compile parfaitemant mais ensuite sa me donne ceci
""Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll""
aidez moi svp merci d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed