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.

MemDataSet Error: re-abrir un dataset

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

MemDataSet Error: re-abrir un dataset

Mensaje 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)Â
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9458
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

MemDataSet Error: re-abrir un dataset

Mensaje 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)
>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9458
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

MemDataSet Error: re-abrir un dataset

Mensaje 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)
>>
>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Rolando
Mensajes: 191
Registrado: Lun May 08, 2006 2:10 pm

MemDataSet Error: re-abrir un dataset

Mensaje 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)
>
>
>
>
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

MemDataSet Error: re-abrir un dataset

Mensaje 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
Rolando
Mensajes: 191
Registrado: Lun May 08, 2006 2:10 pm

MemDataSet Error: re-abrir un dataset

Mensaje 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)
>>
>>
>>
>>
>
>
Responder