FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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 |
#5
|
|||
|
|||
El funcionamiento es similar al del componente TTable, algo así:
__________________
Ó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.
|
#6
|
||||
|
||||
Otra forma seria asi:
IBDataSet1.Insert; IBDataSet1Descripcion.Value:=edit1.text; IBDataSet1.Post; IBTransaction1.CommitRetaining; |
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
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. |
#9
|
|||
|
|||
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... |
|
|
|