AS400 et access

vos questions et suggestions sur ce forum, et son fonctionnement
Répondre
bmo
Messages : 4
Enregistré le : jeu. 02 avr. 2009, 13:48:07
Localisation : PARIS

AS400 et access

Message par bmo »

bonjour
j'aurais aimé développer en VBA un transfert d'une table access vers un fichier del'as400 .

NB : en VBA, je sais déjà me connecter sur l'as400, je sais envoyer une commande sur l'as400 (ex : .CommandText = "{{CALL /QSYS.LIB/BMORVAN.LIB/WORK01.PGM (?,?)}}")

merci beaucoup
bmo

cmasse
Site Admin
Messages : 777
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Accès en VBA

Message par cmasse »

Bonjour,

j'imagine que vous utilisez ADO (OLEDB) ?

je ne connais pas VBA mais VB, avec ce dernier, écrivez qq chose comme ca :

Code : Tout sélectionner

Set req = New ADODB.Command

With req
Set .ActiveConnection = AS400 
    .CommandType = adCmdText 
End With

List1.clear
Form1.Refresh
req.CommandText = "select * from BDVIN1.vins where  PR_CODE = 1"
Set cursor = req.Execute 

cursor.MoveFirst 
Do Until cursor.EOF
List1.AddItem (cursor.Fields("VIN_NOM") + " - " + cursor.Fields("CEPAGE")) 
cursor.MoveNext
Loop
et insérez dans la boucle l'INSERT sur la base Access à la place du Additem.

sinon, voyez l'exportation (cde I5/OS CPYTOIMPF) qui peut générer des fichiers de type CSV et importez ensuite dans Access.
Christian Massé (Volubis.fr)

bmo
Messages : 4
Enregistré le : jeu. 02 avr. 2009, 13:48:07
Localisation : PARIS

(sans texte)

Message par bmo »

le bout de code que vous m'avez envoyé c'est dand le sens as400 vers access. mais mon problème c'est une table access à exporter dans une libraire de l'as/400.

merci

cmasse
Site Admin
Messages : 777
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

transfert Access vers AS400

Message par cmasse »

Alors, faites un SELECT sur la table Access et un INSERT SQL pour chaque ligne lue,
ou bien exportez sous Access , transférez le fichiers CSV dans un répertoire de l'IFS (par FTP ou avec le voisinage réseau) puis passez la commande CPYFRMIMPF cette fois.
Christian Massé (Volubis.fr)

lbrault
Messages : 3
Enregistré le : mar. 14 avr. 2009, 13:48:45
Localisation : Dinan

(sans texte)

Message par lbrault »

un petit exemple à l'appui :

Public Function fImportToAS400()

Dim oCnAS400 As New ADODB.Connection
Dim oCnAccess As New ADODB.Connection
Dim oRsAccess As New ADODB.Recordset
Dim strSql As String


'Connexion à Access
With oCnAccess
.Provider = "Microsoft.JET.OLEDB.4.0"
.ConnectionString = <cheminBddAccess>
.Open
MsgBox .State
End With


'Connexion à AS400
With oCnAS400
.Provider = "IBM DB2 UDB for iSeries IBMDA400 OLE DB Provider"
.ConnectionString = "Data Source=<serveurAS400>;Catalog Library List=<bbl>;User Id=<user>;Password=<pwd>"
.Open
MsgBox .State
End With


strSql = "SELECT * FROM <TableAccess>"
Set oRsAccess = oCnAccess.Execute(strSql)
If Not (oRsAccess.BOF And oRsAccess.EOF) Then
While Not oRsAccess.EOF
strsql = "INSERT INTO <TableAS400> (....) VALUES(" & rs("champ1") & ", " & ....
oCnAS400.Execute strSql
oRsAccess.MoveNext
Wend
End If
oRsAccess.Close
oCnAccess.Close
oCnAS400.Close


'Libération de la mémoire
Set oCnAS400 = Nothing
Set oCnAccess = Nothing
End Function
[/quote]

bmo
Messages : 4
Enregistré le : jeu. 02 avr. 2009, 13:48:07
Localisation : PARIS

(sans texte)

Message par bmo »

merci beaucoup
je suis en plein test

bmo
Messages : 4
Enregistré le : jeu. 02 avr. 2009, 13:48:07
Localisation : PARIS

(sans texte)

Message par bmo »

merci à tous
cela fonctionne très bien
bruno m

Répondre