Saludos!
Trabajando con datasets, e índices CDX me he encontrado con una serie de
problemas. En principio, he seguido los pasos que he visto en el foro
para crear índices CDX, y "aparentemente" los crea. Digo aparentemente,
porque aunque los índices físicos son .CDX, el RDD de la base de datos
es ¿DBFNTX?. Si intento abrir la base de datos desde Bases de
datos->Explorar DBF, me muestra el error que en la imagen adjunto.
En cambio, si la abro con el RDD DBFNTX, abre la base de datos y no da
ese error, algo que no me explico pues la cree de esta manera; adjunto
codigo.
METHOD FormInitialize( oSender ) CLASS FrmCreaBd
REQUEST DBFFPT
REQUEST DBFCDX
RddSetDefault( "DBFCDX" )
RETURN Nil
METHOD CreaGastos( oSender) CLASS FrmCreaBd
DBCreate( "Gastos.Dbf" , ;
{{"MATRICULA" , "C", 8, 0} ,;
{"CONCEPTO" , "C", 30, 0} ,;
{"FECHA" , "D", 8, 0} ,;
{"BASEIMP" , "N", 8, 2} ,;
{"IVA" , "N", 8, 0} ,;
{"TOTAL" , "N", 8, 2} ,;
{"FACTURAR" , "L", 1, 0} }, "DBFCDX" )
MSGINFO("Creación de GASTOS terminada")
USE("GASTOS.DBF") VIA "DBFCDX" EXCLUSIVE NEW
INDEX ON GASTOS->MATRICULA TAG IGastosMatricula
DBCLOSEALL()
RETURN NIL
Aqui os adjunto el evento OnCreate del dataset:
METHOD DataSetGastos( oSender ) CLASS FRMVoEdit
//Propiedades que vamos a asignar al dataset, cuando
//vaya a ser creado.
oSender:cName:="GASTOS.DBF"
oSender:oDataSource:=::oDataSource
oSender:lShared:=.F.
IF (FILE(".DATAGASTOS.CDX"))
FERASE(".DATAGASTOS.CDX") //Borro físicamente los índices.
END IF
IF (::oDataSetGastos:lOpen := .T.)
::oDatasetGastos:Pack() //Se eliminan registros borrados.
INDEX ON ::oDataSetGastos:MATRICULA TAG iGastosMat FOR !DELETED()
ELSE
MSGINFO("Error abriendo base de datos")
END IF
RETURN NIL
Justo después de crear la base de datos, si intento verla con Bases de
datos->Explorar DBF, me permite abrirla con el RDD DBFCDX ¡una vez!
pero si cierro la aplicación y la vuelvo a abrir, me da el error que en
la imagen adjunto, ¿¿¿¿y me obliga a abrirla via RDD DBFNTX???. Llevo
bastante tiempo intentando solucionar este error, pero no doy pie con
bola. ¿Que estoy haciendo mal? Gracias por adelantado.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Indices CDX y DataSets
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Indices CDX y DataSets
Angel,
Su error esté posiblemente en el uso del ALIAS de la DBF en la expresión del
índice:
> INDEX ON GASTOS->MATRICULA TAG IGastosMatricula
Cambielo por:
INDEX ON MATRICULA TAG IGastosMatricula
Y arriba del método o función escriba:
FIELD MATRICULA
Si lo prefiere también puede escribir:
INDEX ON _FIELD->MATRICULA TAG IGastosMatricula
Saludos,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:467631ad$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Saludos!
>
> Trabajando con datasets, e índices CDX me he encontrado con una serie de
> problemas. En principio, he seguido los pasos que he visto en el foro para
> crear índices CDX, y "aparentemente" los crea. Digo aparentemente, porque
> aunque los índices físicos son .CDX, el RDD de la base de datos es
> ¿DBFNTX?. Si intento abrir la base de datos desde Bases de datos->Explorar
> DBF, me muestra el error que en la imagen adjunto.
>
> En cambio, si la abro con el RDD DBFNTX, abre la base de datos y no da ese
> error, algo que no me explico pues la cree de esta manera; adjunto codigo.
>
> METHOD FormInitialize( oSender ) CLASS FrmCreaBd
> REQUEST DBFFPT
> REQUEST DBFCDX
> RddSetDefault( "DBFCDX" )
> RETURN Nil
>
>
> METHOD CreaGastos( oSender) CLASS FrmCreaBd
>
> DBCreate( "Gastos.Dbf" , ;
> {{"MATRICULA" , "C", 8, 0} ,;
> {"CONCEPTO" , "C", 30, 0} ,;
> {"FECHA" , "D", 8, 0} ,;
> {"BASEIMP" , "N", 8, 2} ,;
> {"IVA" , "N", 8, 0} ,;
> {"TOTAL" , "N", 8, 2} ,;
> {"FACTURAR" , "L", 1, 0} }, "DBFCDX" )
>
> MSGINFO("Creación de GASTOS terminada")
> USE("GASTOS.DBF") VIA "DBFCDX" EXCLUSIVE NEW
> INDEX ON GASTOS->MATRICULA TAG IGastosMatricula
> DBCLOSEALL()
>
> RETURN NIL
>
>
> Aqui os adjunto el evento OnCreate del dataset:
>
> METHOD DataSetGastos( oSender ) CLASS FRMVoEdit
> //Propiedades que vamos a asignar al dataset, cuando
> //vaya a ser creado.
>
> oSender:cName:="GASTOS.DBF"
> oSender:oDataSource:=::oDataSource
> oSender:lShared:=.F.
>
> IF (FILE(".DATAGASTOS.CDX"))
> FERASE(".DATAGASTOS.CDX") //Borro físicamente los índices.
> END IF
>
> IF (::oDataSetGastos:lOpen := .T.)
> ::oDatasetGastos:Pack() //Se eliminan registros borrados.
> INDEX ON ::oDataSetGastos:MATRICULA TAG iGastosMat FOR !DELETED()
> ELSE
> MSGINFO("Error abriendo base de datos")
> END IF
> RETURN NIL
>
>
> Justo después de crear la base de datos, si intento verla con Bases de
> datos->Explorar DBF, me permite abrirla con el RDD DBFCDX ¡una vez!
> pero si cierro la aplicación y la vuelvo a abrir, me da el error que en la
> imagen adjunto, ¿¿¿¿y me obliga a abrirla via RDD DBFNTX???. Llevo
> bastante tiempo intentando solucionar este error, pero no doy pie con
> bola. ¿Que estoy haciendo mal? Gracias por adelantado.
Su error esté posiblemente en el uso del ALIAS de la DBF en la expresión del
índice:
> INDEX ON GASTOS->MATRICULA TAG IGastosMatricula
Cambielo por:
INDEX ON MATRICULA TAG IGastosMatricula
Y arriba del método o función escriba:
FIELD MATRICULA
Si lo prefiere también puede escribir:
INDEX ON _FIELD->MATRICULA TAG IGastosMatricula
Saludos,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:467631ad$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Saludos!
>
> Trabajando con datasets, e índices CDX me he encontrado con una serie de
> problemas. En principio, he seguido los pasos que he visto en el foro para
> crear índices CDX, y "aparentemente" los crea. Digo aparentemente, porque
> aunque los índices físicos son .CDX, el RDD de la base de datos es
> ¿DBFNTX?. Si intento abrir la base de datos desde Bases de datos->Explorar
> DBF, me muestra el error que en la imagen adjunto.
>
> En cambio, si la abro con el RDD DBFNTX, abre la base de datos y no da ese
> error, algo que no me explico pues la cree de esta manera; adjunto codigo.
>
> METHOD FormInitialize( oSender ) CLASS FrmCreaBd
> REQUEST DBFFPT
> REQUEST DBFCDX
> RddSetDefault( "DBFCDX" )
> RETURN Nil
>
>
> METHOD CreaGastos( oSender) CLASS FrmCreaBd
>
> DBCreate( "Gastos.Dbf" , ;
> {{"MATRICULA" , "C", 8, 0} ,;
> {"CONCEPTO" , "C", 30, 0} ,;
> {"FECHA" , "D", 8, 0} ,;
> {"BASEIMP" , "N", 8, 2} ,;
> {"IVA" , "N", 8, 0} ,;
> {"TOTAL" , "N", 8, 2} ,;
> {"FACTURAR" , "L", 1, 0} }, "DBFCDX" )
>
> MSGINFO("Creación de GASTOS terminada")
> USE("GASTOS.DBF") VIA "DBFCDX" EXCLUSIVE NEW
> INDEX ON GASTOS->MATRICULA TAG IGastosMatricula
> DBCLOSEALL()
>
> RETURN NIL
>
>
> Aqui os adjunto el evento OnCreate del dataset:
>
> METHOD DataSetGastos( oSender ) CLASS FRMVoEdit
> //Propiedades que vamos a asignar al dataset, cuando
> //vaya a ser creado.
>
> oSender:cName:="GASTOS.DBF"
> oSender:oDataSource:=::oDataSource
> oSender:lShared:=.F.
>
> IF (FILE(".DATAGASTOS.CDX"))
> FERASE(".DATAGASTOS.CDX") //Borro físicamente los índices.
> END IF
>
> IF (::oDataSetGastos:lOpen := .T.)
> ::oDatasetGastos:Pack() //Se eliminan registros borrados.
> INDEX ON ::oDataSetGastos:MATRICULA TAG iGastosMat FOR !DELETED()
> ELSE
> MSGINFO("Error abriendo base de datos")
> END IF
> RETURN NIL
>
>
> Justo después de crear la base de datos, si intento verla con Bases de
> datos->Explorar DBF, me permite abrirla con el RDD DBFCDX ¡una vez!
> pero si cierro la aplicación y la vuelvo a abrir, me da el error que en la
> imagen adjunto, ¿¿¿¿y me obliga a abrirla via RDD DBFNTX???. Llevo
> bastante tiempo intentando solucionar este error, pero no doy pie con
> bola. ¿Que estoy haciendo mal? Gracias por adelantado.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com