Bonjour,

Je me connecte en ODBC sur AS400 sur le fichier medcpof/sptml0.

Quand j'essai de lire le champ de type caractère qui m’intéresse je reçois une erreur alors que quand j'essaye avec un autre champ, ça fonctionne.

Voici le code

Code : 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
43
44
45
46
 
Imports System.Data.OleDb
Public Class Form1
    Dim conn As New OleDbConnection
    Dim str_requete As String
    Dim cmd As New OleDbCommand
    Dim dta As OleDbDataAdapter '//Représente un ensemble de commandes de données utilisées pour remplir un dataset/mettre à jour une base de donnée MySQL
    Dim dts As New DataSet '//Dataset
    Dim dtr As OleDbDataReader '//Un DataR
    Dim sConnString As String = "Provider=IBMDA400;" & _
                                "Password=*****;" & _
                                "User ID=*******;" & _
                                "Data Source=192.168.250.10;"
    Function FONC_REQ_DTR_MYSQL(ByVal query As String)
        Try
            str_requete = query
            '\\On ouvre la connection
            If conn.State = 0 Then conn.Open()
            If Not (dtr Is Nothing) Then dtr.Close()
            '\\On execute la requete
            cmd = New OleDbCommand(str_requete, conn)
            dtr = cmd.ExecuteReader
            Return dtr
        Catch obj_erreur As OleDbException
            '\\Afficher le msg d'erreur
            MsgBox("Erreur dans la FONC_REQ_DTR_MYSQL de la classe Mysql: " & obj_erreur.Message)
            Return 0
        End Try
    End Function
    Private Sub TEXTBOX_PAS_CARACT_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_id_patient.KeyPress
        If Char.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If txt_id_patient.Text <> vbNullString Then
            conn = New OleDbConnection(sConnString)
            Dim str_requete As String = "SELECT * FROM medcpof.sptml0 WHERE pbmrn =" + "'" + txt_id_patient.Text + "'"
 
            dtr = FONC_REQ_DTR_MYSQL(str_requete)
 
            If dtr.HasRows Then
                dtr.Read()
                MsgBox(dtr.GetString(47).ToString)
            End If
        End If
    End Sub
End Class
L'erreur est sur la ligne: MsgBox(dtr.GetString(47).ToString)

Message d'erreur: Le cast spécifié n'est pas valide pourtant c' est du caractère

Exemple de donnée: dupont, gorge

D'avance merci