Page 1 of 1

Conexión a un AS/400

Posted: Tue Nov 15, 2005 6:43 pm
by Armando
Amigos el foro:

Necesito conectarme a un AS/400-DB2 para obtener
información y crear un fichero en formato TXT, el
problema que tengo es ¿ Cómo hacer la conexión ?
supongo que vía ODBC pero no tengo la experiencia
necesaria.

Alguien que me tire un hilo para poder continuar ?

Saludos

Posted: Tue Nov 15, 2005 8:15 pm
by R.F.
Si es a un DB2/400 se puede hacer por ADO siempre y cuando exista el ADO Provider, que creo que si existe, llamame y te digo lo que necesitas.

Posted: Fri Nov 25, 2005 3:09 pm
by YamilBracho
Necesitas instalar en tu PC un software de IBM llamado ClientAccess

Tienes razón

Posted: Fri Nov 25, 2005 10:02 pm
by Armando
Yamil:

Efectivamente existe ese software aúnque el cliente no lo esta usando, utiliza otro que se llama Bossanova.

Saludos, Armando

Posted: Fri Feb 24, 2006 6:07 pm
by Biel EA6DD
Armando, soy un recien llegado al foro, supongo que ya tendras el tema arreglado, pero si todavia necesitas ayuda con el AS/400 hazmelo saber.

Biel
Saludos desde Mallorca

Posted: Sat Feb 25, 2006 4:24 pm
by Armando
Biel:

La verdad es que aún esta pendiente el tema, si tienes tiempo para apoyarme te lo voy a agradecer.

Envie un correo a tu privado pero no se si lo recibiste.

Saludos, Armando

Posted: Tue Mar 07, 2006 9:54 am
by Biel EA6DD
Armando, tal como comentamos por correo-e aqui te pongo una pequeña prueba que hice con la conexion ODBC del AS/400

Code: Select all

//-----------------
FUNCTION TestOdbc()
//-----------------
   Local oODBC,oWndOdbc,oBrw ,oDbf
   DEFINE WINDOW oWndOdbc MDI CHILD  FROM 2,2 TO 22,60 TITLE '('+ProcName()+") Tabla en AS/400" COLOR "B/W"
   //----
   oODBC := TOdbc():New("haprot01" ) //no paso Usr ni Psw pq la sesion ya esta abierta
   //haprot01->Nombre del origen de datos que apunta al AS/400 via Client Access ODBC
   If !oOdbc:lSuccess
      oOdbc:ShowErrorList("ODBC session not successfully initialized, aborting...")
      oOdbc:End()
      return nil
   Endif

   oDbf := oOdbc:Query( "SELECT CliCod,CliNomFis FROM HAPROT01F.client" )
   //                                                biblioteca.fichero
   // puedes hacer select de ficheros fisicos, logicos o joins. O juntarlos en la propia sentencia SQL
   oDbf:PrimaryKeys({'CliCod'})//Le asigno la clave manualmente, pq el ODBC del AS/400 no la devuelve
   //Necesario si queremos hacer actualizaciones
   if oOdbc:IsError()
      oOdbc:ShowErrorList()
      oOdbc:aErrors := {}
      oDbf:End()
      return nil
   endif
   oDbf:Open()
   oDbf:Complete()
   oDbf:GoTop()
   //------
   oBrw := TXBrowse():New(oWndOdbc)

   oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW
   oBrw:nColDividerStyle    := LINESTYLE_BLACK
   oBrw:lColDividerComplete := .T.

   oCol:= oBrw:AddCol()
   oCol:bStrData:= {|| Str(oDbf:CliCod) }
   oCol:cHeader := 'Cod'

   oCol:= oBrw:AddCol()
   oCol:bStrData:= {|| oDbf:CliNomFis }
   oCol:cHeader := 'Nombre Fiscal'

   oBrw:SetRDD()
   oBrw:CreateFromCode()
   oWndOdbc:oClient := oBrw
   oBrw:SetFocus()
   ACTIVATE WINDOW oWndOdbc VALID (oDbf:END(),.T.)
/* Un test para probar si grababa correctamente en AS/400, todo OK.
   oDbf:AddNew()
   oDbf:CliCod   :=18
   oDbf:CliNomFis:='Grabado desde Harbour'
   oDbf:Update() */
RETURN NIL

Posted: Tue Mar 07, 2006 10:17 pm
by Armando
Biel:

Muchas gracias por el ejemplo, voy a intentarle partiendo de tu aporte.

Saludos, Armando