Page 1 sur 1
AS400 et access
Posté : jeu. 02 avr. 2009, 15:51:41
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
Accès en VBA
Posté : jeu. 02 avr. 2009, 16:57:42
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.
(sans texte)
Posté : ven. 03 avr. 2009, 13:45:30
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
transfert Access vers AS400
Posté : dim. 05 avr. 2009, 11:33:38
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.
(sans texte)
Posté : mar. 14 avr. 2009, 15:56:42
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]
(sans texte)
Posté : mer. 15 avr. 2009, 10:06:48
par bmo
merci beaucoup
je suis en plein test
(sans texte)
Posté : mer. 15 avr. 2009, 14:27:13
par bmo
merci à tous
cela fonctionne très bien
bruno m