Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
transacciones y tdatabase

se supone que con eso se haria pero no lo hace el roll back me tira error de primary key , en fin he leido pero no se como usar el tsession o el tdatabase alguien podria ensenarme esto para lograr hacer un commit y roll back

Código Delphi [-]



  try
     m.conexion.Open;//este es un componente del tipo tadoconnection
     m.conexion.BeginTrans;
     m.consulta.AutoCalcFields:=false;
     m.consulta.SQL.Clear;

     m.consulta.SQL.Add(' insert into servicioscarros (folio) values (567)  ');
     m.consulta.SQL.Add(' insert into servicioscarros (folio) values (7655)  ');

     m.consulta.ExecSQL;
     m.conexion.CommitTrans;

    //updating, deleting or inserting

  except
    on E:Exception do m.conexion.RollbackTrans;
  end;//try
end;

muchas gracias, espero me puedan ayudar que tengan buena suerte
__________________
Todo es Relativo
Responder Con Cita
  #2  
Antiguo 16-07-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
solucion

bueno ahi les va la solucion
  1. primero que nada necesitan hacer un origen de datos
  • vallan desde widows esta ruta inicio,panel de control , herramientas administrativas , origines de datos


una ves ahi hagan su DNS de usuario ó DNS de sistema (la diferencia de uno y otro que de sistema es para uso en red, recuerden que el servidor sql debe de estar habilidato par conexiones tcp/ip), bueno no es necesario un tutorial para esto es muy sencillo completar la configuracion
  1. agregen un tdatabse
  2. en la propiedad alias name esciban el nombre del origen de datos que hicieron ya sea dns de sistema o de usuario
  3. y en params denle el nombre de usuario y contrañena de inicio de sesion de esa base de datos o es mejor hacer doble click al componente y y ponerle defaults
  4. en sql passthrought escriban non shared si desean que sql server o su servidor manje las consultas directamente en un tquery ( quiero decir que ejecutaran la consulta con codigo de su servidor a como se escriban las transacciones y ese estilo de cosas) y no el motor dbe de delphi si no escriban shared autocommit
  5. en sqlquery mode escriban server similar a la opcion anterior si no denjenlo en local y ya esta la segunda parte
  1. agregen un componente tquery
  2. asegurense que sea tquery y no adoquery o algo asi
  3. propiedad sql una consulta cualquier
  4. databasename escriban su origen de datos odbc
  5. denle en active true
  6. listo solo falta ejecutar sus consultas de la siguiente manera


Código Delphi [-]
//m es mi modulo de datos

 try
    m.tdatabase.open;//este es un componente del tipo tadoconnection
    m.tdatabase.BeginTrans;
 
     m.consulta.SQL.Clear;

     m.consulta.SQL.Add(' insert into servicioscarros (folio) values (567)  ');
     m.consulta.SQL.Add(' insert into servicioscarros (folio) values (7655)  ');

  
      m.tdatabase.commit;

    //updating, deleting or inserting

  except
    on E:Exception do m.tdatabase.RollbackTrans;
  end;//try
end;
//consulta su componente tquery
//tdatabase es su tdatabase coponent xD
__________________
Todo es Relativo
Responder Con Cita
  #3  
Antiguo 03-08-2012
elhencas elhencas is offline
Registrado
 
Registrado: feb 2007
Posts: 2
Poder: 0
elhencas Va por buen camino
Smile algo mas sobre transacciones... delphi y unidac y mysql

Busqué por todas partes y no hay explicación clara. Luego de algunas pruebas y mucho buscar tengo algo práctico.

Primero: las transacciones se usan para agregar, modificar y borrar datos en una o varias tablas, se pueden hacer busquedas y todo tipo de accesos sobre las tablas pero estas no estan en la base de datos hasta que se haga un commit.
Si pasa algo como una pérdida de conexion la base de datos hace un rollback y deshace todo lo que está pendiente. Existen otros comandos pero básicamente es esto.

A nivel de mysql las tablas tienen que ser inodb. A nivel de delphi con componentes de conexión de unidac, funciona con los componentes de base de datos de acceso directo de delphi. como dbedit, dbgrid, etc.

Lo escencial es : usar el componente conexion. luego se definen componentes tablas con datasource, lo normal.

Cuando se arranca el formulario en el evento form.show se pone el nombre de la conexion.transactions[1].starttransaction; o en un evento que permita abrir la transaccion.
Luego se trabaja normalmente.

al salir o terminar de poner datos se hace conexion.transactions[1].commit; o conexion.transactions[1].rollback; se puede manejar errores, etc. pero basicamente es esto.
Responder Con Cita
  #4  
Antiguo 13-08-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
muchas gracias compañero pondre en practica tu recomendacion en unos dias reportare mis experiencias
__________________
Todo es Relativo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TDatabase y firebird adeszeus Conexión con bases de datos 5 11-08-2011 17:51:32
Transacciones anidadas (TDatabase) eureka MS SQL Server 1 24-10-2005 15:00:38
Uso del TDatabase Loviedo Conexión con bases de datos 4 30-04-2005 06:37:03
dudas con tsession y tdatabase maruenda Varios 8 13-02-2004 19:26:23
Objetos tdatabase globales eber Conexión con bases de datos 3 31-12-2003 11:03:37


La franja horaria es GMT +2. Ahora son las 15:29:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi