Bonjour,
J'ai un problème dans mon application au niveau de conversion de données qu'il me force à faire.
J'ai créé par code des DataTables avec des colonnes de type soit String, soit UInt16 (UShort). Je les remplis avec une base de données. Tout va bien jusque là.
J'ai ensuite une fonction qui extrait des données des DataTables (méthode select...) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Public Function ExtractDonneesDataTable(ByVal Dtt As DataTable, ByVal NumChampFiltre As Byte, ByVal ExpressionFiltre As UShort, ByVal NumChampTri As Byte, ByVal ExpressionTri As String) As DataRow()
With Dtt
'Renvoie le résultat en fonction des situations avec un filtre de type UShort
If NumChampFiltre = 0 And ExpressionFiltre = 0 Then
If NumChampTri = 0 And ExpressionTri = "" Then
Return .Select()
Else
Return .Select("", .Columns(NumChampTri).ColumnName & " " & ExpressionTri)
End If
Else
If NumChampTri = 0 And ExpressionTri = "" Then
Return .Select(.Columns(NumChampFiltre).ColumnName & " = " & CStr(ExpressionFiltre), "")
Else
Return .Select(.Columns(NumChampFiltre).ColumnName & " = " & CStr(ExpressionFiltre), .Columns(NumChampTri).ColumnName & " " & ExpressionTri)
End If
End If
End With
End Function |
Ca fonctionne très bien jusque là.
Ensuite dans un autre Form, je crée un DataRow() pour récupérer le résultat d'une extraction bien précise à partir d'une des DataTables (DttBibliotheque).
Dim DtRow As DataRow() = FormPrincipal.ExtractDonneesDataTable(FormPrincipal.DttBibliotheque, 11, FormPrincipal.NumImageEnCours, 0, "")
Ca se passe bien aussi.
J'affiche ensuite dans un label du Form le résultat d'une nouvelle extraction d'une autre DataTable (DttAnnee) en fonction de la valeur renvoyée par mon ancienne extraction (DtRow(0)(3)). Les deux DataTables sont en lien.
Label2.Text = FormPrincipal.ExtractDonneesDataTable(FormPrincipal.DttAnnee, 0, CUShort(DtRow(0)(3)), 0, "")(0)(1).ToString
Le problème, c'est que je suis obligé dans ce bout de code de laisser la conversion CUShort() autour de DtRow(0)(3) alors qu'il est bien de type UInt16.
Si je l'enlève, il me met "obligation de conversion stricte..."
Je ne comprends pas. Sauf si UInt16 ne corresponde pas à un UShort, et ça pourrait expliquer le problème....
Merci pour vos aides.
Partager