Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Veo que estas haciendo esto

Código Delphi [-]
If xxxxx then
else
  xxxx

No necesitas el else, en el primer bloque haces lo que necesitas, lo que faltaba es un table1.Refresh después del for, para que veas los cambios de inmediato en el DBGrid.

Así quedaría

Código Delphi [-]
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  sQuery:String;
  I:Integer;
begin
  if DBGrid1.SelectedRows.Count > 0 begin
     with DBGrid1.DataSource.DataSet do begin
       for i := 0 to DBGrid1.SelectedRows.Count-1 do begin
           GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
           sQuery:= 'Update Fecha_venc Set Fecha_venc= :fecha Where Docto  = :docto';
           Query1.SQL.Add(sQuery);
           Query1.ParamByName('docto').AsString   := Query1.FieldByName('docto').AsString;
           Query1.ParamByName('fecha').AsDateTime := Query1.FieldByName('Fecha_Apli').AsDateTime + StrtoInt(Edit4.Text);
           Query1.ExecSQL;
       end;
       Table1.Refresh;
     end;
  end;
end;

Lo del table1 lo puse porque no se con que estas ligando el DBGrid.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #22  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Ya veo el problema, Caral, eres un analitico, resulta que Fecha es de tipo Date, por lo tanto lo que necesitamos es calcular la fecha de vencimiento y no los dias.

Bueno, pues veamos como se hace esto.

Tal vez cambiando esta linea

Código Delphi [-]
Query1.ParamByName('fecha').AsDateTime    := Table1.FieldByName('Sectores').AsDateTime + StrtoInt(Edit4.Text);

Prueba con eso y nos comentas por favor.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #23  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
Perdon pero insisto,
cuando hace el Query1.ExecSQL; me manda el menaje de:
'Invalid Use of Keyboar ' Token:Update
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
Responder Con Cita
  #24  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por jorelivi
Perdon pero insisto,
cuando hace el Query1.ExecSQL; me manda el menaje de:
'Invalid Use of Keyboar ' Token:Update
Pues que raro, hace rato vi que tenias algunas cosas raras en el codigo que posteaste, algo como class <kerword>, no se que pase, pero yo ya corri el código en una tabla ejemplo y funciona bien con el campo fecha

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #25  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Hay que ver el fondo del asunto:
El primer bloque dice que actualice la table con una sentencia sql que esta en sQuery, y ademas se le dice que la ejecute Query1.ExecSQL;
Vamos con el sengundo bloque:
Dice, de lo contrario: ELSE.
Use la misma variable sQuery y que ejecute denuevo.
La verdad no me parece logico o ejecuta o no.
Saludos
Responder Con Cita
  #26  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
Bueno, de cualquier manera sus conocimientos me ayudaron mucho, le agradezco y si ven algo nuevo, please me avisan.

Que tengan una buena tarde.


See you
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
Responder Con Cita
  #27  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por Caral
Hola
Hay que ver el fondo del asunto:
El primer bloque dice que actualice la table con una sentencia sql que esta en sQuery, y ademas se le dice que la ejecute Query1.ExecSQL;
Vamos con el sengundo bloque:
Dice, de lo contrario: ELSE.
Use la misma variable sQuery y que ejecute denuevo.
La verdad no me parece logico o ejecuta o no.
Saludos
Pues eso es lo que sobra, ya lo habia comentado.

Código Delphi [-]
 
// Todo lo que tengas que hacer
 If MessageDlg('Desea actualizar los registros',mtConfirmation,[mbYes,mBNo],0)= MrYes Then Begin       
   sQuery:='Update cuen01 Set Fecha_venc=Fecha_apli+ias Where 
   cclie=:cclie';
   Query1.Close;
   Query1.SQL.Clear;
   Query1.SQL.Add(sQuery);
   Query1.ParamByName('cclie').AsString:=Edit1.Text;
   Query1.ParamByName('dias').AsInteger:=StrtoInt(Edit4.Text);
   Query1.ExecSQL;
end;

Ese código esta de mas, no se requiere.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #28  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Para mi anda por aqui la cosa:
Código Delphi [-]
procedure TForm1.BitBtn2Click(Sender: TObject);
var 
I:Integer;
begin
    Query1.Close;
    Query1.SQL.Clear;
  if DBGrid1.SelectedRows.Count > 0 then begin
     with DBGrid1.DataSource.DataSet do begin
                   for i := 0 to DBGrid1.SelectedRows.Count-1 do begin
                       GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
                       Query1.SQL.Text:= 'Update Fecha_venc Set Fecha_venc= :fecha Where Docto  = :docto';
                    Query1.ParamByName('docto').AsString:=  Query1.FieldByName('docto').AsString;
                    Query1.ParamByName('fecha').AsDateTime:= Query1.FieldByName('Fecha_Apli').AsDateTime + StrtoInt(Edit4.Text);
                    Query1.ExecSQL;
                   end;
            end;
       end
    else
// Todo lo que tengas que hacer
   If MessageDlg('Desea actualizar los registros',mtConfirmation,[mbYes,mBNo],0)= MrYes Then Begin
       Query1.SQL.Text:= 'Update cuen01 Set Fecha_venc=Fecha_apli  +  : Dias  Where cclie= :cclie';
       Query1.ParamByName('cclie').AsString:= Edit1.Text;
       Query1.ParamByName('dias').AsInteger:= StrtoInt(Edit4.Text);
       Query1.ExecSQL;
    End;
End;
No se la verdad no me gusta el add. y veo muy repetido el codigo
Saludos
Responder Con Cita
  #29  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Yeap, Ahi esta el problema.

No es Query.SQL.Add(), debe ser Query.SQL.Text. Pero insisto no se requiere del else ya que si no selecciono registros no es necesario.

Bien mencionado Caral

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #30  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Gracias egostar,
Cita:
Bien mencionado Caral
viniendo de ti, me siento alagado.
Saludos Maestro.
Responder Con Cita
  #31  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
hola egostar and Caral, que tengan un bonito dia.

Sigo con mi problema para actualizar algunos datos, me tratare de explicar mejor:
Tengo UnDbGrid, el cual se actualiza por un Query1 esto me lo hace perfecto.
despues que me muestra los datos, quiero actualizar la fecha de vencimiento (FECHA_VENC) de acuerdo a la fecha de emicion (FECHA_APLI) mas los dias que sean (X), que se capturan en Edit4.TExt. mi pregunta es tengo que utilizar el mismo Query1 o tiene que ser otro y como lo hago?
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
Responder Con Cita
  #32  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Ahh

Ya veo

Entonces la respuesta a nuestra pregunta "Que usas para enlazar el DBGrid", es un Query.

Pues mi sugerencia es que uses otro query para realizar los cambios.

Del código que al final puso nuestro buen amigo Caral, Query1 debe ser el Query "nuevo" que será usado para la actualización.

Si tienes Query1 como el objeto que usas para enlazar al DBGrid, entonces cambialo por Query2 o el nombre que le pongas.

Solo necesitas agregar al final de la actualización:

Query1.Close;
Query1.Open;

Para que los cambios se vean reflejados en el DBGrid.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #33  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
Sorry egostar, este es mi codigo me ilustras por favor.
Son dos casos el for es para cuando selecciono del dbgrid que es donde esta el problema. El otro funciona bien que es cuando se quiere para todos los registros.

plese for your help me.

Código Delphi [-]
procedure TForm1.BitBtn2Click(Sender: TObject);
var sQuery, Querytrab:String;
var I:Integer;
begin
  if DBGrid1.SelectedRows.Count > 0 then begin
     with DBGrid1.DataSource.DataSet do begin
                   for i := 0 to DBGrid1.SelectedRows.Count-1 do begin
                       GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
                       QueryTrab:='Update cuen01 set Fecha_venc=Fecha_apli+:dias Where cclie= :cclie And Docto= :docto';
                       Query1.Close;
                       Query1.SQL.Clear;
                       Query1.SQL.Add(Querytrab);
                       Query1.ParamByName('docto').AsString:=  Query1.FieldByName('docto').AsString;
                       Query1.ParamByName('cclie').AsString:=Edit1.Text;
                       Query1.ParamByName('dias').AsInteger:=StrtoInt(Edit4.Text);
                       Query1.ExecSQL;
                   end;
{                   Label5.Caption:='oy es:'+DateTimetoStr(Now);
                   sQuery:='Select * from cuen01 where cclie=:cclie and tipo_mov=1';
                   Query1.Close;
                   Query1.SQL.Clear;
                   Query1.SQL.Add(sQuery);
                   Query1.ParamByName('cclie').AsString:=Edit1.Text;
                   Query1.Open;
                   Label2.Visible:=True;
                   Edit4.Visible:=True;
                   BitBtn2.Visible:=True;}
            end;
       end
    Else
   If MessageDlg('Desea actualizar los registros',mtConfirmation,[mbYes,mBNo],0)= MrYes Then Begin
       sQuery:='Update cuen01 Set Fecha_venc=Fecha_apli+ias Where cclie=:cclie';
       Query1.Close;
       Query1.SQL.Clear;
       Query1.SQL.Add(sQuery);
       Query1.ParamByName('cclie').AsString:=Edit1.Text;
       Query1.ParamByName('dias').AsInteger:=StrtoInt(Edit4.Text);
       Query1.ExecSQL;
    End;
end;
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
Responder Con Cita
  #34  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
No entiendo cual es tu problema, de hecho si lo hace bien en la segunda SENTENCIA SQL, deberia hacerlo igual en la primera.

Lo que veo diferente es que en una metes docto y en otra no.

Cual es el problema, te da error, no te actualiza?

En la propiedad Options del DBGrid debes de tener configurado dos cosas

dgRowSelect en True
dgMultiSelect en True

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #35  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
no me esta actualizando la fecha de vencimiento segun el codigo.

las opciones del dbgrid estan en TRUE las dos. y al actualizar me manda un mensaje de "List Index out of Bounds (1)"
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
Responder Con Cita
  #36  
Antiguo 27-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Creo ver el problema, como estas usando el mismo Query, se pierde la relación de los registros que estas seleccionando, yo te sugiero que uses otro Query para hacer la actualización, solo cambia en el código Query1 por Query2 o el nombre que tenga el nuevo Query.

Solo recuerda que después de actualizar, debes de cerrar y abrir el Query1 para que veas los cambios.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #37  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
Lo voy a intentar, sigo con ustedes y gracias.

Una duda como coloco una imagen para mi usuario y que se vea como los demas del foro. ??????
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
Responder Con Cita
  #38  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
HUiiiii esto si que es mas complicado que tu problema, tienes que pertenecer a un grupo selecto muy selecto de foristas........ES BROMA.
Solo editas tu perfil y buscas editar avatar en el pones la foto, es facil.
Saludos
Responder Con Cita
  #39  
Antiguo 27-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Segun entiendo el problema dices sigue estando en esta parte:
Código Delphi [-]
 QueryTrab:='Update cuen01 set Fecha_venc=Fecha_apli+:dias Where cclie= :cclie And Docto= :docto';
                       Query1.Close;
                       Query1.SQL.Clear;
                       Query1.SQL.Add(Querytrab);
                       Query1.ParamByName('docto').AsString:=  Query1.FieldByName('docto').AsString;
                       Query1.ParamByName('cclie').AsString:=Edit1.Text;
                       Query1.ParamByName('dias').AsInteger:=StrtoInt(Edit4.Text);
                       Query1.ExecSQL;
Me dices si me equivoco.?
Pra mi el problema esta aqui, si es asi, verdad:
Código Delphi [-]
Query1.ParamByName('docto').AsString:=  Query1.FieldByName('docto').AsString;
Se saca la informacion del mismo sitio donde se pide, es la misma, para mi curioso.
Saludos
Responder Con Cita
  #40  
Antiguo 27-04-2007
Avatar de jorelivi
jorelivi jorelivi is offline
Miembro
 
Registrado: abr 2007
Posts: 45
Poder: 0
jorelivi Va por buen camino
Siiipp, ese es el detalle y no se como hacerlo, me ayudan.
__________________
La sabiduría de los sabios y la experiencia de los siglos pueden ser conservadas con las citas.
Atte.
Jorelivi
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
actualizar un campo juangabriel1786 API de Windows 1 19-10-2006 19:30:55
¿cómo Actualizar Un Campo De Una Consulta En Un Dbgrid? dibe Conexión con bases de datos 2 07-09-2006 00:54:54
Actualizar CAMPO del registro seleccionado con DBGrid,TQUERY y UpdateSQL cronixxx Conexión con bases de datos 0 05-07-2005 23:33:05
Actualizar un campo segun opcion de picklist de otra columna de un dbgrid nefy Conexión con bases de datos 5 17-01-2004 20:11:34
Actualizar campo calculado de DBGrid Agar23 Varios 3 12-11-2003 08:27:36


La franja horaria es GMT +2. Ahora son las 11:34:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi