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 13-06-2018
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 170
Poder: 7
ArtPortEsp Va por buen camino
RefreshRecord

Buen dia compañeros....

a ver si alguno de ustedes les ha pasado esto...

tengo un TQuery en una forma, que tiene asignada la siguiente sentencia:
Código:
Select sl_aseg as asegurado,
cl_telc,cl_telo,cl_telo2,cl_celu,cl_expe,cl_email,cl_email2,cl_indica,
CAST((CASE When p.sl_edo = 'V' then 'VIGENTE' 
When p.sl_edo = 'X' then 'REEXPEDIDA' 
When p.sl_edo = 'V' and CURDATE() > p.sl_vig2 then 'VENCIDA' 
When p.sl_edo = 'C' and (SL_RENOV is null or SL_RENOV='') then 'CANCELADA' 
when p.sl_edo = 'C' and (SL_RENOV is not null) then 'RENOVADA' End) as char) as estado,
CAST((CASE When p.sl_fpa = 2 THEN 'SEMESTRAL' 
When p.sl_fpa = 3 THEN 'TRIMESTRAL' 
When p.sl_fpa = 4 THEN 'MENSUAL' 
When p.sl_fpa = 5 THEN 'CUATRIMESTRAL' 
When p.sl_fpa = 6 THEN 'QUINCENAL' 
When p.sl_fpa = 7 THEN 'CATORCENAL' 
When p.sl_fpa = 8 THEN 'ESP. 10 RECIBOS' 
When p.sl_fpa = 1 THEN 'CONTADO' END) AS CHAR) as formapag,
CAST((CASE when p.sl_vpag='E' then 'ELECTRONICA'
when p.sl_vpag='A'  then 'AGENTE'
when p.sl_vpag='VA' then 'VALE'
when p.sl_vpag='M'  then 'MIXTA' end) as char) as viapago, 
sl_pol as re_pol,sl_sol,
sl_pri,sl_descto,sl_derp,sl_pfra,sl_iva,sl_cia,sl_vig1,sl_vig2,sl_obs1,sl_vpag,
((sl_pri-sl_descto)+sl_iva+sl_derp+sl_pfra) as totpol,
po_nom as ramdesc,po_tipo as ramtipo,'' as cobdesc,nom as ciadesc, nom,
garantiapag,garanemision,garanaplicacion 
from polizas p
inner join compania on sl_cia=cia
inner join clientes on cl_num=sl_num
inner join ramos on po_cve=sl_tipo
Todo en orden cuando ejecuto el query, sin embargo, cuando en tiempo de ejecucion, actualizo uno de esos registros me dice que el campo "estado" no existe en la lista de campos

El codigo que utilizo para actualizar la informacion del registro es:

Código Delphi [-]
     Qpolizas.DisableControls;
     If Evale.Text <> '' then
     begin
          Dm.Qactualiza.SQL.text := 'update polizas set garantiapag='+quotedstr(Evale.text)+
                                    ',garanemision='+quotedstr(formatdatetime('yyyy-mm-dd',Efechaval.date))+
                                    ',garanaplicacion='+quotedstr(formatdatetime('yyyy-mm-dd',date))+
                                    ' where sl_pol='+quotedstr(Qpolizas.fieldbyname('re_pol').asstring)+
                                    ' and sl_cia='+quotedstr(Qpolizas.fieldbyname('sl_cia').asstring);
     end
     else
     begin
          Dm.Qactualiza.SQL.text := 'update polizas set garantiapag='+quotedstr('')+
                                    ',garanemision=:nulfecha,garanaplicacion=:nulfecha'+
                                    ' where sl_pol='+quotedstr(Qpolizas.fieldbyname('re_pol').asstring)+
                                    ' and sl_cia='+quotedstr(Qpolizas.fieldbyname('sl_cia').asstring);
          Dm.Qactualiza.ParamByName('nulfecha').Clear;
     end;
     Qpolizas.EnableControls;
     Qpolizas.RefreshRecord;

Alguna idea?

Última edición por Casimiro Notevi fecha: 13-06-2018 a las 20:34:12. Razón: Etiquetas [delphi]
Responder Con Cita
  #2  
Antiguo 13-06-2018
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 170
Poder: 7
ArtPortEsp Va por buen camino
Por cierto, en el segundo codigo me falto la linea : DM.Qactualiza.Execute;

En el codigo que estoy probando si esta... perdon por la omision
Responder Con Cita
  #3  
Antiguo 13-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Los pasos a seguir son:
Código Delphi [-]
query.close;
query.selectsql.text:='select ...';
query.open;
Responder Con Cita
  #4  
Antiguo 13-06-2018
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 170
Poder: 7
ArtPortEsp Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Los pasos a seguir son:
Código Delphi [-]
query.close;
query.selectsql.text:='select ...';
query.open;
Pero... he usado RefreshRecord con anterioridad sin problema, no entiendo por que no funciona esta vez; mi sospecha es que es un campo "calculado" y no directo.

Y aun asi, no entiendo por que; es mas, creo que he usado refreshrecord ya con ese tipo de campos pero no puedo encontrar el ejemplo
Responder Con Cita
  #5  
Antiguo 13-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, es que no sé qué componentes estás usando, ni el contexto de esas instrucciones.
Responder Con Cita
  #6  
Antiguo 13-06-2018
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 170
Poder: 7
ArtPortEsp Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bien, es que no sé qué componentes estás usando, ni el contexto de esas instrucciones.
Tienes toda la razon...

Estoy usando TMyQuery de DEVART (MyDac).. conectados a una BD MySQL 5.6

El desarrollo esta en Delphi 7...

La verdad es mas frustrante que indispensable, igual puedo hacer lo que indicas, pero creo que es mas lento que el RefreshRecord, no se.
Responder Con Cita
  #7  
Antiguo 13-06-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por ArtPortEsp Ver Mensaje
..., pero creo que es mas lento que el RefreshRecord, no se.
No puedo aseverarlo en los componentes de DEVART, pero en todos los componentes que conozco, el método Refresh retiene la posición actual del cursor en la tabla luego la cierra, la abre y restaura la posición; por ese motivo no creo que tengas diferencia en los tiempos al usar un modo u otro.

Pero si lo que deseas es no perder la posición de antes de cerrar/abrir, podes hacer:
Código Delphi [-]
var
  BM: Pointer;
begin
  Qpolizas.DisableControls;
  try
    BM := Qpolizas.GetBookmark; // guardar posición
    try
      if Evale.Text <> '' then
      begin
        // acciones que mueven la posición en la tabla
        // ...
      end;
      Qpolizas.Close;
      Qpolizas.Open;
      Qpolizas.GotoBookmark(BM); // volver a posición guardada
    finally
      Qpolizas.FreeBookmark(BM); // liberar el puntero
    end;
  finally
    Qpolizas.EnableControls;
  end;
  Qpolizas.RefreshRecord;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Ayuda con ClientDataset.RefreshRecord luifervm Varios 1 16-03-2010 19:38:17
RefreshRecord - DBExpress con Interbase StartKill Varios 2 08-12-2008 00:03:23


La franja horaria es GMT +2. Ahora son las 01:16:19.


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