C'est-un-truc-de-dingue.

Bonjour à vous tous qui entrez dans un terrain mystérieux.

Mon problème est simple : prendre une donnée de type double en cherchant dans la BDD à partir d'une variable de type String.

J'ai fait le code, ça devrait marcher (et je l'ai fait de deux façons complètement différentes), MAIS, lorsque je veux pour rechercher cette valeur, il me dit qu'il n'arrive pas à convertir une donnée de la table de type String en donnée de type Integer, ce qui est normal ! Là où je ne capte pas, c'est pourquoi il s’entête à vouloir convertir cette p***** de donnée alors que je ne lui demande pas ! voici le code : (et, amis puristes, vous noterez que j'ai fait ça dans les règles de l'art!)

Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Function GetStressAllowTemperature(ByVal TempCelsius As String, ByVal ProductForm As String, ByVal Nom As String, ByVal Taille As Double) As Double
 
        Dim indiceLH As String = "c"
        Dim indiceOut As Int16 = 0
 
        Dim RequeteSQL As String = "SELECT * FROM P_ASME_SI WHERE Nom='" & Nom & "'"
        Dim dt As System.Data.DataTable
        Dim i As Integer = 0
        Dim cn As New SqlConnection
        Dim cmd As New SqlCommand
        Dim ds As New DataSet
        Dim da As SqlDataAdapter
        Dim connectionstring As String = "Data Source=SV4203******;Initial Catalog=bas****;Persist Security Info=True;User ID=*******;Password=*******"
 
        Dim Table_P_ASME_SI As System.Data.DataTable
        Dim ligne As DataRowView
        Dim ligneTrouvees() As DataRowView
        Dim criteres() As Object
 
        cn = New SqlConnection(connectionstring)
        cn.Open()
 
        cmd.Connection = cn
        cmd.CommandText = "SELECT * from P_ASME_SI"
 
        da = New SqlDataAdapter(cmd)
        da.Fill(ds, "P_ASME_SI")
 
        Table_P_ASME_SI = ds.Tables("P_ASME_SI")
 
        Table_P_ASME_SI.DefaultView.Sort = "Product_Form ASC, Nom ASC, LowHigh ASC"
        criteres = (New Object() {ProductForm, Nom, indiceLH})
 
        ligneTrouvees = Table_P_ASME_SI.DefaultView.FindRows(criteres)
 
        If ligneTrouvees.Length = 0 Then
            MsgBox("Il n'y a pas de valeurs pour le matériau choisi.")
        Else
            For Each ligne In ligneTrouvees
                MsgBox("Nom : {0}", ligne("Nom"))   'il bug ici, tout à la fin !!! Texte de l'erreur mis juste après
            Next
        End If

"La conversion de la chaîne "SB-5445" en type 'Integer' n'est pas valide." Mais pourquoi il s'obstine ? :/