PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Accès AS400 en .NET et modification d'une valeur dans un dataset
Accès AS400 en .NET et modification d'une valeur dans un dataset
Débuté par Frédéric RICHARD, 26 juin 2024 07:59 - Aucune réponse
Membre enregistré
27 messages
Posté le 26 juin 2024 - 07:59
Bonjour,

J'utilise l'assemblage .NET suivant pour accéder aux fichiers sur un AS/400 : IBM.Data.DB2.iSeries.

Je parvient à ouvrir une connexion, à créer un DataAdapter et à remplir un DataSet avec le résultat d'une requête SQL.

Le DataSet, si j'ai bien compris est un ensemble de DataTables ( dans mon cas, je n'ai qu'une seule table ).

Pour lire la valeur d'un enregistrement, je parcours les DataTable de mon DataSet.

Lorsque le nom de ma table correspond au nom de mon fichier, je parcours les DatraRow (lignes) de ma DataTable jusqu'à atteindre l'enregistrement dont je souhaite lire la valeur de la colonne.

Puis je parcours les DataColumn de mon DataRow pour trouver ma colonne.

Voici un exemple de code permettant de récupérer la valeur d'une rubrique :

Procedure PUBLIQUE getItemByColumnName(LOCAL ColumnName est une chaîne UNICODE): Variant

SI :RubriquesFichier[ColumnName]..Existe ALORS
_Table est un DataTable dynamique
POUR TOUT _Table de :m_objDataSet.Tables
SI _Table.tableName <> :m_sFichier ALORS CONTINUE
_row est un DataRow dynamique
POUR TOUT _row, nIndice de _Table.get_Rows()
SI nIndice <> ( :m_nCurrentRow + 1 ) ALORS CONTINUE
_col est un DataColumn
POUR TOUT _col de _Table.get_Columns()
SI Minuscule(_col.ColumnName) <> Minuscule(ColumnName) ALORS CONTINUE
RENVOYER _row.get_Item(_col)
FIN
FIN
FIN
SINON
WL.Trace("La rubrique "+ColumnName+" du fichier "+:m_sFichier+" n'a pas été trouvée")
RENVOYER Null
FIN


Par contre, je sèche complètement pour modifier une valeur.

En visualisant basic, on fait ça :

' Update the column entires of the row to new values
      Dim i As Integer
      For i = 0 to dset.Tables("empsamp").Rows.Count-1
        Dim idnum As Integer
        idnum = CType(dset.Tables("empsamp").Rows(i)("id"),Integer)
        If (Equals(idnum,310)) Then
          dset.Tables("empsamp").Rows(i)("name") = "LARRY"
          dset.Tables("empsamp").Rows(i)("job") = "MGR"
          dset.Tables("empsamp").Rows(i)("salary") = 3500
          Exit For
        End If
      Next i


Mais je ne vois pas du tout comment faire avec WinDev ??????

Si une âme charitable à une idée, elle serait la bienvenue.

Par avance, merci.