Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2006
Dark Aeris Dark Aeris is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
Dark Aeris Va por buen camino
otro problema con Firebird

Hola a todos, se ke este tema esta más ke tokado pero kon todo y ke he revisado las respuestas a otros, no he podido resolver el mio .
Lo ke hago es solo seleccionar un registro una tabla y ese agregarlo a una tabla temporal, y agregado debe mostrarse este registro en otro grid, el problema es ke no se ve ke lo haga, debo salir del ejekutable y volver a entrar para ver ke se haya hecho la transaccion.
Se ke debo poner "commit" pero me marca error, alguien me puede ayudar?
de antemano gracias.

kodigo:

ibtable1.Open;
ibtable2.Open;
while not(ibtable1.Eof)do
begin
if(regselec=string(ibtable1.fieldbyname('CANCION').value))then
begin
ibtable2.Insert;
ibtable2.FieldByName('ID').Value:=ibtable1.FieldByName('ID').Value;
ibtable2.FieldByName('CANCION').Value:=ibtable1.FieldByName('CANCION').Value;
ibtable2.FieldByName('ARTISTA').Value:=ibtable1.FieldByName('ARTISTA').Value;
ibtable2.FieldByName('ALBUM').Value:=ibtable1.FieldByName('ALBUM').Value;
ibtable2.FieldByName('UBICACION').Value:=ibtable1.FieldByName('UBICACION').Value;
ibtable2.Post;
ibtransaction2.Commit;
end;
ibtable1.next;
end;
ibtable1.Close;
ibtable2.Close;
Responder Con Cita
  #2  
Antiguo 08-06-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
porque estas usando dos transacciones, creo suponer eso:


ibtransaction2.Commit;



aparte la siguiente linea, esta dentro del while, que si encuentra lo que buscas, haga el insert el post y das commit y sigues dentro del bucle. está mal implemntada la lógica.


El problema quizas sea que tus dos tablas apuntan a la transsacion número uno.



Bueno, eso es loq ue pienso, no soy mago para adivinar la lógica de tu aplicación, pero viendo la parte que estas mostrando, puede ser eso....



¿Dónde abres las tablas?

¿Cuándo haces el refresh?
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #3  
Antiguo 08-06-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
A mi la logica no me parece que este muy mal, lo que no dice es que error le muestra al hacer el commit.

Ademas, cierra las dos tablas, asi que o hay más codigo, o es imposible que se vea nada en el grid.
Responder Con Cita
  #4  
Antiguo 08-06-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
correcto, pero cuando haces el commit, se cierran las tablas implicadas, y despues hace un table1.next, está algo ilógico.




Bueno, en mi punto de vista, se necesita más retroalimentación por parte del compañero, para poder ayudarle.




Nos vemos
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #5  
Antiguo 09-06-2006
Dark Aeris Dark Aeris is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
Dark Aeris Va por buen camino
Aklaraciones

hola de nuevo a todos y gracias por el interes, tratare de explicarme en la logika del kodigo

procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
regselec:=dbgrid1.Fields[0].AsString;
ibtable1.Open;
ibtable2.Open;

* hago un doble click a un registro del grid a fin de seleccionarlo y realize la siguiente accion

while not(ibtable1.Eof)do
begin
if(regselec=string(ibtable1.fieldbyname('CANCION').value))then

* este ciclo es una busqueda para ubicarme sobre los campos correspondientes a la celda seleccionada

begin
ibtable2.Insert;
ibtable2.FieldByName('ID').Value:=ibtable1.FieldByName('ID').Value;
ibtable2.FieldByName('CANCION').Value:=ibtable1.FieldByName ('CANCION').Value;
ibtable2.FieldByName('ARTISTA').Value:=ibtable1.FieldByName('ARTISTA').Value;
ibtable2.FieldByName('ALBUM').Value:=ibtable1.FieldByName('ALBUM').Value;
ibtable2.FieldByName('UBICACION').Value:=ibtable1.FieldByName('UBICACION').Value;
ibtable2.Post;
ibtransaction2.Commit;
end;
ibtable1.next;
end;
ibtable1.Close;
ibtable2.Close;
end;

* al encontrar los campos correspondientes estos se copian a otra tabla identica que es solo temporal, el ciclo se detiene cuando encuentra la coincidencia del campo seleccionado.

Ya con esto, muestro los datos copiados en otro grid, el problema es que si lo hace bien todo, solo ke muestra los resultados al salir y volver a entrar a la aplikacion, es decir, no se actualiza al momento. Espero haberme dado a entender, Gracias!!!
Responder Con Cita
  #6  
Antiguo 09-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Por favor utilizad TAG's cuando escribáis código Delphi en los mensajes.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 09-06-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
A parte de lo dicho por Neftali, no te has explicado mejor, ya que has vuelto a poner lo mismo!!!!

Cita:
el ciclo se detiene cuando encuentra la coincidencia del campo seleccionado
No es cierto, el ciclo se detiene porque se cierran las tablas, y en el siguiente .next te da un error, ya que la tabla esta cerrada.
Supongo que ese es el error que te da, y que no nos quieres decir.

Tu quieres que el resultado aparezca en otro grid, pero no nos dices nada de él, ni a que tabla esta enganchado, ni si abres o refrescas la tabla.
Responder Con Cita
  #8  
Antiguo 09-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No está muy claro este hilo, pero me parece que tienes que usar "CommitRetaining" en lugar de Commit, así hace que aparezcan los datos de forma "instantánea".

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, 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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Correr aplicación con firebird en K\: y S.O. en otro disco coyotaxo Conexión con bases de datos 0 12-10-2005 22:01:23
Problema acceso a popiedad otro formulario mguixot OOP 1 07-09-2005 15:42:15
problema al crear un formulario de otro ya creado soyhugo Varios 2 01-02-2004 13:11:54
Otro problema relacionado con filtros (urgente) ADN Conexión con bases de datos 6 28-07-2003 13:50:44
otro problema... superhopi OOP 9 15-05-2003 10:26:40


La franja horaria es GMT +2. Ahora son las 17:58:18.


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