> Tech > Méthode Seek des objets Recordset

Méthode Seek des objets Recordset

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Le provider IBMDA400 prend en charge ADO 2.5, la dernière version d'ADO distribuée par Microsoft. Depuis ADO 2.1, Microsoft fournit une méthode appelée Seek dans les objets recordset. Cette méthode permet de rechercher un enregistrement particulier dans un fichier indexé. La version bêta de Client Access Express du provider IBMDA400

Méthode Seek des objets Recordset

en charge la méthode décrite. Pour utiliser cette dernière avec IBMDA400, commencez
par faire pointer la propriété Index du recordset sur le fichier à  ouvrir. Ensuite,
spécifiez le même nom lors de l’ouverture du recordset. Pour terminer, on peut
effectuer des recherches en utilisant les champs clés du fichier. Définissez les
champs clés dans l’ordre. On peut spécifier la valeur d’un ou de tous les champs
clés, voire même des clés partielles. (Veuillez consulter l’aide en ligne OLE
DB Technical Reference pour de plus amples informations et des exemples de code).

Depuis sa première version (Client Access V3R1M3), IBMDA400 inclut un ensemble
d’objets ActiveX appelés AD400. Ces derniers permettent aux utilisateurs de rechercher
ou de trouver un enregistrement particulier dans un fichier indexé Bien que cette
prise en charge soit un palliatif à  l’absence de méthode Seek avant ADO 2.1, son
principal inconvénient, hormis le fait que les objets AD400 ne font pas partie
de ADO, est qu’il nécessite deux connexions à  l’AS/400. Une des connexions est
la connexion à  ADO, qui possède l’objet recordset ouvert ; la deuxième connexion
est requise par les objets AD400 pour gérer les index ouverts.

A présent qu’ADO propose une méthode Seek et que le provider IBMDA400 prend en
charge cette méthode, il n’y a plus besoin d’utiliser les objets AD400, même si
IBMDA400 les prend toujours en charge. L’utilisation de la nouvelle fonction d’une
part, élimine la nécessité de l’une des connexions AS/400, et d’autre part, améliore
les performances car une seule opération, et non deux, réalise la recherche d’un
enregistrement ou trouve et se positionne sur celui-ci.

OLE DB provider extrait les données constituant effectivement le LOB (l’image)
de l’AS/400 lorsque l’application a besoin de la valeur

LOB
Depuis la V4R5M0, l’AS/400 prend en charge trois types de LOB (Large OBjects),
à  savoir : Les BLOB (Binary Large Objects), les CLOB (Character Large Objects)
et les DBCLOB (Double-byte Character Large Objects). Les DBCLOB sont des objets
qui contiennent des données Unicode ou graphiques. Les BLOB contiennent des suites
d’octets de données (c’est-à -dire des données qui n’ont aucune structure inhérente,
comme c’est le cas, par exemple, des données Unicode, qui sont analysées par groupe
de deux octets). Et les CLOB contiennent des données dont les caractères sont
codés sur un octet.

Voici comment fonctionne la prise en charge des LOB dans IBMDA400 pour par exemple
extraire une image bitmap d’une colonne depuis une table DB2/400. OLE DB provider
extrait les données constituant effectivement le LOB (l’image) de l’AS/400 lorsque
l’application a besoin de la valeur. Lorsqu’une ligne d’un objet recordset ADO
est extraite, les données du LOB ne sont pas transférées immédiatement vers le
PC comme c’est le cas des données d’autres lignes et colonnes. En revanche, le
provider IBMDA400 envoie un handle pour représenter les données.
Lorsque la valeur du LOB ou une partie de celle-ci est requise avec la méthode
GetChunk du champ recordset, le handle est alors utilisé pour extraire les données
à  proprement parler de l’AS/400. La gestion des handles des LOB est interne au
provider IBMDA400 OLE DB et n’est pas accessible à  partir de l’application. Cette
dernière utilise simplement la valeur du champ recordset ADO pour extraire la
totalité de l’image en une seule opération, ou utilise la méthode GetChunk du
champ recordset pour extraire un nombre déterminé d’octets ou une portion de l’image.
Pour vous aider à  comprendre comment utiliser la nouvelle gestion des LOB dans
Client Access Express, j’ai écrit une application possédant deux boutons de commande.
Au premier bouton de commande est associé un code qui crée une table DB2/400 disposant
d’une colonne BLOB et insère un fichier graphique (par exemple JPEG ou bitmap)
du PC dans la table DB2/400 en tant que sa première ligne.
Le deuxième bouton de commande affiche simplement une nouvelle page contenant
un contrôle VB Image classique associé au champ BLOB du recordset d’un contrôle
ADO Data. Le contrôle ADO Data gère le recordset et l’extraction des données du
BLOB du OLE DB provider (IBMDA400 dans ce cas).

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis d'experts et témoignages clients et ainsi, retrouvez les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et collaboration, Impression et capture et Infrastructure.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010