Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
bmo
Inscrit le: 02 Avr 2009 Messages: 4 Localisation: PARIS
|
Posté le: Jeu 02 Avr 2009, 15:51:41 Sujet du message: AS400 et access |
|
|
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 |
|
Revenir en haut de page |
|
 |
cmasse Site Admin
Inscrit le: 14 Fév 2007 Messages: 716 Localisation: Nantes
|
Posté le: Jeu 02 Avr 2009, 16:57:42 Sujet du message: Accès en VBA |
|
|
Bonjour,
j'imagine que vous utilisez ADO (OLEDB) ?
je ne connais pas VBA mais VB, avec ce dernier, écrivez qq chose comme ca :
Code: |
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) |
|
Revenir en haut de page |
|
 |
bmo
Inscrit le: 02 Avr 2009 Messages: 4 Localisation: PARIS
|
Posté le: Ven 03 Avr 2009, 13:45:30 Sujet du message: (sans texte) |
|
|
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 |
|
Revenir en haut de page |
|
 |
cmasse Site Admin
Inscrit le: 14 Fév 2007 Messages: 716 Localisation: Nantes
|
Posté le: Dim 05 Avr 2009, 11:33:38 Sujet du message: transfert Access vers AS400 |
|
|
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) |
|
Revenir en haut de page |
|
 |
lbrault
Inscrit le: 14 Avr 2009 Messages: 3 Localisation: Dinan
|
Posté le: Mar 14 Avr 2009, 15:56:42 Sujet du message: (sans texte) |
|
|
un petit exemple à l'appui :
Citation: |
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] |
|
Revenir en haut de page |
|
 |
bmo
Inscrit le: 02 Avr 2009 Messages: 4 Localisation: PARIS
|
Posté le: Mer 15 Avr 2009, 10:06:48 Sujet du message: (sans texte) |
|
|
merci beaucoup
je suis en plein test |
|
Revenir en haut de page |
|
 |
bmo
Inscrit le: 02 Avr 2009 Messages: 4 Localisation: PARIS
|
Posté le: Mer 15 Avr 2009, 14:27:13 Sujet du message: (sans texte) |
|
|
merci à tous
cela fonctionne très bien
bruno m |
|
Revenir en haut de page |
|
 |
|