Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2004
T-man T-man is offline
Miembro
 
Registrado: oct 2004
Posts: 28
Poder: 0
T-man Va por buen camino
Question Transaction e IBDataSet (IBX)

Hola gente, soy nuevo en este foro. Estoy haciendo una aplicacion con InterBase y no tengo experiencia en las componentes IBX. Mi duda es si debo crear una componente Transaction por cada IBDataSet.
EJ: Tengo dos forms (ventanas) diferentes. Una para empleados y otra para usuarios. Para realizar los dos INSERT pongo dos IBDataSet pero los ligo a un solo componente Transaction o tengo que crear uno para cada INSERT???

Cuando me conviene activar la transaccion?
Y por ultimo, el codigo de "commitRetaining" va en el boton "insertar" del usuario????

Bueno muchas gracias
Responder Con Cita
  #2  
Antiguo 13-10-2004
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Hola.
Bueno puedes hacerlo como quieras. Solo depende de la idea que tengas de como hacer tu aplicación.
Si ligas los dos Datasets a un solo componente Transaction, todas las operaciones en las que intervengan los datasets se aceptan o rechazan en bloque. Si por el contrario utilizas un transaction para cada dataset estos actuan de un modo independiente el uno del otro.
No se si me he explicado bien

Saludos
Responder Con Cita
  #3  
Antiguo 13-10-2004
T-man T-man is offline
Miembro
 
Registrado: oct 2004
Posts: 28
Poder: 0
T-man Va por buen camino
si, te entendi..muchas gracias.

Ahora bien, no quiero usar un DBNavigator entonces lei que para hacer un insert tengo que llamar a la funcion INSERTSQL que tiene el IBDataSet.
Como hago para llamar a esa funcion por codigo.
Yo hice esto pero me tira error, tengo que pasarle un valor por parametro.

IBDataSet1.Close;
IBDataSet1.Prepare;
IBDataSet1.InsertSQL.Values['DESCRIPCION']:=edit1.text;
IBDataSet1.Open;
IBTransaction1.CommitRetaining;

Quiero insertar en la tabla que esta asociada al INSERTSQL una descripcion que ingreso en un edit.

Bueno muchas gracias y a ver si alguien me puede informar sobre el codigo necesario para llamar a las funciones INSERTSQL, DELETESQL y demas.
Responder Con Cita
  #4  
Antiguo 13-10-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
noe Va por buen camino
Para utilizar el IBDataset, solo tienes que manejarlo como se hace con un componente Table:

es decir:
IBDataset1.Insert; (para insertar un registro)
IBDataset1.Edit; (para editar)
IBDataset1.Post; (para guardar)
IBDataset1.Delete; (para borrar)

saludos
Responder Con Cita
  #5  
Antiguo 13-10-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
El funcionamiento es similar al del componente TTable, algo así:

Código Delphi [-]
 with IBDataSet1 do begin
   Insert;
   FieldByName('DESCRIPCION').AsString := Edit1.Text;
   Post;
 end;
 
  IBTransaction1.CommitRetaining;
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
  #6  
Antiguo 13-10-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
noe Va por buen camino
Smile

Otra forma seria asi:

IBDataSet1.Insert;
IBDataSet1Descripcion.Value:=edit1.text;
IBDataSet1.Post;
IBTransaction1.CommitRetaining;


Responder Con Cita
  #7  
Antiguo 14-10-2004
T-man T-man is offline
Miembro
 
Registrado: oct 2004
Posts: 28
Poder: 0
T-man Va por buen camino
muchas gracias, lo probé y funcionó.
Y ya que estamos a ver si me pueden ayudar en esto. Hice un generador y un trigger "before insert" para que se autoincremente el identificador de una tabla. Por lo que leí no hay que hacer nada mas que eso ya que el gestor de la BD lo hace todo automaticamente, pero cuando hago un insert me tira un error de que el campo del id es obligatorio.
Bueno si pueden decirme como lo soluciono se los agradezco muchisimo.
Hasta pronto.
Responder Con Cita
  #8  
Antiguo 14-10-2004
Karpiter Karpiter is offline
Registrado
 
Registrado: oct 2004
Posts: 2
Poder: 0
Karpiter Va por buen camino
Transaction e IBDataSet (IBX)

Buenos días a todos.

Lo que yo hago es asignarle cero (0) al campo referenciado, me imagino que tu campo es el campo llave, verdad?; no se que tan bueno sea; aun así me lo
incrementa en el momento de guardar el registro.
Responder Con Cita
  #9  
Antiguo 14-10-2004
T-man T-man is offline
Miembro
 
Registrado: oct 2004
Posts: 28
Poder: 0
T-man Va por buen camino
jaja funcionó. menos mal que existen foros como éste porque a veces la solucion es la menos pensada. Todavia no puedo creer como funciona con éste truco de ponerle un cero. Podia haber estado años probando.
Mil gracias...
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


La franja horaria es GMT +2. Ahora son las 11:10:25.


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