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 28-02-2012
yevabas yevabas is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 42
Poder: 0
yevabas Va por buen camino
Update registro

Buenas tardes

En primer lugar quiero agradecerles por su tiempo y ayuda que me brindan, he estado revisando en los hilos pero la verdad no me queda muy claro esto y no he podido implementar nada con lo que encontre en los hilos.

Estoy trabajando en delphi 7 y tengo los componentes de interbase, tengo un IBquery apuntando a una tabla (lote) y visualizo todos los datos en un TDBGrid, estos son los campos;


Cita:
ID ----- FECHA ------- CANTIDA ------- VALOR_UNI -------- VALOR_TOTAL -------- STATUS

1 ----- 22/02/2012------- 10--------------34-------------------45---------------------A

Cuando le doy doble click (Utilizando la propiedad OnDblClick) sobre una de las filas del TDBGrid paso todos los datos a unos dbedit que están conectados a otra tabla (ventas), esto no es ningun problema, lo que quiero es que el campo llamado status que en este momento esta en 'A' y quiero despues de darle doble click en el TDBGrid este campo me cambie a 'I', pero en realidad nos e como hacer un update para que me actualize el campo de este este registro.

La verdad no conozco muy bien como hacer funcionar los componentes TIBUpdateSql o mejor dicho no se cual utilizar y como utilizarlo.

No se si me doy a explicar bien o es muy vaga la información que les doy, de nuevo muchas gracias por su ayuda y quedo en espera de que me puedan colaborar como siempre..
Responder Con Cita
  #2  
Antiguo 28-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muestra el codigo que usas en el dobleclick y te acomodo esto.
Es realmente sencillo pero para no ser generico me gustaria trabajar sobre lo que tienes hecho.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 28-02-2012
yevabas yevabas is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 42
Poder: 0
yevabas Va por buen camino
Hola caral

Gracias por tu tiempo y por responder tan rapido, mira lo que tengo en el doble click es

Código Delphi [-]
procedure TForm1.GrdLoDiDblClick(Sender: TObject);
begin
     TbLoDi.Edit;

     Vedi := True;
     JvgPageControl1.ActivePage:= ts3;

end;

esto me lleva a otra pagina donde se encuentran los dbedit, entonces tengo lo siguiente

Código Delphi [-]
procedure TForm1.ts3Enter(Sender: TObject);
begin
       if Vedi then
         begin
            TbVentas.Insert;
      
            dbePIEDRAS2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('PIEDRA_NL').AsInteger);
            dbeTIPO_VE.Text := 'V';

      
            dbeCUAD2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('CUAD_NL').AsInteger);
            dbeREDO2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('REDO_NL').AsInteger);
            dbeOVAL2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('OVAL_NL').AsInteger);
            dbeLAGR2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('LAGR_NL').AsInteger);
            dbeCORA2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('CORA_NL').AsInteger);
            dbeCAUC2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('CAUC_NL').AsInteger);
            dbeDROP2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('DRP_NL').AsInteger);
            dbeOtr2.Text  := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('OTRAS_NL').AsInteger);
            dbeTPIED_VEN.Text :=IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('TPIED_NL').AsInteger);
            cbbLoDi.ItemIndex := cbbMoVe.ItemIndex;
            lbl77.Caption := cbbMoVe.Text;
            lbl78.Caption := cbbMoVe.Text;
            dbeMONED_VEN.Text := cbbMoVe.Text;
            dbeKilaC.Text := FloatToStr(GrdLoDi.DataSource.DataSet.FieldByName('KILATES_NL').AsFloat);
            dbeVAL_KIL1.Text:= FloatToStr(GrdLoDi.DataSource.DataSet.FieldByName('VAL_KIL_NL').AsFloat);
            dbeVAL_TO4.Text := FloatToStr(GrdLoDi.DataSource.DataSet.FieldByName('VAL_TO_NL').AsFloat);
      
         end;
end;

Aqui ya estan todos los campos que necesito pasar a los dbedit, la tabla lotes tambien tiene un campo autoincrementado, pero no lo necesito visualizar en el dbgrid,
Responder Con Cita
  #4  
Antiguo 28-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La verdad no veo el campo status por ningun lado, lo estas llamando diferente?.
El concepto es sencillo, al igual que le colocas el valor a los demas DBEdit lo haces con este otro, solo que ne vez de usar el dato del dataset usas un texto en este caso 'I'.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 28-02-2012
yevabas yevabas is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 42
Poder: 0
yevabas Va por buen camino
lo que pasa es que el campo status se encuentra en en la tabla lote, y aqui estoy llevando los campos a la tabla venta y en esta no tengo status solo esta en lote...
Imágenes Adjuntas
Tipo de Archivo: jpg 1.jpg (5,8 KB, 6 visitas)
Responder Con Cita
  #6  
Antiguo 28-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Entonces no se a donde quieres poner el dato si dices que es a un dbedit?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 28-02-2012
yevabas yevabas is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 42
Poder: 0
yevabas Va por buen camino
Dejame ver si me puedo hacer entender.

Tengo una tabla llamada Nlote, en esta tabla tiene los siguientes campos:

Código SQL [-]
CREATE TABLE NLOTE (
    ID_NL       INTEGER DEFAULT 0 NOT NULL,
    FECHA_NL    DATE NOT NULL,
    PIEDRA_NL   INTEGER NOT NULL,
    CUAD_NL     INTEGER NOT NULL,
    REDO_NL     INTEGER NOT NULL,
    CORA_NL     INTEGER NOT NULL,
    LAGR_NL     INTEGER NOT NULL,
    OVAL_NL     INTEGER NOT NULL,
    CAUC_NL     INTEGER NOT NULL,
    DRP_NL      INTEGER NOT NULL,
    OTRAS_NL    INTEGER NOT NULL,
    TPIED_NL    INTEGER NOT NULL,
    KILATES_NL  FLOAT NOT NULL,
    VAL_KIL_NL  FLOAT NOT NULL,
    VAL_TO_NL   FLOAT NOT NULL,
    STATUS      VARCHAR(1),
    MONED_NL    VARCHAR(5) NOT NULL,
    SOBRE       SMALLINT NOT NULL
);

y tengo otra tabla llamada ventas y tiene los siguientes campos:

Código SQL [-]
CREATE TABLE VENTAS (
    CONSEC_VEN   INTEGER NOT NULL,
    FECHA_VEN    DATE NOT NULL,
    PIEDRAS_VEN  INTEGER NOT NULL,
    CUAD_VEN     INTEGER NOT NULL,
    REDO_VEN     INTEGER NOT NULL,
    CORA_VEN     INTEGER NOT NULL,
    LARG_VEN     INTEGER NOT NULL,
    OVAL_VEN     INTEGER NOT NULL,
    CAUC_VEN     INTEGER NOT NULL,
    DROP_VEN     INTEGER NOT NULL,
    TPIED_VEN    INTEGER NOT NULL,
    KILATES_VEN  FLOAT NOT NULL,
    VAL_KIL_VEN  FLOAT NOT NULL,
    VAL_TO_VEN   FLOAT NOT NULL,
    COMPR        VARCHAR(40) NOT NULL,
    OTRAS_VEN    INTEGER NOT NULL,
    MONED_VEN    VARCHAR(5) NOT NULL,
    TIPO_VE      VARCHAR(1) NOT NULL
);


en la primera tabla se conforman un grupo de articulos y lleva en STATUS UNA 'A' que le puse para activo, que todavia se tiene, esto lo visualizo en el dbgrid, pero cuando le doy doble click sobre la la fila es que se vendio entonces paso todos los datos a los dbedit que apuntas a la tabla ventas y solo llevo los campos que me interesan, pero ahi en ese momento la tabla nlotes ese registro en su campo STATUS debe cambiar de 'A' a 'I', por decir algo.

Entonces debo editar la tabla nlotes y actualizar el campo STATUS de ese registro que le di doble click en el debgrid.

No si si quedo mas claro o todavia es confuso....


gracias....
Responder Con Cita
  #8  
Antiguo 28-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Actualizar la tabla LOTE:
Coloca un query en el form que actualiza, llamalo IBQueryTemp y añade el final del codigo a lo que tienes:

Código Delphi [-]
procedure TForm1.ts3Enter(Sender: TObject);
begin
       if Vedi then
         begin
            TbVentas.Insert;
      
            dbePIEDRAS2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('PIEDRA_NL').AsInteger);
            dbeTIPO_VE.Text := 'V';

      
            dbeCUAD2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('CUAD_NL').AsInteger);
            dbeREDO2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('REDO_NL').AsInteger);
            dbeOVAL2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('OVAL_NL').AsInteger);
            dbeLAGR2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('LAGR_NL').AsInteger);
            dbeCORA2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('CORA_NL').AsInteger);
            dbeCAUC2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('CAUC_NL').AsInteger);
            dbeDROP2.Text := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('DRP_NL').AsInteger);
            dbeOtr2.Text  := IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('OTRAS_NL').AsInteger);
            dbeTPIED_VEN.Text :=IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('TPIED_NL').AsInteger);
            cbbLoDi.ItemIndex := cbbMoVe.ItemIndex;
            lbl77.Caption := cbbMoVe.Text;
            lbl78.Caption := cbbMoVe.Text;
            dbeMONED_VEN.Text := cbbMoVe.Text;
            dbeKilaC.Text := FloatToStr(GrdLoDi.DataSource.DataSet.FieldByName('KILATES_NL').AsFloat);
            dbeVAL_KIL1.Text:= FloatToStr(GrdLoDi.DataSource.DataSet.FieldByName('VAL_KIL_NL').AsFloat);
            dbeVAL_TO4.Text := FloatToStr(GrdLoDi.DataSource.DataSet.FieldByName('VAL_TO_NL').AsFloat);
      
         end;
       // query que hace el update de status tabla LOTE
      IBQueryTemp.Sql.Text:= 'Update Lote set Status = ''I'' where ID = '+
                             IntToStr(GrdLoDi.DataSource.DataSet.FieldByName('ID').AsInteger);
      IBQueryTemp.ExecSQL;

end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 28-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Espero que vieras la siguiente respuesta que di, posteamos a la vez y no se si la viste.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 28-02-2012
yevabas yevabas is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 42
Poder: 0
yevabas Va por buen camino
Gracias Caral

Funciona muy bien, de nuevo muchas gracias por tu paciencia y tiempo.....
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
Update duplica registro FerCastro SQL 22 28-10-2008 19:21:05
deadlock update conflict with concurrent update! JuanErasmo Firebird e Interbase 6 10-07-2008 20:58:10
Update!!!, pero solo para un registro ELINK Firebird e Interbase 6 08-01-2008 20:26:41
UPDATE con seccion llamada UPDATE sql's MyDAC karlaoax SQL 4 25-04-2007 22:10:50
Update registro - fallo con variable Gorehide SQL 4 13-07-2004 19:12:32


La franja horaria es GMT +2. Ahora son las 22:30:57.


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