AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos / HFSQL / Gestión de transacciones / Funciones WLanguage
  • Casos de error
  • Manipular registros durante una transacción
  • Transacciones y contexto HFSQL independiente
  • OLE DB y Conectores Nativos
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Valida la transacción actual:
  • se validan las modificaciones realizadas en el archivo de datos desde el inicio de la transacción (HTransactionStart o HTransaction).
  • se borra el fichero de transacción (si esta transacción es la última transacción en curso para una aplicación de red).
  • se desbloquean los registros bloqueados en sólo lectura por la transacción.
Ejemplo
MyConnection1 is Connection
 
// Start transaction on data files associated with MyConnection1
HTransactionStart(MyConnection1)
 
// Code used to prepare the order to added
// ...
 
WHEN EXCEPTION IN
// Add the order
HAdd(Orders)
// Validate the addition
HTransactionEnd(MyConnection1)
DO
// Delete the order lines
HTransactionCancel(MyConnection1)
END
// Start transaction on the Orders and OrdLine data files
HTransactionStart("C:\Temp\Transaction.trs", "Orders,OrdLine,-Customer")
 
// Code used to prepare the order to added
// ...
 
WHEN EXCEPTION IN
// Add the order
HAdd(Orders)
// Validate the addition
HTransactionEnd()
DO
// Delete the order lines
HTransactionCancel()
END
Sintaxis

Validar una transacción en curso en una conexión Ocultar los detalles

<Result> = HTransactionEnd(<Connection>)
<Result>: booleano
  • True STRIMEULB si la transacción ha finalizado,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
Atención: La función no tiene ningún efecto si se inicia una operación global.. Se debe utilizar la sintaxis 2.
<Connection>: Cadena de caracteres o variable de tipo Connection
Conexión a utilizar. Esta conexión corresponde a: Si este parámetro corresponde a la constante hAccessHF7, la transacción se realizará en archivos HFSQL ISAM.

Validar una transacción global en curso Ocultar los detalles

<Result> = HTransactionEnd()
<Result>: booleano
  • True STRIMEULB si la transacción ha finalizado,
  • False si se produce un problema. HErrorInfo devuelve más detalles sobre el error.
Observaciones

Casos de error

  • Operaciones de anidamiento: Las transacciones no se pueden anidar (es decir, no se puede llamar a HTransactionStart o HTransaction en una transacción). En este caso, se produce el error 70031.
  • Se muestra un error fatal en los siguientes casos:
    • Se inicia una transacción en todas las conexiones mientras haya al menos una conexión en la transacción..
    • Se inicia una operación en una conexión mientras que ya se ha iniciado una operación en todas las conexiones..
    • Se inicia una transacción en todas las conexiones mientras haya al menos una conexión cuyo modo de aislamiento no sea "Lectura no comprometida".

Manipular registros durante una transacción

Durante una transacción, se deben cumplir algunas reglas al manipular registros. Para obtener más información, consulte Transacciones: Manipular registros durante una transacción.

Transacciones y contexto HFSQL independiente

Al copiar un contexto, si una transacción está en curso en el primer contexto, el nuevo contexto no está en la transacción.. Debe llamar a HTransactionStart (o HTransaction) para iniciar una transacción en el nuevo contexto.
WINDEVOLE DBConectores Nativos

OLE DB y Conectores Nativos

Sólo se tienen en cuenta las sintaxis con conexión en la Conectores Nativos (también llamada accesos nativos) que soportan las transacciones. También se puede utilizar la función SQLTransaction.
Componente: wd290hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Example in doc correcton
When using Transaction commands Start, End and Cancel always include the connection or source used in the Start in the associated End and Cancel

TransactionStart(MyConnection)

Hadd(Customer)
if ErrorOccurred() then
TransactionCancel(MyConnection)
ELSE
TransactionEnd(MyConnection)
END
CCordes
03 10 2019
Example Transaction with commit 100 in 100
//SQL

SERIAL is int

HTransactionStart(Hfsql)

FOR EACH t0010_enderecoscorreios //leitura da tabela ms sql server // TABELA DE ORIGEM

SERIAL += 1

PROGBAR_01..Value += 1
IF PROGBAR_01..Value = 100 THEN
HTransactionEnd(Hfsql) //commit
PROGBAR_01..Value = 0
HTransactionStart(Hfsql) //start
Multitask(1) //permite compartilhar o processador com os outros prog e serviços windows
END

//HFSQL = MS SQL SERVER 2016 / DEVELOPER
enderecoscorreios.LogradouroAbrev = t0010_enderecoscorreios.LogradouroAbrev
enderecoscorreios.Logradouro = t0010_enderecoscorreios.Logradouro

ok is boolean = HAdd(enderecoscorreios) // gravacao no hfsql
IF ok = False THEN
HTransactionCancel(Hfsql) //Rollback
END

END

Info(SERIAL)
BOLLER
13 04 2017

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local