Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Cerrar ventana de consola... Fito PowerCOBOL (ActiveX, v4 - v11) 7 29 de agosto de 2019 23:48
[Sintaxis] Cerrar form de Usuario y Contraseña dmosca PowerCOBOL (ActiveX, v4 - v11) 1 30 de julio de 2017 23:20
[Duda] Crear archivos DBF desde COBOL (sin ODBC) Joseg PowerCOBOL (ActiveX, v4 - v11) 4 16 de marzo de 2016 16:36
[Sintaxis] Desactivar la [X] de cerrar ventana Ciro PowerCOBOL (ActiveX, v4 - v11) 3 28 de octubre de 2015 13:26
[PowerCOBOL + COM/OLE] Base de Dados DBF por OLE2 Rapinto Cocina PowerCOBOL 3 24 de junio de 2015 11:36

Respuesta

  #1
Antiguo 29 de abril de 2018, 13:29
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8
Predeterminado Cerrar .dbf desde power
0 Inactivo Inactivo

Hola.

Os comento,
Bajo powercobol 9 hago unicamente consultas sobre dos bases de datos dbf creadas con FOXPRO.

Utilizo para acceder el Driver={Microsoft dBASE Driver (*.dbf)}; Driverid=277; Dbq=C:\DOSER\RAFEL\SEMANALES\DATOS\.
Funcionan perfectamente.

El caso es que en una actualizacion que hicieron en el programa bajo foxpro, me da un error cuando accedo a las bases.

Haciendo pruebas, he conseguido entrar en las bases abriendo las bases con el open office base, modificando el valor de cualquier registro y grabandolo.

Supongo que en la modificacion, dejaron las bases sin su correspondiente close y cuando accedo en power me da error.

Alguien sabe como podria cerrar las bases desde power para poder acceder sin tener que utilizar el open office ( es que una tabla es muy grande y me tarda en exceso )


Gracias por todo.
Breew is offline   Responder Con Cita
  #2
Antiguo 1 de mayo de 2018, 20:48
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

Por OBDC no se puede cerrar archivos, es una conexión de red, o sea que se conecta y desconecta de sus sesiones abiertas, aunque no sea en red local.

Ahora los archivos DBF podía darse el caso de que estuviera abiertos de solo exclusivo y no te deje acceder a ellos, en ese caso, la solución es copiar los archivos que necesitas acceder a un ruta local, y desde hay accedes desde OBDC.



Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije is offline   Responder Con Cita
  #3
Antiguo 5 de mayo de 2018, 19:34
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola.

La copia tambien me da error.

No entiendo que puede ser. El caso es que si abro con open oficce y lo guardo, entonces si que funciona.

Gracias
Breew is offline   Responder Con Cita
  #4
Antiguo 5 de mayo de 2018, 22:42
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Breew, no podría ser la versión del ODBC? Busca a ver si hay alguna más reciente del que tienes.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #5
Antiguo 30 de mayo de 2018, 21:30
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola.
Nada, tampoco estoy seguro si es el driver.
Como no se que version tengo, he instalado la ultima que he encontrado y tampoco.

No se si pedir a algun programador que me haga una aplicacion en fox pro que lo abra y lo cierre.
Siempre accedo en modo consulta y siempre sobre una copia, nunca accedo directamente al origen de la copia.

Última edición por Breew fecha: 30 de mayo de 2018 a las 21:31. Razón: ampliacion
Breew is offline   Responder Con Cita
  #6
Antiguo 14 de junio de 2020, 10:09
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Bueno.

Al final , lo pude arreglar a lo bestia.

Tras ver que si abria y grababa la copia de la base con el open officce, y despues podia manipularla con el driver, me arme de valor y cogi el original e hice lo mismo.

Desde entonces funciona todo correctamente. desde el programa original, no se ha visto ninguna anomalia, y desde power cobol todo va perfecto.

Hago incapie en que con el ODBC lo unico que hago son consultas para procesarlas de otra manera, pero en ningun caso modifico la base original.

Lo dejo aqui por si algun usuario ha tenido algun problema parecido.

Saludos
Breew is offline   Responder Con Cita
  #7
Antiguo 14 de junio de 2020, 11:30
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Breew, pero entonces cuál era exactamente el problema? A la hora de copiar la base se corrompía o algo así?



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #8
Antiguo 14 de junio de 2020, 12:26
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola Kuk.
No creo que estuviera corrompida, ya que desde la misma aplicacion hay una funcion para reindexarla y el problema continuaba.

El programa que utilizan es de una pequeña empresa y esta personalizado a sus necesidades.
Hicieron una actualizacion para añadir mas funciones, y supongo que alguna cosa paso en la base (añadieron mas registros ). Desde la aplicacion todo funcionaba bien.

Cuando accedi desde power, no tenia conexion a la base. Asi que decidi abrir una copia con el OpenOffice, eche un vistazo, la grabe y entonces podia acceder .
Empece a darle vueltas a la conexion , al driver, al tamaño de los registros y nada funcionaba.

No lo tengo claro, seguramente , hicieron alguna actualizacion de la base con una version mas actualizada de FOXPRO y al ser compatible con la anterior, no detectaron ningun problema.

Como la copia con open funcionaba, decidi probrar directamente con la original:abrir, modificar un registro y salvarlo todo con el open .
El programa ha funcionado sin novedades y mi aplicacion tambien.

Citación del post de Kuk Ver Mensaje
@Breew, pero entonces cuál era exactamente el problema? A la hora de copiar la base se corrompía o algo así?
Breew is offline   Responder Con Cita
  #9
Antiguo 9 de septiembre de 2021, 08:15
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola Coboleros.


Reabro este hilo, porque se me ha repetido el problema con otra tabla del visual Foxpro.

El progama que uso esta basado en una solucion que me dio Rapinto (Gracias amigo).
[Aporte] Base de Dados DBF por OLE2 - COBOL Foro
El caso es que hay tablas que no puedo acceder via ADO a no ser que las abra con el open office y las grabe de nuevo .
Buscando la causa , creo que se debe a que hay tablas que se crearon como Tabla DbaseIII y otras son tablas Visual Foxpro.

Normalmente uso el siguiente driver
Código COBOL:
  1. MOVE "Driver={Microsoft dBASE Driver (*.dbf)}; Driverid=277; Dbq=C:\doser\rafel\datos"   TO ADO-CONNECT-STRING.

Para solventarlo, he instalado el visualfoxpro 9 , que supongo que me ha instalado el driver de FoxPor
he intento hacerlo servir

Código COBOL:
  1. MOVE 'Driver={Microsoft Visual FoxPro Driver (*.dbf)}; Dbq=C:\doser\rafel\datos' TO ADO-CONNECT-STRING.

pero creo que no se si la instruccion seria esta, porque no hay manera de que funcione.

Muchas veces que importo la base con Open me indica que determine el conjunto de caracteres, supongo que en algun momento
se utilizo en un ordenador que no tiene el mismo conjunto de caracteres .

El programa original es muy antiguo, seguramente se origino en MSDos y con el tiempo se ha ido actualizando a varias versiones
compatibles con windows, mientras que las tablas son las mismas.

Alguno sabria indicarme que intruccion deberia poner en la conexion?
Supongo que si hago funcionar el driver de VisualFoxpro, podria consultar la tabla sin tener que modificarla.


Gracias
Breew is offline   Responder Con Cita
  #10
Antiguo 15 de septiembre de 2021, 15:45
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola de nuevo.

He encontrado el comando para la conexion, al menos no da error a la primera

Código COBOL:
  1.              MOVE "Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; SourceDB=C:\doser\rafel\datos"  
  2.              TO ADO-CONNECT-STRING.

Pero no consigo ver nada
Código SQL:
  1. SELECT * FROM CLIENTES

Intento que coja el contenido de un campo y lo meta en una variable para volcarlo en un ctlist:
Asi como en dbase III funcionaba con estas instrucciones, parece que no hace caso en foxpro.
Código COBOL:
  1.  GETFIELDS SECTION.
  2.  GETFIELDS-00.
  3.  
  4.     INVOKE OBJ-FIELDS "GET-ITEM" USING IDX1 RETURNING OBJ-FIELD(IDX1 + 1).
  5.     INVOKE OBJ-FIELD(IDX1 + 1) "GET-NAME" RETURNING FIELD-NAME.
  6. *
  7.           IF FIELD-NAME = "CLICODIGO"          INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING CLICODIGO  . DISPLAY CLICODIGO .
  8.           IF FIELD-NAME = "NOMBRE"             INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING NOMBRE     . DISPLAY NOMBRE    .
  9.           IF FIELD-NAME = "RAZON"              INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING RAZON      . DISPLAY RAZON     .
  10.           IF FIELD-NAME = "NIF"                INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING NIF        . DISPLAY NIF       .
  11.           IF FIELD-NAME = "DIRECCION"          INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING DIRECCION  . DISPLAY DIRECCION .
  12.           IF FIELD-NAME = "DP"                 INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING DP         . DISPLAY DP        .
  13.           IF FIELD-NAME = "POBLACION"          INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING POBLACION  . DISPLAY POBLACION .
  14.           IF FIELD-NAME = "PROVINCIA"          INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING PROVINCIA  . DISPLAY PROVINCIA .
  15.           IF FIELD-NAME = "TELEFONO"           INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING TELEFONO   . DISPLAY TELEFONO  .
  16.           IF FIELD-NAME = "TELEFONO2"          INVOKE OBJ-FIELD(IDX1 + 1) "GET-VALUE" RETURNING TELEFONO2  . DISPLAY TELEFONO2 .
  17.  
  18.  GETFILEDS-99.
  19.     EXIT.
  20.  

Confieso que practicamente no entiendo el codigo, simplemente lo modifico basandome en el original .

Gracias
Breew is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:48.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.