de l'AS400 (fichier .tto) vers VBA (Excel)

de l'AS400 (fichier .tto) vers VBA (Excel) - VB/VBA/VBS - Programmation

Marsh Posté le 17-07-2003 à 09:54:50    

Bonjour,
mon but de faire une macro VBA réalisant la même action qu'un fichier AS400 .tto dont voici le source:
TRTOPC
 
FROM        LCFFIC/LCCCP001
SELECT      CLIENT,COMPTE,NOMCLI,SOLDEC,SIGNE,SOLDCV,HCCMRI
SELECT      ,PTFVAL
WHERE       (HCCJUR BETWEEN 1 AND 4) AND (DEBQ LIKE 'FRF_')
WHERE        OR (HCCJUR BETWEEN 49 AND 59) AND (DEBQ LIKE 'F
WHERE       RF_') OR (HCCJUR BETWEEN 116 AND 119) AND (DEBQ
WHERE        LIKE 'FRF_') OR (HCCJUR BETWEEN 1 AND 4) AND  
WHERE       (DEBQ LIKE 'EUR_') OR (HCCJUR BETWEEN 49 AND 59)
WHERE        AND (DEBQ LIKE 'EUR_') OR (HCCJUR BETWEEN 116
WHERE        AND 119) AND (DEBQ LIKE 'EUR_')
ORDER BY
3
U:\Secg\Eng\SAS_Echange\Autorisation\base.xls
;312
13211 661
F:\SECG\ENG\SAS_ECHANGE\AUTORISATION\BASE.FDF
22
JOIN BY
GROUP BY
HAVING
SYSTEM      ODIN
OPTIONS     2[[.HMSDMYN11
 
 
ig341
winspool
ig341
1
10
6
1
SQLSEL
HTML        000    2    2  1  1  1  10000000000100000000100001000003006160010
HCSET       windows-1252
HTITLE
HCTEXT
PROPS       000110
 

 
J'ai essayé de me connecté à l'as400 via ODBC avec le code suivant:
 
Dim cnx, s, rs
Set cnx = New ADODB.Connection
Set rs = New ADODB.Recordset
 
 
cnx.ConnectionTimeout = 30
cnx.Open "Provider=IBMDA400;Data Source=truc;uid=truc;pwd=truc"
 
Et quand j'execute la macro j'ai le message d'erreur suivant: une opération OLE DB en plusieurs étapes a généré des erreurs.
 
Quelqu'un a t-il déjà réalisé ce type de macro? Sinon avez-vous déjà écris un VBScript dans le meme genre?
 
Merci d'avance de m'aider.

Reply

Marsh Posté le 17-07-2003 à 09:54:50   

Reply

Marsh Posté le 19-07-2003 à 23:46:05    

Bon group sur l'AS400 avec ODBC
http://groups.google.com/groups?hl [...] l.database
 
Et
 
www.vbfrance.com =>
 
pas de configuration ODBC pour établir une connexion à une BD DB2400 (pas de DSN)
lecture d'un fichier dans une bibliothèque, sélection des enreg et champs, écriture dans une table du projet ACCESS2000 en cours  
 
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
 
 
Set CnnAs400 = CreateObject("ADODB.connection" )
CnnAs400.Open "provider=IBMDA400;data source=nom_du_système", "", ""
         
Set Cnndb = CurrentProject.Connection
         
         
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 nom_de_la_bib_as400.nom_du_fichier_as400 " & _
    " 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 nom_de_la_bib_as400.nom_du_fichier_as400 " & _
    " 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 & " ))"
 
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
 
        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
 
 
http://beta.experts-exchange.com =>
I use this code to get a connection to the IBM AS400 ODBC Driver.  (The code is in context of creating a DTS Package using VBA)
 
'Create Connection to AS400
Set oConnection = oPackage.Connections.New("MSDASQL.1" )
With oConnection
 .Name = "AS400640 Connection"
 .DataSource = "AS400640 FOR WIMIS" 'This ODBC connections needs to be set up wherever this package is executed from
 .Description = "Description - AS400640 Connection"
 .Id = 1
 .UserID = strAS400_UserID
 .Password = strAS400_Password
 .ConnectionTimeout = 300
End With
oPackage.Connections.Add oConnection
Set oConnection = Nothing
 
What code would I use to connect to the IBM OLE DB Driver.  I can not get it working at all!  Thank you.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed