Page 1 of 2
Ayuda con apertura de ficheros POR FAVOR
Posted: Mon Dec 18, 2006 1:20 pm
by mjcc
Tengo una rutina que abre todos los ficheros del sistema, ahora le he ampliado tres ficheros mas, y me da u error, de
** error de apertura **
y no me deja abrir mas de un determinado numero de ficheros, alguno de vosotros conoce una solucion por favor
GRACIAS
Posted: Mon Dec 18, 2006 1:59 pm
by Carles
Hola,
Primero de todo tenemos de averiguar q fichero es. Tambien se puede mirar la rutina q abre los fichero y ver como lo haces. Mirar si hay campos memo, indices asociados, ....
Necesitamos datos
Tranki q todo tiene solucion
Ahi va todo el codigo.
Posted: Mon Dec 18, 2006 2:51 pm
by mjcc
#include "FWCE.ch"
function Main()
local oWnd, obmp
DbCloseAll()
Config()
abrir_dbfs_cdx()
indexa_ficheros()
abrir_dbfs_tmp()
menu_principal()
DbCloseAll()
oBmp:End()
return 0
********************************************************
* Configurardor de opciones de menu
********************************************************
FUNCTION iniciar_menu
local oMenu
DEFINE MENU oMenu RESOURCE 102
REDEFINE MENUITEM ID 320 OF oMenu ACTION MsgInfo("MJCC" +;
CHR(13) +;
"Manuel Jose Castro Casas,S.L." +;
CHR(13) +;
"Arcay 124 bajo"+;
CHR(13) +;
"15873 - Bembibre"+;
CHR(13)+;
"La Coruña"+;
CHR(13)+;
"902 234568",;
"Gestion POKECT")
REDEFINE MENUITEM ID 1310 OF oMenu ACTION vehiculo("","","","")
RETURN omenu
********************************************************
* Configuracion del sistema por defecto para arrancar *
********************************************************
STATIC FUNCTION Config()
HB_LANGSELECT("ESWIN")
SET DELETED ON
SET DATE TO ITALIAN
SET SOFTSEEK ON
SET CENTURY ON
SET EPOCH TO 2000
SET CONFIR ON
*Hb_LangSelect ('PL')
*Hb_SetCodePage ('PLWIN')
REQUEST HB_LANG_ES // Para establecer español para Mensajes, fechas, etc..
REQUEST HB_CODEPAGE_ESWIN // Para establecer código de página a Español (Ordenación, etc..)
HB_LangSelect('ES')
HB_SetCodePage("ESWIN") // Para ordenación (arrays, cadenas, etc..)
RETURN 0
********************************************************************
* Abre los ficheros temporales del sistema *
********************************************************************
FUNCTION abrir_dbfs_tmp()
USE ( CurDir() + "\tmp\rescli.dbf") NEW
USE ( CurDir() + "\tmp\resart.dbf") NEW
USE ( CurDir() + "\tmp\resage.dbf") NEW
USE ( CurDir() + "\tmp\resavc.dbf") NEW
USE ( CurDir() + "\tmp\lineas.dbf") NEW
USE ( CurDir() + "\tmp\resvehi.dbf") NEW
RETURN 0
***********************************************************************************
* APERTURA DE FICHEROS CON LOS INDICES GENERADOS
***********************************************************************************
FUNCTION abrir_dbfs_cdx()
USE ( CurDir() + "\dat\planning.dbf") NEW
USE ( CurDir() + "\dat\plandet.dbf") NEW
USE ( CurDir() + "\dat\cliente.dbf") NEW
USE ( CurDir() + "\dat\articulo.dbf") NEW
USE ( CurDir() + "\dat\agenda.dbf") NEW
USE ( CurDir() + "\dat\tareas.dbf") NEW
USE ( CurDir() + "\dat\recuento.dbf") NEW
USE ( CurDir() + "\dat\avc.dbf") NEW
USE ( CurDir() + "\dat\avl.dbf") NEW
USE ( CurDir() + "\dat\fpago.dbf") NEW
USE ( CurDir() + "\dat\barras.dbf") NEW
USE ( CurDir() + "\dat\vehiculo.dbf") NEW
USE ( CurDir() + "\dat\grupo.dbf") NEW
USE ( CurDir() + "\dat\subgrupo.dbf") NEW
USE ( CurDir() + "\dat\familias.dbf") NEW
USE ( CurDir() + "\dat\seccion.dbf") NEW
USE ( CurDir() + "\dat\labo.dbf") NEW
RETURN 0
*************************************************************************
* Indexa los ficheros de la aplicacion por _ que a mi me interesan
**************************************************************************
Function indexa_ficheros ()
Request DbfCdx
Request DbfFpt
RddSetDefault ('DbfCdx')
Request Hb_Lang_PLWIN
Request Hb_CodePage_PLWIN
* Clientes
SELECT cliente
Index On nombrec Tag inombrec TO ( CurDir() + "\dat\cliente.cdx" ) FOR borrado <> 1
Index On codigo Tag icodigo TO ( CurDir() + "\dat\cliente.cdx" ) FOR borrado <> 1
* Artículos
SELECT articulo
Index On nombrea Tag inombrec TO ( CurDir() + "\dat\articulo.cdx" ) FOR borrado <> 1
Index On codigo Tag icodigo TO ( CurDir() + "\dat\articulo.cdx" ) FOR borrado <> 1
Index On autosel Tag iautosel TO ( CurDir() + "\dat\articulo.cdx" ) FOR borrado <> 1
* Indexa los ficheros de la agenda
SELECT agenda
Index On nombrec Tag inombrec TO ( CurDir() + "\dat\agenda.cdx" ) FOR borrado <> 1
Index On codigo Tag icodigo TO ( CurDir() + "\dat\agenda.cdx" ) FOR borrado <> 1
* Indexa fichero de planning
SELECT tareas
Index On subs(dtoc(tfecha),1,5) + alltrim(thora) Tag inombrec TO ( CurDir() + "\dat\tareas.cdx" ) FOR borrado <> 1
* Indexa fichero de recuento de stocks
SELECT recuento
Index ON codigo Tag irecuen TO ( CurDir() + "\dat\recuento.cdx" )
* Indexa el fichero de cabeceras de albaranes de ventas
SELECT avc
Index ON nombrec Tag inombre TO ( CurDir() + "\dat\avc.cdx" ) FOR borrado <> 1
Index ON puntero Tag icodigo TO ( CurDir() + "\dat\avc.cdx" ) FOR borrado <> 1
* Indexa el fichero de albaranes
SELECT avl
Index ON documento Tag icodigo TO ( CurDir() + "\dat\avl.cdx" ) FOR borrado <> 1
Index ON puntero Tag ilineas TO ( CurDir() + "\dat\avl.cdx" ) FOR borrado <> 1
* Indexa el fichero de formas de pago
SELECT fpago
Index ON pagocod Tag icodpag TO ( CurDir() + "\dat\fpago.cdx" )
* Indexa el fichero de codigos de barras
SELECT barras
Index ON bartean13 Tag barras1 TO ( CurDir() + "\dat\barras.cdx" )
Index ON bartean13d Tag barras2 TO ( CurDir() + "\dat\barras.cdx" )
* Fichero de planning
SELECT planning
Index ON fechadoc Tag icodigo TO ( CurDir() + "\dat\planning.cdx" )
* Detalle de plannig
SELECT plandet
Index ON fechadoc Tag icodf TO ( CurDir() + "\dat\plandet.cdx" )
* Vehiculos empresa
SELECT vehiculo
Index On nombrec Tag nombrev TO ( CurDir() + "\dat\vehiculo.cdx" ) FOR borrado <> 1
Index On codigo Tag matricu TO ( CurDir() + "\dat\vehiculo.cdx" ) FOR borrado <> 1
* Grupos
SELECT grupo
Index On percod Tag ipercod TO ( CurDir() + "\dat\grupo.cdx" )
* Subrupos
SELECT subgrupo
Index On percod Tag ipercod TO ( CurDir() + "\dat\subgrupo.cdx" )
* Familias
SELECT familias
Index On famcodigo Tag ifamcod TO ( CurDir() + "\dat\familias.cdx" )
* Secciones
SELECT seccion
Index On sec_codigo Tag iseccod TO ( CurDir() + "\dat\seccion.cdx" )
* Laboratorios
SELECT labo
Index On percod Tag ilabo TO ( CurDir() + "\dat\labo.cdx" )
Return 0
Posted: Tue Dec 19, 2006 6:12 am
by Antonio Linares
Manolo,
Pudiese tratarse de una limitación de Windows Mobile. Vamos a construir un ejemplo ya a probarlo, y en caso de existir esa limitación, vamos a ver si existe forma de ampliar esa cantidad.
Por favor, no pongas el mismo mensaje tantas veces. Te hemos leido y vamos a ayudarte. Quédate tranquilo.
Posted: Tue Dec 19, 2006 8:09 am
by Carles
Hola,
La aplicacion q mas ficheros abria era 15 y me iba correctamente. He ampliado la apertura (ya por curiosidad), y me abre hasta 19 (con indices asociados) - >Curiosa la limitacion.
Tranquilo Mjcc q Antonio encontrará la solucion (recouerdo los viejos tiempos con el sethandlecount(), o algo asi).
OK
Posted: Tue Dec 19, 2006 10:27 am
by mjcc
Tengo que hacer la presentacion la semana que viene y me da una rabia estos errores chorra que no te puedes imaginar.
GRACIAS, CONFIO EN VOSOTROS
Posted: Tue Dec 19, 2006 10:47 am
by Carles
Pues este problema creo q solo te lo podra solucionar una persona. De todas maneras para salir del paso en la presentacion y tenerlos 'engañados' puedes mirar de abrir y cerrar las tablas cuando las necesites. Supongo q no tendras un proceso q necesites todas abiertas.
Vamos a ver q cuentas AL
ok
Posted: Tue Dec 19, 2006 10:55 am
by mjcc
De todas formas no os olvideis de mi a ver si podemos solucionarlo
Gracias.
Posted: Tue Dec 19, 2006 10:56 am
by tsales
¿Estas utilizando el Emulador o una PDA?. ¿Que version de SO?
Saludos
PD: Agradecería te identificaras con tu nombre.
Posted: Tue Dec 19, 2006 11:10 am
by Carles
Mjcc,
Toni tiene razon. Da error en el emulador, pero no en la Pocket. Acabo de instalar el program,a en una pocket y me va fenomenal (como siempre
), pero en cambio me da error en el emulador.
Solucionado ! -> No hay problema en Pocket !
Posted: Tue Dec 19, 2006 11:16 am
by tsales
En mi aplicación estoy utilizando hasta 25 ficheros abiertos con sus respectivos CDX y todo funciona correctamente.
Saludos
Posted: Tue Dec 19, 2006 11:19 am
by Antonio Linares
Carles,
Gracias por la información, que bien que funcione correcto en el Pocket PC real
De todas formas estamos buscando a ver si hay una forma de ampliarlo en el emulador.
Ya hemos mirado a ver si está el SetHandleCount() pero no, no está.
Posted: Tue Dec 19, 2006 11:30 am
by Antonio Linares
Buenas noticias
El error sólo se produce al trabajar en la tarjeta de memoria.
Si la aplicación se copia al directorio raiz, por ejemplo, la aplicación funciona perfectamente. Este es un ejemplo:
Code: Select all
request DBFCDX
function Main()
local n, cDbfName
for n = 1 to 25
cDbfName = CurDir() + "\_" + AllTrim( Str( n ) )
DbCreate( cDbfName, { { "first", "C", 8, 0 } } )
MsgInfo( cDbfName )
USE ( cDbfName ) VIA "DBFCDX" NEW
INDEX ON first to ( CurDir() + "\_" + AllTrim( Str( n ) ) )
next
MsgInfo( "ok" )
return nil
ok
Posted: Tue Dec 19, 2006 12:36 pm
by mjcc
A mi de da error en tanto en la pokect como en el emulador, y da igual que sea en la raiz que en el la pokect que en la tarjeta de memoria.
Posted: Tue Dec 19, 2006 2:00 pm
by Carles
Si al final del ejemplo de Antonio pones Msginfo( len(aGetWorkAreas()) ), veras como te da q estan las 25 areas abiertas. Verificado en Pocket.
Siau