Recordset sur AS400

Messages postés
120
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
2 août 2004
-
Messages postés
120
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
2 août 2004
-
Bonjour,
je suis parvenu à me connecter en VB depuis ACCESS vers un AS400, sans passer par la description d'une source de données dans l'administrateur ODBC, en utilisant le provider Client Access.
Ma connexion sélectionne bien la bibliothèque AS400 que je veux utiliser, et je peux même lister la liste des champs de n'importe quel fichier de cette bib.
MAIS pas moyen d'entrer dans l'objet table (fichier AS400) pour exploiter les données.
Tout recordset m'envoie "erreur inconnue".

Quelqu'un ou quelqu'une (ce n'est pas parce que ça fait 15 jours que je butte là dessus qu'il ne faut pas rester poli...) aurait-il ou elle eu ce genre de soucis ? (c'est plus une solution qui m'interresse !)

NB: je sais qu'en configurant un lien ODBC, je m'en sortirai.Mais je ne veux pas passer par là.

D'avance, merci

oiseau

5 réponses

Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
hep , dis donc , ton truc m'interesse vachement !!!
c'est quoi comme type de fichiers ?? (C-Isam...) ???

By Renfield

thomas.reynald@caramail.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
Messages postés
120
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
2 août 2004

l'As400 fonctionne avec des bases de données DB2400 sous OS400 V4R5

Tu as le même problème ?

oiseau
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
Non , c'est pas ca , mais , vu qu'on a des AS400 au boulot , et que l'on a mis en place un communication avec du Php , peut-etre aurait - on pu se simplifier la vie , mais vraissemblablement , ca va pas être possible , je ne peux malheureusement pas t'aider sur ce coup là !!

pour info , on communique par Sockets , avec un Demon sur l'AS400 , comme ca , on peux interroger les données depuis ce qu'on veux !!
(ici , du php ....)

+---------------------

By Renfield

thomas.reynald@caramail.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
Messages postés
120
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
2 août 2004

Bon, ben tant pis si tu ne peux pas m'aider.

Aurais-tu une idée d'un forum ou je pourrais trouver des informations sur la déclaration de recordset pour accéder à des bases de données As400, sans passer par des DSN ?

oiseau
Messages postés
120
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
2 août 2004

bonjour,

si ça t'interresse, j'ai fini par trouver; je te donne mon code; le plus difficile à été de trouver une syntaxe de SQL compatible avec SQL400 :

' **********************************************************************************
' CONNEXION ET RECORDSET SUR AS400
' **********************************************************************************
Dim CnnAs400 As adoDb.Connection
Dim RsAs400 As adoDb.Recordset
Dim Cnndb As New adoDb.Connection
Dim Rsdb As New adoDb.Recordset
Dim Champ1, Champ2 As String
Dim Champ3, Champ4, Champ5, Champ6 As Variant
Dim i As Integer

' connexion As400
Set CnnAs400 = CreateObject("ADODB.connection")
CnnAs400.Open "provider=IBMDA400;data source=nom_du_système", "", ""

' connexion la la table " tab_achats_année du projet en cours (ACCESS2000)
Set Cnndb = CurrentProject.Connection


' Recordset AS400
'******************
Set RsAs400 = CreateObject("ADODB.recordset")

RsAs400.ActiveConnection = CnnAs400

strSql = " " & _
" select nartmk,mvtsmk,dtmvmk,sum(qtemk) as qte,sum(pdsmk) as poids, sum(valemk) as valeur " & _
" from agsav001.mvtstopf " & _
" where (sensmk='E' and signmk='+')" & _
" group by nartmk,mvtsmk,dtmvmk" & _
" having ((mvtsmk = 'A01' " & _ " Or mvtsmk 'FAN' Or MVTSMK 'FAS' " & _ " Or MVTSMK 'FC ' Or mvtsMK 'FD ' " & _ " Or MVTSMK 'FIT' Or MVTSMK 'FM ' " & _ " or MVTSMK 'FTR' Or MVTSMK 'RA+' " & _ " Or MVTSMK 'RA-' Or MVTSMK 'RF ') " & _
"And (DTMVMK between " & date_début & " and " & date_limite & " ))" & _
" union" & _
" select nartmk,mvtsmk,dtmvmk,sum(qtemk) * (-1) as qte,sum(pdsmk) * (-1) as poids, sum(valemk) * (-1) as valeur " & _
" from agsav001.mvtstopf " & _
" where (sensmk='E' and signmk='-')" & _
" group by nartmk,mvtsmk,dtmvmk " & _
" having ((mvtsmk = 'A01' " & _ " Or mvtsmk 'FAN' Or MVTSMK 'FAS' " & _ " Or MVTSMK 'FC ' Or mvtsMK 'FD ' " & _ " Or MVTSMK 'FIT' Or MVTSMK 'FM ' " & _ " or MVTSMK 'FTR' Or MVTSMK 'RA+' " & _ " Or MVTSMK 'RA-' Or MVTSMK 'RF ') " & _
"And (DTMVMK between " & date_début & " and " & date_limite & " ))"

' lecture de l'as400
RsAs400.Open strSql

Do Until RsAs400.EOF
i = 1
For Each Fld In RsAs400.Fields
Select Case i
Case 1
Champ1 = Fld.Value
Case 2
Champ2 = Fld.Value
Case 3
Champ3 = Fld.Value
Case 4
Champ4 = Fld.Value
Case 5
Champ5 = Fld.Value
Case 6
Champ6 = Fld.Value
Case Else
End Select
i = i + 1
Next Fld

' insertion dans la table de la base après ouverture si pas déjà ouverte

If Rsdb.State = 0 Then
Rsdb.Open "tab_achats_année", Cnndb, adOpenKeyset, adLockOptimistic
End If

With Rsdb
.AddNew Array("nartmk", "mvtsmk", "qté achat", "poids achat", "valeur achat", "dtmvmk"), _
Array(Champ1, Champ2, Champ4, Champ5, Champ6, Champ3)
.Update
End With

RsAs400.MoveNext
Loop
RsAs400.Close
Set RsAs400 = Nothing
Rsdb.Close
Set Rsdb = Nothing

End If

oiseau