• Jueves 2 de Mayo de 2024, 04:36

Autor Tema:  Transacciones  (Leído 2356 veces)

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Transacciones
« en: Miércoles 13 de Diciembre de 2006, 23:13 »
0
Que tal , tengo una duda , se puede hacer desde vb 6 un tipo de transaccion ? por decirles un ejemplo ..se tiene que cumplir ciertos procesos para poder llevar acabo  una rutina completa , si no se llegara a cumplir se anula todo lo que llevaba hasta al momento del error..? no se si me explico ..  :P
Gracias ...  :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Transacciones
« Respuesta #1 en: Miércoles 13 de Diciembre de 2006, 23:15 »
0
en SQL? o en un procedimiento cualquiera?

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Transacciones
« Respuesta #2 en: Miércoles 13 de Diciembre de 2006, 23:21 »
0
Ummmm no precisamente, esque te cuento lo que tengo que hacer...
1. Importar la data de un archivo a una tabla temporal
2. Comparar la data que esta en la tabla actual contra otras tablas.
3. Si todo esta bien y los codigo de la data exportada hacen match con las tablas que ya existen.

-- aca es donde necesitaria la transaccion
4. Mover toda la data de la tabla temporal a una tabla xx ( la cual se va a ir acumulando la informacion sin errores)
5. Mover el archivo
6. Eliminar el archivo

Te digo que en el punto 4 necesitaria esto ya que por si en algun momento se va la luz o ocurre mas de algo a la hora de estar llevando ese proceso ... porque la data estaria ingresada en la tabal xxx pero el archivo no se movio, o mas de algo pasa ..

Lo que quiero es como que un tipo de transaccion pero a nivel de basic ??
no se si se podra hacer eso ?
Gracias...
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Transacciones
« Respuesta #3 en: Jueves 14 de Diciembre de 2006, 08:51 »
0
Pues no se si te sirva llevar una 'bandera'

Código: Text
  1. Sub Procedimiento1 ()
  2. On error got xError:
  3. Dim bExito as Boolean
  4.  
  5. bExito=True
  6.  
  7. Importar
  8. Comparar
  9.  
  10. Continuar:
  11. MoverData
  12.  
  13. if bExito then
  14.   Moverarchivo
  15.   Eliminararchivo
  16. else
  17.    Msgbox ("Ocurrio un error "& vbCrLf& Err.Description)  
  18. end if
  19.  
  20. xError:
  21.   bExito=False
  22.   Goto Continuar
  23. End Sub
  24.  
  25.  

Es lo que pasa cuando se ejecuta el scandisk al iniciar la maquina es una bandera en el registro (no recuerdo el nombre :P)

Pero es falsa hasta que apages correctamente el equipo se hace verdadera si se apaga derrepente pues queda en falsa


intentas hacer un rollback?
intentas guardar el status del proceso para que continue la proxima vez que se ejecute?

puedes ejecutar la base de datos en modo transaccional con ADO para asegurarte que todo el movimiento de datos salga correcto y hacer un commit al final

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Transacciones
« Respuesta #4 en: Jueves 14 de Diciembre de 2006, 16:35 »
0
Ok gracias, estaba investigando un poco sobre este tema pero al parecer en basic no se le conoce como Transeferencias sino como Integridad ??? investigare mas al respecto haber que tal me va ....

 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Transacciones
« Respuesta #5 en: Jueves 14 de Diciembre de 2006, 17:26 »
0
en realidad eso se llama TRANSACCIONES como lo mencionaste en un principio.
El uso de Transacciones en SQL Server se utilizan a traves de los comandos: Begin Transaction, RollBack Transaction, Commint Transaction
El uso de Transacciones en ADO.NETes utilizando los metodos BeginTransaction del objeto Connection

No se acerca del uso de las transacciones en Visual Basic.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Transacciones
« Respuesta #6 en: Jueves 14 de Diciembre de 2006, 17:50 »
0
A claro con SQL estamos todo bien  B) , pero lo que quiero es con VB 6.0 , pero estoy investigando..... :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



josemns

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Transacciones
« Respuesta #7 en: Martes 19 de Diciembre de 2006, 02:05 »
0
Mira Puedes usar el metodo que yo uso con ADO bajo VB6
Primero tienes que importar las referencias ActiveX Data Object 2.6 o alguna otra yo uso esa

despues haces la conexion y lo pones en General o si la vas a usarla en todo el programa te sugiero en un modulo asi

Dim cn as new ADO.connection
cn.open "DSN=BASE" --> Yo uso siempre una conexion X medio del ODBC de Windows

Luego ubicas el bloque de codigo que va a contener un SQL ya sea Insert, Update o delete como por ejemplo:

Private sub Ingresar()

 On error goto Linea_Error

 Dim sql
 cn.BeginTransac --> no c si esta bien escrito, pero VB deberia mostrarte la lista procedimentos y metodos que dispone el objeto

 sql = "Insert into TABLA values ("01","CArlos")"
 cn.Execute(SQL)
 sql = "Insert into TABLA values ("02","Pedro")"
 cn.Execute(SQL)
 
 msgbox "Ingreso Completado"
 cn.CommitTransac --> Esto hace si todo salio bien

 Exit sub

 Linea_Error:
 msgbox "Error en el Ingreso"
 cn.RollBackTransac --> Si algo salio mal en la base no se inserta nada asi alla pasado por el primer Insert

end sub

Recuerda siempre lo siguiente:
1) Una transaccion debe cumplir con las propiedades ACID (Atomicidad, consistencia, Aislamiento y durabilidad)
2) Siempre que inicies una transaccion (BeginTransac) siempre debe terminar con (CommitTransac) o un (RollBackTransac) no mas no menos, siempre se ponen los tres
3) No puedes Iniciar una Transaccion en un procedimiento y terminarla en otro procedimiento o funcion debe ser en el mismo bloque de codigo si deseas abacar mas codigo inicias otra transaccion

Espero te sirvan esto consejos
Ojo: El codigo me lo invente en el momento
Cahuuuuuuu