Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2005
JavierO JavierO is offline
Miembro
 
Registrado: jul 2005
Ubicación: Pachuca, Hidalgo, México
Posts: 38
Poder: 0
JavierO Va por buen camino
Question Crear un campo nuevo en una tabla?

Hola a todos:

Mi situación es la siguiente.....

Como puedo crear un nuevo campo para una tabla, es decir no debe estar el campo fisicamente en la tabla dentro de la base de datos, mi campo se debe llamar lw_origen_servicio

Bueno primero lo intente creandolo de tipo fkCalculated, pero no me guarda los valores que le habia asignadopara cada registro. para despues utilizarlos en una comparacion en otro proceso, ya que me aparece en null.

Ya intente cambiando el fkcalculated y utilizando fkInternalCalc, pero no me deja dice que el campo lw_origen_servicio es desconocido.

Saludos y gracias de antemano.

P.D. estoy utilizando D6 y Access 2000
Responder Con Cita
  #2  
Antiguo 07-09-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues tiene que funcionarte con un campo calculado, pero debes de explicar más como piensas utilizarlo incluso poner algo de código para ver si alguien puede orientarte

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 07-09-2005
JavierO JavierO is offline
Miembro
 
Registrado: jul 2005
Ubicación: Pachuca, Hidalgo, México
Posts: 38
Poder: 0
JavierO Va por buen camino
yo lo que entiendo es, que los campos calculados solo se asignan en el evento OnCalc, pero yo no lo puedo hacer alli por que para poder asignarle el valor se tienen que cumplir una serie de validaciones, y ese campo solo lo necesito para que me guarde un valor para posterirmente compararlo, no debo ni mistrarlo al usuario solo me va a servir para ver si un registro ya existe no lo vuelva a crear.


Código Delphi [-]
 
procedure Tsilfpr0002.PPR0002_INCLUYE_DORE_GENERAL();
begin
   Q_Cursor.Close;
   Q_Cursor.SQL.Clear;
   Q_Cursor.SQL.Add(' SELECT ampp_prov_numero, ampp_mtpr_clave, SUM(ampp_cantidad) AS ampp_cant, SUM(ampp_centimetros_cubicos) AS ampp_cc                            ');
   Q_Cursor.SQL.Add(' FROM   sil_ajustes_mp_pedido                                                                                                                   ');
   Q_Cursor.SQL.Add(' WHERE  ampp_plan_clave                                                      = :gw_plan_clave_prod                                              ');
   Q_Cursor.SQL.Add(' AND    ampp_ctmn_fecha                                                      = (SELECT MAX(ctmn_fecha)                                          ');
   Q_Cursor.SQL.Add('                                                                                FROM   sil_contaminacion                                        ');
   Q_Cursor.SQL.Add('                                                                                WHERE  ctmn_plan_clave   = ampp_plan_clave                      ');
   Q_Cursor.SQL.Add('                                                                                AND    FORMAT(ctmn_fecha,''dd/mm/yyyy'') = :lw_fecha_operacion) ');
   Q_Cursor.SQL.Add(' AND    IIF(ISNULL(ampp_pedi_serie),:sil_pedi_pedi_serie,ampp_pedi_serie)    = :sil_pedi_pedi_serie                                             ');
   Q_Cursor.SQL.Add(' AND    IIF(ISNULL(ampp_pedi_numero),:sil_pedi_pedi_numero,ampp_pedi_numero) = :sil_pedi_pedi_numero                                            ');
   Q_Cursor.SQL.Add(' GROUP BY ampp_prov_numero, ampp_mtpr_clave                                                                                                     ');
   Q_Cursor.ParamByName('lw_fecha_operacion').Value    := lw_fecha_operacion;
   Q_Cursor.ParamByName('sil_pedi_pedi_serie').Value   := T_PEDI.FieldValues['pedi_serie'];
   Q_Cursor.ParamByName('sil_pedi_pedi_numero').Value  := T_PEDI.FieldValues['pedi_numero'];
   Q_Cursor.ParamByName('gw_plan_clave_prod').Value    := gw_plan_clave;
   Q_Cursor.Prepare;
   Q_Cursor.Open;
   while not Q_Cursor.Eof do
   begin
...
 
          if not(VarIsNull(lw_prov_numero)) or (lw_prov_numero <> '') then
         begin
            T_DORE_SD.First;
            while not(T_DORE_SD.Eof) and
                  ((T_DORE_SD.FieldByName('dore_origen_dosificacion').Value <> 'S') or
                   (T_DORE_SD.FieldByName('lw_origen_servicio').Value       <> 'P') or
                   (T_DORE_SD.FieldByName('dore_mtpr_clave').Value          <> Q_Cursor.FieldByName('plsm_mtpr_clave').Value) or
                   (T_DORE_SD.FieldByName('dore_prov_numero').Value         <> lw_prov_numero)) do
            begin
               T_DORE_SD.Next;
            end;
            if (T_DORE_SD.FieldByName('dore_origen_dosificacion').Value = 'S') and
               (T_DORE_SD.FieldByName('lw_origen_servicio').Value       = 'P') and
               (T_DORE_SD.FieldByName('dore_mtpr_clave').Value          = Q_Cursor.FieldByName('plsm_mtpr_clave').Value) and
               (T_DORE_SD.FieldByName('dore_prov_numero').Value         = lw_prov_numero) then
            begin
               if (T_DORE_SD.FieldByName('dore_cant_sobre_dosificacion').Value <> lw_cantidad) then
               begin
                  T_DORE_SD.Edit;
                  T_DORE_SD.FieldByName('dore_cant_sobre_dosificacio').Value := lw_cantidad;
               end;
            end
            else
            begin
               if not(T_DORE_SD.FieldByName('dore_mtpr_clave').IsNull) then
               begin
                  T_DORE_SD.Append; //CREATE_RECORD;
               end;
               T_DORE_SD.Append;
               T_DORE_SD.FieldByName('dore_origen_dosificacion').Value     := 'S';
               T_DORE_SD.FieldByName('dore_mtpr_clave').Value              := Q_Cursor.FieldValues['plsm_mtpr_clave'];
               T_DORE_SD.FieldByName('dore_prov_numero').Value             := lw_prov_numero;
               T_DORE_SD.FieldByName('dore_cant_sobre_dosificacion').Value := lw_cantidad;
               T_DORE_SD.FieldByName('dore_tipo_dosificacion').Value       := Q_Cursor.FieldValues['plsm_tipo_dosificacion'];
               T_DORE_SD.FieldByName('lw_origen_servicio').Value           := 'P';
               // Asignacion de valores basicos
               T_DORE_SD.FieldByName('dore_mtpr_clave').Value              := Q_Cursor.FieldValues['plsm_mtpr_clave'];
               T_DORE_SD.FieldByName('dore_numero').Value                  := T_DORE_SD.RecordCount + 1;
               T_DORE_SD.FieldByName('dore_usuario_creo').Value            := gw_usuario;
               T_DORE_SD.FieldByName('dore_fecha_creo').Value              := now;
            end;
         end;
      end;

    ...
 
      Q_Cursor.Next;
   end;
   Q_Cursor.Close;
   lwct_lw_incluye_dore_general := 'N';
end;
Responder Con Cita
  #4  
Antiguo 07-09-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Otra forma de evitar que se dupliquen registros, es definiendo una llave con valores únicos. En caso de que el dato se duplique, el prorama generaría una excepción que puedes manejar a tu antojo.
__________________

Responder Con Cita
  #5  
Antiguo 08-09-2005
JavierO JavierO is offline
Miembro
 
Registrado: jul 2005
Ubicación: Pachuca, Hidalgo, México
Posts: 38
Poder: 0
JavierO Va por buen camino
creo que me explique mal no es que valide que si existe no lo duplique....


si no que si ya existe,o lo tengo en el grid solo le cambie la cantidad...es decir en base a una formula que me va a dar ciertos parametros y aparte de algunos requerimientos manuales que haya solicitado el cliente para cierto pedido... entonces se proporciona la cantidad que va a producir y me genera en automatico algunos detalles(registros) con ciertas cantidades en un dbgrid, pero al cliente se le ocurre cambiar la cantidad que va a producir entonces se tiene que volver a recalcular toda la información, cambiando los registros que se generaron en forma automática y dejando la informacion manual que introdujo el cliente.
Responder Con Cita
  #6  
Antiguo 28-12-2005
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Entonces no necesitas un campo calculado.
Crea un campo normal, pero accesa a él mediante Edit y Post, de otra forma, el campo calculado siempre será regido por ciertos eventos y con Edit y Post tu decides donde y cuando modificarlo.
Podrías modificar tu nuevo campo en el evento BeforePost, te servirá mucho ese evento para este caso.
__________________
Tiempo y ocasión acontecen a todos!
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 01:17:07.


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