Lo estaba enviando a las cuentas personales pero como sois muchos envio el ejemplo al foro.
Hay un Redbook de IBM en PDF y en ingles en el siguiente link: http://publib-b.boulder.ibm.com/cgi-bin/searchsite.cgi?query=sg245183 Ojo, son 3'5 Mb. Saludos cordiales, Javier Garc�a Marqu�s LO�TRANS, Log�stica y Transporte, S.A. (Div. Inform�tica) Tel.: 93 298 30 78 Fax.: 93 298 30 13 E-mail: [EMAIL PROTECTED] Web: www.lotrans.es -----Mensaje original----- De: Javier Garc�a Marqu�s [mailto:[EMAIL PROTECTED] Enviado el: lunes, 09 de febrero de 2004 17:52 Para: 'RGB'; 'Mariano D�az Diaz' Asunto: Acceso a iSeries por OLE-DB Primero tienes que agregar estas referencias que estan en Client Access (Instalando el componente) AS/400 Express Toolkit Table Index Type Library 1.2 IBM AS/400 Client Access Express ActiveX Objects Library Microsoft ActiveX Data Objects 2.0 Library Luego defines la conexi�n, el recordset, el mandato y las variables para los parametros. Public Cn400 As New ADODB.Connection 'Conexion Public Rs As New ADODB.Recordset 'Recordset Public Mandato As New ADODB.Command 'Comando Public Parany As String * 4 'Parametro Public Parmes As String * 2 Public Meses(1 To 12) Public Anys(1 To 5) Public mesnum Sub Prueba() ' definir serie de meses Meses(1) = "Enero" Meses(2) = "Febrero" Meses(3) = "Marzo" Meses(4) = "Abril" Meses(5) = "Mayo" Meses(6) = "Junio" Meses(7) = "Julio" Meses(8) = "Agosto" Meses(9) = "Septiembre" Meses(10) = "Octubre" Meses(11) = "Noviembre" Meses(12) = "Diciembre" ' definir serie de a�os Anys(1) = Str(Year(Date)) For e = 1 To 4 Anys(e + 1) = Str(val(Anys(e) - 1)) Next ' Llenamos y Mostramos formulario petici�n de par�metros que son mes y a�o For i = 1 To 12 UserForm1.ComboBox1.AddItem Meses(i) Next For i = 1 To 5 UserForm1.ComboBox2.AddItem Anys(i) Next UserForm1.Show ' Recuperamos par�metros para el AS400 mesnum = UserForm1.ComboBox1.ListIndex + 1 If mesnum < 10 Then Parmes = Str(mesnum) ElseIf mesnum = 10 Then Parmes = "10" ElseIf mesnum = 11 Then Parmes = "11" ElseIf mesnum = 12 Then Parmes = "12" End If Parany = Trim(UserForm1.ComboBox2.Text) ' abrimos conexion Cn400.Open "provider=IBMDA400;data source=192.168.3.1;", "", "" ' Llamar a programa en el iSeries Set Mandato.ActiveConnection = Cn400 Mandato.CommandText = "{{CALL /QSYS.LIB/PRUEBAS.LIB/PROGR12.PGM(?,?)}}" Mandato.Prepared = True Mandato.Parameters.Append Mandato.CreateParameter("Parmes", adChar, adParamInput, 2) Mandato.Parameters.Append Mandato.CreateParameter("Parany", adChar, adParamInput, 4) Parms = Array(Parmes, Parany) Mandato.Execute , Parms, adCmdText ' asignamos fichero a recordset Set Rs = Cn400.Execute("Select * From Pruebas.Archivf Order by Nombre") Rs.MoveFirst ' Llenamos Hoja de c�lculo leyendo registros en iSeries Do Range("A" & y) = Rs.Fields("Nombre") Range("B" & y) = val(Replace(Rs.Fields("I1112"), ",", ".")) Range("C" & y) = val(Replace(Rs.Fields("I1111"), ",", ".")) Range("D" & y) = val(Replace(Rs.Fields("I1110"), ",", ".")) Range("E" & y) = val(Replace(Rs.Fields("I1109"), ",", ".")) Range("F" & y) = val(Replace(Rs.Fields("I1108"), ",", ".")) Range("G" & y) = val(Replace(Rs.Fields("I1107"), ",", ".")) Range("H" & y) = val(Replace(Rs.Fields("I1106"), ",", ".")) Range("I" & y) = val(Replace(Rs.Fields("I1105"), ",", ".")) Range("J" & y) = val(Replace(Rs.Fields("I1104"), ",", ".")) Range("K" & y) = val(Replace(Rs.Fields("I1103"), ",", ".")) Range("L" & y) = val(Replace(Rs.Fields("I1102"), ",", ".")) Range("M" & y) = val(Replace(Rs.Fields("I1101"), ",", ".")) Range("N" & y) = val(Replace(Rs.Fields("I1112"), ",", ".")) + val(Replace(Rs.Fields("I1111"), ",", ".")) + val(Replace(Rs.Fields("I1110"), ",", ".")) _ + val(Replace(Rs.Fields("I1109"), ",", ".")) + val(Replace(Rs.Fields("I1108"), ",", ".")) + val(Replace(Rs.Fields("I1107"), ",", ".")) _ + val(Replace(Rs.Fields("I1106"), ",", ".")) + val(Replace(Rs.Fields("I1105"), ",", ".")) + val(Replace(Rs.Fields("I1104"), ",", ".")) _ + val(Replace(Rs.Fields("I1103"), ",", ".")) + val(Replace(Rs.Fields("I1102"), ",", ".")) + val(Replace(Rs.Fields("I1101"), ",", ".")) Range("O" & y) = val(Replace(Rs.Fields("I1100"), ",", ".")) Range("P" & y) = Range("N" & y) + val(Replace(Rs.Fields("I1100"), ",", ".")) Rs.MoveNext Loop Until Rs.EOF End Sub En este caso llenamos una hoja con datos de archive en iSeries, pero funciona igual al reves. Si podeis recibir 2 megas, os envio el redbook de IBM Saludos cordiales, Javier Garc�a Marqu�s LO�TRANS, Log�stica y Transporte, S.A. (Div. Inform�tica) Tel.: 93 298 30 78 Fax.: 93 298 30 13 E-mail: [EMAIL PROTECTED] Web: www.lotrans.es
<<attachment: winmail.dat>>
