Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2007
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
Actualizar un campo de un registro

Hola a todos,

uitlizo delphi 7 y mis tablas estan en access.

tengo dos tablas con muchos registros, Tbl_Encabezado y Tbl_Encabezado_Giros tienen un campo igual que es el numero_transacion, la tabla Tbl_Encabezado_Giros tiene un campo llamado Tasa_Giros que tiene valor y la tabla Tbl_Encabezado tiene un campo que se llama Tasa que no tiene valor. Lo que quiero es ir actualizando el campo Tasa con el campo Tasa_Giros siempre que el campo numero_transacion de las tablas sean iguales.

de ante mano gracias mil por la ayuda que me puedan brindar.


Gracias mil


Alcides
Rep.Dom.
Responder Con Cita
  #2  
Antiguo 22-05-2007
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
/// esto es lo que tengo y no he podido conseguir el resultado ////


Código SQL [-]
          qry_Encabezado_giros_dolares.Close;
          qry_Encabezado_giros_dolares.Parameters.ParamByName('pfecha_inicial').Value := strtodate(fecha_inicial.Text);
          qry_Encabezado_giros_dolares.Parameters.ParamByName('pfecha_final').Value   := strtodate(fecha_final.Text);
          qry_Encabezado_giros_dolares.Open;
    While not qry_Encabezado_giros_dolares.eof do begin


          ls_numero := qry_encabezado_giros_dolaresnumero_giros_dolares.Value;
          ls_fecha  := qry_encabezado_giros_dolaresfecha_giros_dolares.Value;
      end;
          ////////////////////
     qry_Encabezado.Close;
with qry_Encabezado do begin
with sql            do begin
     clear;
     add ('select * from Encabezado');
     add ('where numero_transacion ='+IntToStr(ls_numero));
     open;

          Tbl_Encabezado.Edit;
          Tbl_Encabezado.FieldByName('ccdebito').Value := qry_encabezado_giros_dolarestasa_cambio_giros_dolares.Value;
          Tbl_Encabezado.Post;
end;
end;
          Tbl_Encabezado.Close;
          Tbl_Encabezado.Open;
          qry_Encabezado_giros_dolares.next

end;
Responder Con Cita
  #3  
Antiguo 22-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Una pequeña mejoría:
Código Delphi [-]
with qry_Encabezado.sql do 
begin
     clear;
     add ('Update Encabezado ');
     add ('set ccdebito = :debito');
     add ('where numero_transacion = :numTran');
end;
qry_Encabezado.Prepare;

qry_Encabezado_giros_dolares.Close;
qry_Encabezado_giros_dolares.Parameters.ParamByName('pfecha_inicial').Value := strtodate(fecha_inicial.Text);
qry_Encabezado_giros_dolares.Parameters.ParamByName('pfecha_final').Value   := strtodate(fecha_final.Text);

qry_Encabezado_giros_dolares.Open;
While not qry_Encabezado_giros_dolares.eof do 
begin
  ls_numero := qry_encabezado_giros_dolaresnumero_giros_dolares.Value;
  ls_fecha  := qry_encabezado_giros_dolaresfecha_giros_dolares.Value;

  with qry_Encabezado.Parameters do 
  begin
    Parambyname('numTran').Value := IntToStr(ls_numero);
    Parambyname('debito').Value := qry_encabezado_giros_dolarestasa_cambio_giros_dolares.Value;
  end;
  qry_Encabezado.ExecSql;
  qry_Encabezado_giros_dolares.next
end;

Edito: Quizás sabiendo el select de qry_Encabezado_giros_dolares (jarabe para el nombrecito ) se puede optimizar y hacer en una sola consulta update... no sé.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 22-05-2007 a las 21:51:56.
Responder Con Cita
  #4  
Antiguo 22-05-2007
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
wao, Lepe, perfecto.


gracias mil,

Alcides
Rep.Dom.
Responder Con Cita
  #5  
Antiguo 22-05-2007
Gaby123 Gaby123 is offline
Miembro
 
Registrado: jul 2005
Posts: 33
Poder: 0
Gaby123 Va por buen camino
Hola
Primero tienes el end del while que recorre qry_Encabezado_giros_dolares en un lugar equivocado puesto que lo unico que hace es cambiar los valores a las 2 variables.
Código Delphi [-]
While not qry_Encabezado_giros_dolares.eof do begin
  ls_numero := qry_encabezado_giros_dolaresnumero_giros_dolares.Value;
  ls_fecha  := qry_encabezado_giros_dolaresfecha_giros_dolares.Value;
end;
Segundo, la tabla Tbl_Encabezado no la recorres, solo la abres y la cierras, por lo que siempre editaras el primer registro.

Si tratas de hacerlo mas o menos asi pueda que te sirva
Código Delphi [-]
While not qry_Encabezado_giros_dolares.eof do
begin
    ls_numero := qry_encabezado_giros_dolaresnumero_giros_dolares.Value;
    ls_fecha  := qry_encabezado_giros_dolaresfecha_giros_dolares.Value;
    qry_Encabezado.Close;
  with qry_Encabezado do
     sql.clear;
     sql.add ('update Encabezado set Tasa= :nuevo_valor where numero_transacion =:numero_tran'); //cambiado por un update
     qry_encabezado.parambyname('numero_tran').value:=IntToStr(ls_numero);
     qry_encabezado.parambyname('nuevo_valor').value:=qry_encabezado_giros_dolarestasa_cambio_giros_dolar  es.Value;
     qry_encabezado.execsql;
    end;
  end;
 qry_Encabezado_giros_dolares.next;
 end; //while
Espero que te ayude de algo
Responder Con Cita
  #6  
Antiguo 22-05-2007
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
Gracias mil, gaby123, por tus recomendaciones.

gracias



Alcides
Rep.Dom.
Responder Con Cita
  #7  
Antiguo 23-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Un detalle: La idea, es que la qry_Encabezado esté preparada (prepared) y su sql no se modifique durante el bucle principal, por eso la saqué fuera del bucle qry_Encabezados_giros. Al estar preparada, la consulta se compila en el servidor haciendo más rápida su ejecución .

Pero insisto, si se sabe la sql de selección de qry_Encabezados_giros, se puede construir una sola sql que se lance y que lo haga todo, sin bucles y será muchísimo más rápido que actualmente.

la consulta (adivinando los nombres de campos) sería algo así:
Código SQL [-]
update Encabezado E INNER JOIN encabezado_giros EG on E.numero_transaccion = EG.numero_transaccion
set E.ccdebito = EG.tasa_cambio_giros_dolares
where fecha between :fini and :ffin
Ahora solo hace falta pasarle los parámetros y lanzarla con ExecSql.

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Actualizar CAMPO del registro seleccionado con DBGrid,TQUERY y UpdateSQL cronixxx Conexión con bases de datos 0 06-07-2005 00:33:05
actualizar registro de windows jmeng2 Varios 2 08-12-2004 17:44:02
Actualizar registro activo en DBLookupListBox i.larranaga Conexión con bases de datos 2 21-07-2004 09:41:21
Actualizar un único registro Muten Firebird e Interbase 2 16-03-2004 17:03:30
Actualizar registro seleccionado en DBLookupListBox i.larranaga Varios 1 10-03-2004 17:35:43


La franja horaria es GMT +2. Ahora son las 19:07:06.


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