Página 1 de 1

Cerrar Tabla de ADO.

Publicado: Mar Ago 19, 2008 12:38 am
por MARIO DAVALOS
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.

Publicado: Mar Ago 19, 2008 10:31 am
por jose.luis
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.

Publicado: Mar Ago 19, 2008 5:24 pm
por MARIO DAVALOS
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
>>
>>
>>
>>
>>
>
>

Cerrar Tabla de ADO.

Publicado: Mar Ago 19, 2008 7:01 pm
por jose.luis
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

Cerrar Tabla de ADO.

Publicado: Mar Ago 19, 2008 10:17 pm
por MARIO DAVALOS
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
>
>
>