Página 1 de 1

MemDataSet Error: re-abrir un dataset

Publicado: Jue Jul 05, 2007 11:14 am
por jose.luis
Hola,
Un MemDataset ya abierto lo cierro y lo vuelvo a abrir pero con otra
estructura distinta . Algo así:
oMemDataSet:Close()
oMemDataSet:Open({{0}},{"A"})
En el momento del open da el error que muestro más abajo. El caso es que no
se que estoy haciendo mal.
Saludos y gracias por la ayuda. Dejo un ejemplo.
José Luis Capel
***************************** Registro de errores
*****************************
Fecha: 07/05/07
Hora: 11:11:22
Memoria libre: 555652
Area actual: 1
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 1.4.0 Version 1.4
Compilador: xHarbour build 0.99.70 Intl. (SimpLex) PCode Version: 7
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: 1132
Estado: .F.
Descripción: Bound error
Operación: array access
Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 2
Fichero:
Código error SO: 0
Pila de llamadas:
TMEMDATASET:FIELDGET (929)
TDATAFIELD:VALUE (84)
TDATAFIELD:LOAD (150)
(b)TMEMDATASET:LOAD (1092)
AEVAL (0)
TDATASET:LOAD (1092)
TMEMDATASET:LOAD (595)
TMEMDATASET:OPEN (209)
TFORM3:BUTTON4CLICK (51)
TBUTTON:ONCLICK (0)
TBUTTON:CLICK (99)
(b)XCONTROL:XCONTROL (140)
TBUTTON:COMMAND (0)
TSCROLLINGWINCONTROL:WMCOMMAND (253)
TFORM3:WMCOMMAND (884)
RUNFORM (0)
TAPPLICATION:RUN (209)
MAIN (18)


Attached files aaaa.zip (4.8 KB)Â

MemDataSet Error: re-abrir un dataset

Publicado: Jue Jul 05, 2007 12:26 pm
por ignacio
José Luis,
Si la estructura es distinta deberás crear un Dataset nuevo.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Luis Capel - Aicom" <jose.luis@iaicom.com> escribió en el mensaje
news:468cb604$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Un MemDataset ya abierto lo cierro y lo vuelvo a abrir pero con otra
> estructura distinta . Algo así:
>
> oMemDataSet:Close()
> oMemDataSet:Open({{0}},{"A"})
>
> En el momento del open da el error que muestro más abajo. El caso es que
> no se que estoy haciendo mal.
>
> Saludos y gracias por la ayuda. Dejo un ejemplo.
> José Luis Capel
>
>
>
>
>
>
> ***************************** Registro de errores
> *****************************
>
> Fecha: 07/05/07
> Hora: 11:11:22
> Memoria libre: 555652
> Area actual: 1
>
> ------------------------- Información del
> compilador --------------------------
>
> Versión Xailer: Xailer 1.4.0 Version 1.4
> Compilador: xHarbour build 0.99.70 Intl. (SimpLex) PCode Version: 7
> 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: 1132
> Estado: .F.
> Descripción: Bound error
> Operación: array access
> Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 2
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> TMEMDATASET:FIELDGET (929)
> TDATAFIELD:VALUE (84)
> TDATAFIELD:LOAD (150)
> (b)TMEMDATASET:LOAD (1092)
> AEVAL (0)
> TDATASET:LOAD (1092)
> TMEMDATASET:LOAD (595)
> TMEMDATASET:OPEN (209)
> TFORM3:BUTTON4CLICK (51)
> TBUTTON:ONCLICK (0)
> TBUTTON:CLICK (99)
> (b)XCONTROL:XCONTROL (140)
> TBUTTON:COMMAND (0)
> TSCROLLINGWINCONTROL:WMCOMMAND (253)
> TFORM3:WMCOMMAND (884)
> RUNFORM (0)
> TAPPLICATION:RUN (209)
> MAIN (18)
>
>
>
>

MemDataSet Error: re-abrir un dataset

Publicado: Jue Jul 05, 2007 12:46 pm
por ignacio
José Luis,
La funcionalidad de poder cambiar la estructura interna de un TDataset sólo
estaba prevista en TSQLTable y TSQLQuery, debido a que cada instrucción
SELECT que se le daba al dataset puede traer distintas columnas, distinto
orden, etc. En la clase TMemDataset y TDbfDataset esa funcioalidad no existe
y se asume que la estructura del mismo no cambia en sucesivos Open() ya que
sino supondría un trabajo innecesario de creación de TDataFields y demás
cosas.
En cualquier caso, se ha modificado la clase TMemDataset para que
reconstruya desde cero su estructura interna cada vez que se hace un Close()
de la misma y estará disponible en la próxima versión de Xailer. Pero has de
tener en cuenta que si tienes un DBBrowse apuntando a dicho Dataset,
necesariamente deberás hacer un RESET del mismo y añadir las columnas
manualmente, o al menos tener la certeza que los nombres de los campos que
utiliza el Browse no han cambiado en cualquier operación de Open() que hagas
(en tu ejemplo no era así).
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:468cc73d$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> José Luis,
>
> Si la estructura es distinta deberás crear un Dataset nuevo.
>
> Un saludo,
>
> --
> Ignacio Ortiz de Zúñiga
> http://www.xailer.com
>
>
> "José Luis Capel - Aicom" <jose.luis@iaicom.com> escribió en el mensaje
> news:468cb604$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Hola,
>>
>> Un MemDataset ya abierto lo cierro y lo vuelvo a abrir pero con otra
>> estructura distinta . Algo así:
>>
>> oMemDataSet:Close()
>> oMemDataSet:Open({{0}},{"A"})
>>
>> En el momento del open da el error que muestro más abajo. El caso es que
>> no se que estoy haciendo mal.
>>
>> Saludos y gracias por la ayuda. Dejo un ejemplo.
>> José Luis Capel
>>
>>
>>
>>
>>
>>
>> ***************************** Registro de errores
>> *****************************
>>
>> Fecha: 07/05/07
>> Hora: 11:11:22
>> Memoria libre: 555652
>> Area actual: 1
>>
>> ------------------------- Información del
>> compilador --------------------------
>>
>> Versión Xailer: Xailer 1.4.0 Version 1.4
>> Compilador: xHarbour build 0.99.70 Intl. (SimpLex) PCode Version: 7
>> 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: 1132
>> Estado: .F.
>> Descripción: Bound error
>> Operación: array access
>> Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 2
>> Fichero:
>> Código error SO: 0
>>
>> Pila de llamadas:
>> TMEMDATASET:FIELDGET (929)
>> TDATAFIELD:VALUE (84)
>> TDATAFIELD:LOAD (150)
>> (b)TMEMDATASET:LOAD (1092)
>> AEVAL (0)
>> TDATASET:LOAD (1092)
>> TMEMDATASET:LOAD (595)
>> TMEMDATASET:OPEN (209)
>> TFORM3:BUTTON4CLICK (51)
>> TBUTTON:ONCLICK (0)
>> TBUTTON:CLICK (99)
>> (b)XCONTROL:XCONTROL (140)
>> TBUTTON:COMMAND (0)
>> TSCROLLINGWINCONTROL:WMCOMMAND (253)
>> TFORM3:WMCOMMAND (884)
>> RUNFORM (0)
>> TAPPLICATION:RUN (209)
>> MAIN (18)
>>
>>
>>
>>
>
>

MemDataSet Error: re-abrir un dataset

Publicado: Jue Jul 05, 2007 3:27 pm
por Rolando
José Luis
oMemDataSet:Close()
oMemDataSet:Open({{0}},{"A"}}) //Por lo pronto aqui faltaba la llave de
cierre.
Saludos.
"José Luis Capel - Aicom" <jose.luis@iaicom.com> escribió en el mensaje
news:468cb604$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Un MemDataset ya abierto lo cierro y lo vuelvo a abrir pero con otra
> estructura distinta . Algo así:
>
> oMemDataSet:Close()
> oMemDataSet:Open({{0}},{"A"})
>
> En el momento del open da el error que muestro más abajo. El caso es que
> no se que estoy haciendo mal.
>
> Saludos y gracias por la ayuda. Dejo un ejemplo.
> José Luis Capel
>
>
>
>
>
>
> ***************************** Registro de errores
> *****************************
>
> Fecha: 07/05/07
> Hora: 11:11:22
> Memoria libre: 555652
> Area actual: 1
>
> ------------------------- Información del
> compilador --------------------------
>
> Versión Xailer: Xailer 1.4.0 Version 1.4
> Compilador: xHarbour build 0.99.70 Intl. (SimpLex) PCode Version: 7
> 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: 1132
> Estado: .F.
> Descripción: Bound error
> Operación: array access
> Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 2
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> TMEMDATASET:FIELDGET (929)
> TDATAFIELD:VALUE (84)
> TDATAFIELD:LOAD (150)
> (b)TMEMDATASET:LOAD (1092)
> AEVAL (0)
> TDATASET:LOAD (1092)
> TMEMDATASET:LOAD (595)
> TMEMDATASET:OPEN (209)
> TFORM3:BUTTON4CLICK (51)
> TBUTTON:ONCLICK (0)
> TBUTTON:CLICK (99)
> (b)XCONTROL:XCONTROL (140)
> TBUTTON:COMMAND (0)
> TSCROLLINGWINCONTROL:WMCOMMAND (253)
> TFORM3:WMCOMMAND (884)
> RUNFORM (0)
> TAPPLICATION:RUN (209)
> MAIN (18)
>
>
>
>

MemDataSet Error: re-abrir un dataset

Publicado: Jue Jul 05, 2007 4:01 pm
por jose.luis
Ignacio,
> En cualquier caso, se ha modificado la clase TMemDataset para que
> reconstruya desde cero su estructura interna cada vez que se hace un
> Close() de la misma y estará disponible en la próxima versión de Xailer.
> Pero has de tener en cuenta que si tienes un DBBrowse apuntando a dicho
> Dataset, necesariamente deberás hacer un RESET del mismo y añadir las
> columnas manualmente, o al menos tener la certeza que los nombres de los
> campos que utiliza el Browse no han cambiado en cualquier operación de
> Open() que hagas (en tu ejemplo no era así).
>
Gracias.
Saludos,
José Luis Capel

MemDataSet Error: re-abrir un dataset

Publicado: Jue Jul 05, 2007 4:10 pm
por Rolando
José Luis
oMemDataSet:Close()
oMemDataSet:Open({{0},{"A"}}) //Por lo pronto aqui faltaba la llave de
cierre y sobraba la segunda llave despues del cero.
Saludos.
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=468cf1b7@ozsrv2.ozlan.local...]468cf1b7@ozsrv2.ozlan.local...[/email]
> José Luis
>
> oMemDataSet:Close()
> oMemDataSet:Open({{0}},{"A"}}) //Por lo pronto aqui faltaba la llave de
> cierre.
> Saludos.
>
> "José Luis Capel - Aicom" <jose.luis@iaicom.com> escribió en el mensaje
> news:468cb604$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Hola,
>>
>> Un MemDataset ya abierto lo cierro y lo vuelvo a abrir pero con otra
>> estructura distinta . Algo así:
>>
>> oMemDataSet:Close()
>> oMemDataSet:Open({{0}},{"A"})
>>
>> En el momento del open da el error que muestro más abajo. El caso es que
>> no se que estoy haciendo mal.
>>
>> Saludos y gracias por la ayuda. Dejo un ejemplo.
>> José Luis Capel
>>
>>
>>
>>
>>
>>
>> ***************************** Registro de errores
>> *****************************
>>
>> Fecha: 07/05/07
>> Hora: 11:11:22
>> Memoria libre: 555652
>> Area actual: 1
>>
>> ------------------------- Información del
>> compilador --------------------------
>>
>> Versión Xailer: Xailer 1.4.0 Version 1.4
>> Compilador: xHarbour build 0.99.70 Intl. (SimpLex) PCode Version: 7
>> 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: 1132
>> Estado: .F.
>> Descripción: Bound error
>> Operación: array access
>> Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 2
>> Fichero:
>> Código error SO: 0
>>
>> Pila de llamadas:
>> TMEMDATASET:FIELDGET (929)
>> TDATAFIELD:VALUE (84)
>> TDATAFIELD:LOAD (150)
>> (b)TMEMDATASET:LOAD (1092)
>> AEVAL (0)
>> TDATASET:LOAD (1092)
>> TMEMDATASET:LOAD (595)
>> TMEMDATASET:OPEN (209)
>> TFORM3:BUTTON4CLICK (51)
>> TBUTTON:ONCLICK (0)
>> TBUTTON:CLICK (99)
>> (b)XCONTROL:XCONTROL (140)
>> TBUTTON:COMMAND (0)
>> TSCROLLINGWINCONTROL:WMCOMMAND (253)
>> TFORM3:WMCOMMAND (884)
>> RUNFORM (0)
>> TAPPLICATION:RUN (209)
>> MAIN (18)
>>
>>
>>
>>
>
>