Hola,
Estoy intentando guardar un campo en una tabla que lleva el control de mis
contadores o folios, pero al cerrar la tabla me marca error y si no la
cierro no afecta el campo.
La base es MS SQL.
Public oSQLTControl
WITH OBJECT oSQLTControl := TSQLTable():New()
:oDataSource := oDSource
:cProcess := "GENERAL"
:cTableName := "CONTROL"
:Create()
:nLockType := adLockOptimistic
:Open()
oSQLTControl:ConPed := "0000001"
:Close() -- Linea 43
END
El error que me marca es:
Xailer DataControls error
ADOB:RecordSet:Close('CONTROL') [#0]
En porcedimiento: TFORM1 linea: 43
Saludos,
Mario A. Dávalos
México, D.F.
Control
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.
Cerrar Tabla de ADO.
-
- Mensajes: 190
- Registrado: Mar Ago 19, 2008 12:38 am
Cerrar Tabla de ADO.
Mario,
Probablemente el error sea consecuencia de que has modificado un valor sin
grabar los cambios.
Normalmente después de cada cambio en los campos de un registro deberías
hacer un 'Update' para que esos cambios tomen efecto. Además, viendo que
abres la tabla de modo optimista, deberías comprobar si el valor devuelto
por 'Update' es .T. o .F. dado que puede o no haberse actualizado los
cambios.
Saludos,
José lUis Capel
"MARIO DAVALOS" <mariodava@hotmail.com> escribió en el mensaje
news:48a9f9df$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Estoy intentando guardar un campo en una tabla que lleva el control de mis
> contadores o folios, pero al cerrar la tabla me marca error y si no la
> cierro no afecta el campo.
>
> La base es MS SQL.
>
> Public oSQLTControl
>
> WITH OBJECT oSQLTControl := TSQLTable():New()
>
> :oDataSource := oDSource
> :cProcess := "GENERAL"
> :cTableName := "CONTROL"
> :Create()
>
> :nLockType := adLockOptimistic
> :Open()
> oSQLTControl:ConPed := "0000001"
> :Close() -- Linea 43
>
> END
>
> El error que me marca es:
>
> Xailer DataControls error
>
> ADOB:RecordSet:Close('CONTROL') [#0]
> En porcedimiento: TFORM1 linea: 43
>
> Saludos,
> Mario A. Dávalos
> México, D.F.
>
> Control
>
>
>
>
>
Probablemente el error sea consecuencia de que has modificado un valor sin
grabar los cambios.
Normalmente después de cada cambio en los campos de un registro deberías
hacer un 'Update' para que esos cambios tomen efecto. Además, viendo que
abres la tabla de modo optimista, deberías comprobar si el valor devuelto
por 'Update' es .T. o .F. dado que puede o no haberse actualizado los
cambios.
Saludos,
José lUis Capel
"MARIO DAVALOS" <mariodava@hotmail.com> escribió en el mensaje
news:48a9f9df$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Estoy intentando guardar un campo en una tabla que lleva el control de mis
> contadores o folios, pero al cerrar la tabla me marca error y si no la
> cierro no afecta el campo.
>
> La base es MS SQL.
>
> Public oSQLTControl
>
> WITH OBJECT oSQLTControl := TSQLTable():New()
>
> :oDataSource := oDSource
> :cProcess := "GENERAL"
> :cTableName := "CONTROL"
> :Create()
>
> :nLockType := adLockOptimistic
> :Open()
> oSQLTControl:ConPed := "0000001"
> :Close() -- Linea 43
>
> END
>
> El error que me marca es:
>
> Xailer DataControls error
>
> ADOB:RecordSet:Close('CONTROL') [#0]
> En porcedimiento: TFORM1 linea: 43
>
> Saludos,
> Mario A. Dávalos
> México, D.F.
>
> Control
>
>
>
>
>
-
- Mensajes: 190
- Registrado: Mar Ago 19, 2008 12:38 am
Cerrar Tabla de ADO.
Luis,
Agregue el UpDate() y no logro que este me devuelva .t., ya intente abriendo
el dataset en modo pesimista y tampoco, intento hacer un Edit() antes de la
asiganción del valor para crear el bloqueo y tampoco me funciona.
Al parecer el problema es que se esta abriendo el DataSet en modo de solo
lectura, como configuro el DataSet para poderlo editar?, la tabla es de MS
SQL.
Saludos,
"José Luis Capel -" <jose.luis@capelsoft.com> escribió en el mensaje de
noticias news:48aa84f9$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Mario,
>
> Probablemente el error sea consecuencia de que has modificado un valor sin
> grabar los cambios.
>
> Normalmente después de cada cambio en los campos de un registro deberías
> hacer un 'Update' para que esos cambios tomen efecto. Además, viendo que
> abres la tabla de modo optimista, deberías comprobar si el valor devuelto
> por 'Update' es .T. o .F. dado que puede o no haberse actualizado los
> cambios.
>
> Saludos,
> José lUis Capel
>
>
> "MARIO DAVALOS" <mariodava@hotmail.com> escribió en el mensaje
> news:48a9f9df$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Hola,
>>
>> Estoy intentando guardar un campo en una tabla que lleva el control de
>> mis contadores o folios, pero al cerrar la tabla me marca error y si no
>> la cierro no afecta el campo.
>>
>> La base es MS SQL.
>>
>> Public oSQLTControl
>>
>> WITH OBJECT oSQLTControl := TSQLTable():New()
>>
>> :oDataSource := oDSource
>> :cProcess := "GENERAL"
>> :cTableName := "CONTROL"
>> :Create()
>>
>> :nLockType := adLockOptimistic
>> :Open()
>> oSQLTControl:ConPed := "0000001"
>> :Close() -- Linea 43
>>
>> END
>>
>> El error que me marca es:
>>
>> Xailer DataControls error
>>
>> ADOB:RecordSet:Close('CONTROL') [#0]
>> En porcedimiento: TFORM1 linea: 43
>>
>> Saludos,
>> Mario A. Dávalos
>> México, D.F.
>>
>> Control
>>
>>
>>
>>
>>
>
>
Agregue el UpDate() y no logro que este me devuelva .t., ya intente abriendo
el dataset en modo pesimista y tampoco, intento hacer un Edit() antes de la
asiganción del valor para crear el bloqueo y tampoco me funciona.
Al parecer el problema es que se esta abriendo el DataSet en modo de solo
lectura, como configuro el DataSet para poderlo editar?, la tabla es de MS
SQL.
Saludos,
"José Luis Capel -" <jose.luis@capelsoft.com> escribió en el mensaje de
noticias news:48aa84f9$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Mario,
>
> Probablemente el error sea consecuencia de que has modificado un valor sin
> grabar los cambios.
>
> Normalmente después de cada cambio en los campos de un registro deberías
> hacer un 'Update' para que esos cambios tomen efecto. Además, viendo que
> abres la tabla de modo optimista, deberías comprobar si el valor devuelto
> por 'Update' es .T. o .F. dado que puede o no haberse actualizado los
> cambios.
>
> Saludos,
> José lUis Capel
>
>
> "MARIO DAVALOS" <mariodava@hotmail.com> escribió en el mensaje
> news:48a9f9df$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Hola,
>>
>> Estoy intentando guardar un campo en una tabla que lleva el control de
>> mis contadores o folios, pero al cerrar la tabla me marca error y si no
>> la cierro no afecta el campo.
>>
>> La base es MS SQL.
>>
>> Public oSQLTControl
>>
>> WITH OBJECT oSQLTControl := TSQLTable():New()
>>
>> :oDataSource := oDSource
>> :cProcess := "GENERAL"
>> :cTableName := "CONTROL"
>> :Create()
>>
>> :nLockType := adLockOptimistic
>> :Open()
>> oSQLTControl:ConPed := "0000001"
>> :Close() -- Linea 43
>>
>> END
>>
>> El error que me marca es:
>>
>> Xailer DataControls error
>>
>> ADOB:RecordSet:Close('CONTROL') [#0]
>> En porcedimiento: TFORM1 linea: 43
>>
>> Saludos,
>> Mario A. Dávalos
>> México, D.F.
>>
>> Control
>>
>>
>>
>>
>>
>
>
Cerrar Tabla de ADO.
Hola Mario,
>
> Agregue el UpDate() y no logro que este me devuelva .t., ya intente
> abriendo el dataset en modo pesimista y tampoco, intento hacer un Edit()
> antes de la asiganción del valor para crear el bloqueo y tampoco me
> funciona.
>
El edit() antes de la asignación no bloquea nada.
¿Te da algún mensaje de error el Update?
> Al parecer el problema es que se esta abriendo el DataSet en modo de solo
> lectura, como configuro el DataSet para poderlo editar?, la tabla es de MS
> SQL.
>
Esa tabla.... ¿Tiene clave primaria?
Luego mira a poner en el datasource:
nMode := adModeWrite (aunque no debería hacer falta)
nCursorLocation := adUseServer
Y en el dataset :
nCursorLocation := (lo mismo que en el datasource)
nCursorType := adOpenDynamic (es el más lento, pero vamos a ver)
nLockType := adLockPessimistic
Y la secuencia lógica sería
::oDataset:Open()
::oDataset:GoTop() // VAmos a modificar el primero
::oDataset:MiCampo := "otroValor"
IF !::oDataset:Update()
// Error
ENDIF
Saludos,
JOsé LUis Capel
>
> Agregue el UpDate() y no logro que este me devuelva .t., ya intente
> abriendo el dataset en modo pesimista y tampoco, intento hacer un Edit()
> antes de la asiganción del valor para crear el bloqueo y tampoco me
> funciona.
>
El edit() antes de la asignación no bloquea nada.
¿Te da algún mensaje de error el Update?
> Al parecer el problema es que se esta abriendo el DataSet en modo de solo
> lectura, como configuro el DataSet para poderlo editar?, la tabla es de MS
> SQL.
>
Esa tabla.... ¿Tiene clave primaria?
Luego mira a poner en el datasource:
nMode := adModeWrite (aunque no debería hacer falta)
nCursorLocation := adUseServer
Y en el dataset :
nCursorLocation := (lo mismo que en el datasource)
nCursorType := adOpenDynamic (es el más lento, pero vamos a ver)
nLockType := adLockPessimistic
Y la secuencia lógica sería
::oDataset:Open()
::oDataset:GoTop() // VAmos a modificar el primero
::oDataset:MiCampo := "otroValor"
IF !::oDataset:Update()
// Error
ENDIF
Saludos,
JOsé LUis Capel
-
- Mensajes: 190
- Registrado: Mar Ago 19, 2008 12:38 am
Cerrar Tabla de ADO.
José Luis,
Finalmente funcionó así:
WITH OBJECT oSQLTControl := TSQLTable():New()
:oDataSource := oDSource
:cProcess := "GENERAL"
:cTableName := "CONTROL"
:Create()
:nLockType := adLockOptimistic
:nCursorType := adOpenDynamic
:Open()
dFecha := oSQLTControl:FecSis
:Edit()
oSQLTControl:ConPed := strzero( ( val( cFolio ) + 1 ), 7 )
IF ! :UpDate()
MsgInfo( "No afecto consecutivo...", "Cuidado !!!" )
ENDIF
:Close()
END
Creo que el detalle era el cursor, solo una observación si tuve que meter el
Edit().
Agradezco tu ayuda.
Saludos,
"José Luis Capel -" <jose.luis@capelsoft.com> escribió en el mensaje de
noticias news:48aafc8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola Mario,
>>
>> Agregue el UpDate() y no logro que este me devuelva .t., ya intente
>> abriendo el dataset en modo pesimista y tampoco, intento hacer un Edit()
>> antes de la asiganción del valor para crear el bloqueo y tampoco me
>> funciona.
>>
>
> El edit() antes de la asignación no bloquea nada.
>
> ¿Te da algún mensaje de error el Update?
>
>> Al parecer el problema es que se esta abriendo el DataSet en modo de solo
>> lectura, como configuro el DataSet para poderlo editar?, la tabla es de
>> MS SQL.
>>
>
> Esa tabla.... ¿Tiene clave primaria?
>
> Luego mira a poner en el datasource:
>
> nMode := adModeWrite (aunque no debería hacer falta)
> nCursorLocation := adUseServer
>
> Y en el dataset :
>
> nCursorLocation := (lo mismo que en el datasource)
> nCursorType := adOpenDynamic (es el más lento, pero vamos a ver)
> nLockType := adLockPessimistic
>
>
> Y la secuencia lógica sería
>
> ::oDataset:Open()
>
> ::oDataset:GoTop() // VAmos a modificar el primero
>
> ::oDataset:MiCampo := "otroValor"
>
> IF !::oDataset:Update()
> // Error
> ENDIF
>
>
> Saludos,
> JOsé LUis Capel
>
>
>
Finalmente funcionó así:
WITH OBJECT oSQLTControl := TSQLTable():New()
:oDataSource := oDSource
:cProcess := "GENERAL"
:cTableName := "CONTROL"
:Create()
:nLockType := adLockOptimistic
:nCursorType := adOpenDynamic
:Open()
dFecha := oSQLTControl:FecSis
:Edit()
oSQLTControl:ConPed := strzero( ( val( cFolio ) + 1 ), 7 )
IF ! :UpDate()
MsgInfo( "No afecto consecutivo...", "Cuidado !!!" )
ENDIF
:Close()
END
Creo que el detalle era el cursor, solo una observación si tuve que meter el
Edit().
Agradezco tu ayuda.
Saludos,
"José Luis Capel -" <jose.luis@capelsoft.com> escribió en el mensaje de
noticias news:48aafc8a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola Mario,
>>
>> Agregue el UpDate() y no logro que este me devuelva .t., ya intente
>> abriendo el dataset en modo pesimista y tampoco, intento hacer un Edit()
>> antes de la asiganción del valor para crear el bloqueo y tampoco me
>> funciona.
>>
>
> El edit() antes de la asignación no bloquea nada.
>
> ¿Te da algún mensaje de error el Update?
>
>> Al parecer el problema es que se esta abriendo el DataSet en modo de solo
>> lectura, como configuro el DataSet para poderlo editar?, la tabla es de
>> MS SQL.
>>
>
> Esa tabla.... ¿Tiene clave primaria?
>
> Luego mira a poner en el datasource:
>
> nMode := adModeWrite (aunque no debería hacer falta)
> nCursorLocation := adUseServer
>
> Y en el dataset :
>
> nCursorLocation := (lo mismo que en el datasource)
> nCursorType := adOpenDynamic (es el más lento, pero vamos a ver)
> nLockType := adLockPessimistic
>
>
> Y la secuencia lógica sería
>
> ::oDataset:Open()
>
> ::oDataset:GoTop() // VAmos a modificar el primero
>
> ::oDataset:MiCampo := "otroValor"
>
> IF !::oDataset:Update()
> // Error
> ENDIF
>
>
> Saludos,
> JOsé LUis Capel
>
>
>