Página 1 de 1

Error en DataSet

Publicado: Lun May 09, 2005 9:49 am
por X-Soft
Hola a todos:
Tengo un pequeño problema con los DataSets.
En la pantalla tengo 3 DataSets (oDataset, oDataSetP y oDatasetT), e intento
que cuando se seleccione un registro en oDataset se filtren los otros dos
por el campo C_Codigo, que existe en los tres, y así lo hace pero me da un
error nada más hacerlo por el segundo filtro.
Consideraciones:
El campo C_CODIGO es tipo caracter en oDataset y oDatasetT, y numérico
en oDataSetP y curiosamente el error lo da al tratar con el numérico, no así
con el caracter. :-o
Ramón Torreblanca, Murcia
METHOD BrwChange( oSender, lBookMarkChanged ) CLASS FrmFicha
PRIVATE cCODIGO, cFiltros
cCODIGO := alltrim(::oDataset:C_Codigo) //valor del campo seleccionado
::oDatasetP:Clearfilter()
::oDatasetP:Filter( "C_CODIGO == " + cCODIGO, .T.)
::oDatasetP:Refresh()
cFiltros := "C_CODIGO == " + val(::oDataset:C_Codigo) // Linea 414
::oDatasetT:Clearfilter()
::oDatasetT:Filter( cFiltros, .T.)
::oDatasetT:Refresh()
RETURN Nil
***************************** Registro de errores
*****************************
Fecha: 09-05-05
Hora: 09:37:50
Memoria libre: 246424
Area actual: 3
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 0.99.9 Pre-release 3 (April 2005)
Compilador: xHarbour build 0.99.3 Intl. (SimpLex) PCode Version: 5
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Professional 5.01.2600 Service Pack 2
----------------------- Información detallada del
error -----------------------
Subsistema: BASE
Código de error: 1081
Estado: .F.
Descripción: Argument error
Operación: +
Argumentos: [ 1] = Tipo: C Valor: C_CODIGO == [ 2] = Tipo: N Valor:
1002
Fichero:
Código error SO: 0
Pila de llamadas:
FRMFICHA:BRWCHANGE (414)
TDBBROWSE:ONCHANGE (0)
TDBBROWSE:DSNAVIGATE (556)
TDBFDATASET:UPDATECONTROLS (308)
TDBFDATASET:NSKIP (422)
(b)TDBBROWSE:_ODATASET (148)
TDBBROWSE:ONSKIP (0)
TBROWSE:WMLBUTTONDOWN (1808)
(b)XDBBROWSE (67)
TDBBROWSE:WMLBUTTONDOWN (0)
RUNFORM (0)
TAPPLICATION:RUN (156)
MAIN (22)
------------------ Información detallada de áreas de
trabajo ------------------
Area: 1
Alias: CLIENTES
Registro: 74
Filtro:
Relación:
Orden del índice: 1
Clave activa: 1
Area: 2
Alias: TECNICOS
Registro: 156
Filtro:
Relación:
Orden del índice: 0
Clave activa: 0
Area: 3
Alias: PAGOS
Registro: 45
Filtro: C_CODIGO == 1002
Relación:
Orden del índice: 0
Clave activa: 0

Error en DataSet

Publicado: Lun May 09, 2005 10:08 am
por ignacio
Ramón,
Si observas con detalle el achivo LOG te darás cuenta de que estás
intentando sumar una cadena con un número,
> Descripción: Argument error
> Operación: +
> Argumentos: [ 1] = Tipo: C Valor: C_CODIGO == [ 2] = Tipo: N Valor:
> 1002
Y concretamente AQUI:
cFiltros := "C_CODIGO == " + val(::oDataset:C_Codigo) // Linea 414
Piensalo, NUNCA, puede funcionar este código en ninguna versión de xBase que
yo conozca.
Cuando el campo es numérico el filtro sería de esta forma:
cFiltro := "C_CODIGO == " + C_Codigo)
Cuando el campo es tipo carácter el filtro sería de esta otra forma:
cFiltro := "C_CODIGO == [" + C_Codigo + "]" )
Nota: Puedes sustituir los [] por comillas simples si lo deseas.
Un saludo,
"Ramt Soft" <la_pirata@hotmail.com> escribió en el mensaje
news:427f15f7$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola a todos:
>
> Tengo un pequeño problema con los DataSets.
>
> En la pantalla tengo 3 DataSets (oDataset, oDataSetP y oDatasetT), e
> intento que cuando se seleccione un registro en oDataset se filtren los
> otros dos por el campo C_Codigo, que existe en los tres, y así lo hace
> pero me da un error nada más hacerlo por el segundo filtro.
>
> Consideraciones:
>
> El campo C_CODIGO es tipo caracter en oDataset y oDatasetT, y numérico
> en oDataSetP y curiosamente el error lo da al tratar con el numérico, no
> así con el caracter. :-o
>
> Ramón Torreblanca, Murcia
>
>
> METHOD BrwChange( oSender, lBookMarkChanged ) CLASS FrmFicha
> PRIVATE cCODIGO, cFiltros
>
> cCODIGO := alltrim(::oDataset:C_Codigo) //valor del campo seleccionado
> ::oDatasetP:Clearfilter()
> ::oDatasetP:Filter( "C_CODIGO == " + cCODIGO, .T.)
> ::oDatasetP:Refresh()
>
> cFiltros := "C_CODIGO == " + val(::oDataset:C_Codigo) // Linea 414
> ::oDatasetT:Clearfilter()
> ::oDatasetT:Filter( cFiltros, .T.)
> ::oDatasetT:Refresh()
>
> RETURN Nil
>
> ***************************** Registro de errores
> *****************************
>
> Fecha: 09-05-05
> Hora: 09:37:50
> Memoria libre: 246424
> Area actual: 3
>
> ------------------------- Información del
> compilador --------------------------
>
> Versión Xailer: Xailer 0.99.9 Pre-release 3 (April 2005)
> Compilador: xHarbour build 0.99.3 Intl. (SimpLex) PCode Version: 5
> Compilador C/C++: Borland C++ 5.5.1
> Plataforma: Windows XP Professional 5.01.2600 Service Pack 2
>
> ----------------------- Información detallada del
> error -----------------------
>
> Subsistema: BASE
> Código de error: 1081
> Estado: .F.
> Descripción: Argument error
> Operación: +
> Argumentos: [ 1] = Tipo: C Valor: C_CODIGO == [ 2] = Tipo: N Valor:
> 1002
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> FRMFICHA:BRWCHANGE (414)
> TDBBROWSE:ONCHANGE (0)
> TDBBROWSE:DSNAVIGATE (556)
> TDBFDATASET:UPDATECONTROLS (308)
> TDBFDATASET:NSKIP (422)
> (b)TDBBROWSE:_ODATASET (148)
> TDBBROWSE:ONSKIP (0)
> TBROWSE:WMLBUTTONDOWN (1808)
> (b)XDBBROWSE (67)
> TDBBROWSE:WMLBUTTONDOWN (0)
> RUNFORM (0)
> TAPPLICATION:RUN (156)
> MAIN (22)
>
> ------------------ Información detallada de áreas de
> trabajo ------------------
>
> Area: 1
> Alias: CLIENTES
> Registro: 74
> Filtro:
> Relación:
> Orden del índice: 1
> Clave activa: 1
>
> Area: 2
> Alias: TECNICOS
> Registro: 156
> Filtro:
> Relación:
> Orden del índice: 0
> Clave activa: 0
>
> Area: 3
> Alias: PAGOS
> Registro: 45
> Filtro: C_CODIGO == 1002
> Relación:
> Orden del índice: 0
> Clave activa: 0
>
>

Error en DataSet

Publicado: Lun May 09, 2005 10:24 am
por X-Soft
Muchisimas gracias. Funciona a la perfección:
Siento tener estos errores de bulto, pero hace muchos años que no programaba
con Clipper ya que lo di por "desaparecido" y me fugué a VB. :-o
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:427f1a98$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Ramón,
>
> Si observas con detalle el achivo LOG te darás cuenta de que estás
> intentando sumar una cadena con un número,
>
>> Descripción: Argument error
>> Operación: +
>> Argumentos: [ 1] = Tipo: C Valor: C_CODIGO == [ 2] = Tipo: N
>> Valor: 1002
>
> Y concretamente AQUI:
>
> cFiltros := "C_CODIGO == " + val(::oDataset:C_Codigo) // Linea 414
>
> Piensalo, NUNCA, puede funcionar este código en ninguna versión de xBase
> que yo conozca.
>
> Cuando el campo es numérico el filtro sería de esta forma:
>
> cFiltro := "C_CODIGO == " + C_Codigo)
>
> Cuando el campo es tipo carácter el filtro sería de esta otra forma:
>
> cFiltro := "C_CODIGO == [" + C_Codigo + "]" )
>
> Nota: Puedes sustituir los [] por comillas simples si lo deseas.
>
> Un saludo,
>
> "Ramt Soft" <la_pirata@hotmail.com> escribió en el mensaje
> news:427f15f7$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Hola a todos:
>>
>> Tengo un pequeño problema con los DataSets.
>>
>> En la pantalla tengo 3 DataSets (oDataset, oDataSetP y oDatasetT), e
>> intento que cuando se seleccione un registro en oDataset se filtren los
>> otros dos por el campo C_Codigo, que existe en los tres, y así lo hace
>> pero me da un error nada más hacerlo por el segundo filtro.
>>
>> Consideraciones:
>>
>> El campo C_CODIGO es tipo caracter en oDataset y oDatasetT, y numérico
>> en oDataSetP y curiosamente el error lo da al tratar con el numérico, no
>> así con el caracter. :-o
>>
>> Ramón Torreblanca, Murcia
>>
>>
>> METHOD BrwChange( oSender, lBookMarkChanged ) CLASS FrmFicha
>> PRIVATE cCODIGO, cFiltros
>>
>> cCODIGO := alltrim(::oDataset:C_Codigo) //valor del campo seleccionado
>> ::oDatasetP:Clearfilter()
>> ::oDatasetP:Filter( "C_CODIGO == " + cCODIGO, .T.)
>> ::oDatasetP:Refresh()
>>
>> cFiltros := "C_CODIGO == " + val(::oDataset:C_Codigo) // Linea 414
>> ::oDatasetT:Clearfilter()
>> ::oDatasetT:Filter( cFiltros, .T.)
>> ::oDatasetT:Refresh()
>>
>> RETURN Nil
>>
>> ***************************** Registro de errores
>> *****************************
>>
>> Fecha: 09-05-05
>> Hora: 09:37:50
>> Memoria libre: 246424
>> Area actual: 3
>>
>> ------------------------- Información del
>> compilador --------------------------
>>
>> Versión Xailer: Xailer 0.99.9 Pre-release 3 (April 2005)
>> Compilador: xHarbour build 0.99.3 Intl. (SimpLex) PCode Version: 5
>> Compilador C/C++: Borland C++ 5.5.1
>> Plataforma: Windows XP Professional 5.01.2600 Service Pack 2
>>
>> ----------------------- Información detallada del
>> error -----------------------
>>
>> Subsistema: BASE
>> Código de error: 1081
>> Estado: .F.
>> Descripción: Argument error
>> Operación: +
>> Argumentos: [ 1] = Tipo: C Valor: C_CODIGO == [ 2] = Tipo: N
>> Valor: 1002
>> Fichero:
>> Código error SO: 0
>>
>> Pila de llamadas:
>> FRMFICHA:BRWCHANGE (414)
>> TDBBROWSE:ONCHANGE (0)
>> TDBBROWSE:DSNAVIGATE (556)
>> TDBFDATASET:UPDATECONTROLS (308)
>> TDBFDATASET:NSKIP (422)
>> (b)TDBBROWSE:_ODATASET (148)
>> TDBBROWSE:ONSKIP (0)
>> TBROWSE:WMLBUTTONDOWN (1808)
>> (b)XDBBROWSE (67)
>> TDBBROWSE:WMLBUTTONDOWN (0)
>> RUNFORM (0)
>> TAPPLICATION:RUN (156)
>> MAIN (22)
>>
>> ------------------ Información detallada de áreas de
>> trabajo ------------------
>>
>> Area: 1
>> Alias: CLIENTES
>> Registro: 74
>> Filtro:
>> Relación:
>> Orden del índice: 1
>> Clave activa: 1
>>
>> Area: 2
>> Alias: TECNICOS
>> Registro: 156
>> Filtro:
>> Relación:
>> Orden del índice: 0
>> Clave activa: 0
>>
>> Area: 3
>> Alias: PAGOS
>> Registro: 45
>> Filtro: C_CODIGO == 1002
>> Relación:
>> Orden del índice: 0
>> Clave activa: 0
>>
>>
>
>