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-04-2014
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Modificar tabla

hola amigos del foro, estoy buscando ayuda. Quiero modificar todos los registros de una tabla con excepción del primer registro el uno he encontrado este código hace bien su trabajo lo que quiero es implementarlo para que no toque el primer registro y empiece ha modificar a partir del segundo registro
Código Delphi [-]
  with Query do
  begin
   SQL.Clear;
   SQL.Text := 'select * from Fechas order by IDFechas asc';
   Active := True;
    First;
     While Not Eof Do
     begin
      Open;
      Edit;
      FieldByName('Fecha').AsString := DateToStr(now);
      FieldByName('hora').AsString := TimeToStr(now);
      Post;
      Next;
    end;
  Active := False;
  end;
Responder Con Cita
  #2  
Antiguo 28-04-2014
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 wilcg, bienvenido a los foros de Club Delphi

Como es costumbre con los que se inician, te invitamos a que leas nuestra guía de estilo.

Del modo que mencionas sería:
Código Delphi [-]
  with Query do
  begin
    RequestLive:= True;
    SQL.Text := 'SELECT * FROM FECHAS';
    Open;
    Next; // saltar el primer registro
    // modificar el resto
    while not Eof do
    begin
      Edit;
      FieldByName('Fecha').AsDate:= Date;
      FieldByName('hora').AsTime:= Time;
      Next;
    end;
    Close;
  end;


Otra alternativa mas eficiente pero que puede variar dependiendo de la base de datos con que estas trabajando, es usar una sentencia SQL.
No lo mencionas pero pareciera que estas usando un TQuery (BDE) y si tenes declarado un campo auto incremental, llamémosle ID, podrías hacer por ejemplo:
Código Delphi [-]
  with Query do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE FECHAS SET FECHA = :PFECHA, HORA = :PHORA');
    SQL.Add('WHERE ID > (SELECT MIN(ID) FROM FECHAS)');
    ParamByName('PFECHA').AsDate:= Date;
    ParamByName('PHORA').AsTime:= Time;
    ExecSQL
  end;
Si tu motor de base de datos es otro, comentanos y vemos como se puede implementar en él.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-04-2014 a las 07:24:51. Razón: agregar comentario
Responder Con Cita
  #3  
Antiguo 28-04-2014
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Gracias ecfisa, por contestar le echare un vistaso a la guía. por otro lado la base de datos que uso es Firebird y ZeosLib para conectarme y la tabla si es autoincremental el campo ID es idfechas. con respecto a la segunda alternativa quisiera preguntarte,
En el caso de que sean más campos por ejemplo

Código SQL [-]
CREATE TABLE FECHAS
(
  IDFECHAS Integer NOT NULL,
  FECHA DATE,
  HORA TIME,
  CAMPO1 VARCHAR,
  CAMPO2 VARCHAR,
  CAMPO3 VARCHAR,
  CAMPO4 VARCHAR,
  ...
  PRIMARY KEY (IDFECHAS)
);

como haría la sentencia SQL, me interesa mucho por lo que dices que es la manera mas eficiente y también te pregunto por si en algún momento necesite hacer algo parecido, comento que soy nuevo en este campo de la programación pero me gusta no desaprovechar la oportunidad de aprender de los mejores, de los que saben.
Responder Con Cita
  #4  
Antiguo 28-04-2014
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 wilcg.
Cita:
Empezado por wilcg Ver Mensaje
...
con respecto a la segunda alternativa quisiera preguntarte,
En el caso de que sean más campos por ejemplo

Código SQL [-]
CREATE TABLE FECHAS
(
  IDFECHAS Integer NOT NULL,
  FECHA DATE,
  HORA TIME,
  CAMPO1 VARCHAR,
  CAMPO2 VARCHAR,
  CAMPO3 VARCHAR,
  CAMPO4 VARCHAR,
  ...
  PRIMARY KEY (IDFECHAS)
);
como haría la sentencia SQL, ...
La sintáxis es simple, sólo tenes que ir agregando las columnas que te interese modificar, ejemplo para la tabla superior:
Código SQL [-]
UPDATE FECHAS SET FECHA = :PFECHA, HORA = :PHORA, CAMPO1 = :CP1, CAMPO2 = :CP2, 
  CAMPO3 = :CP3, CAMPO4 = :CP4,  ...
WHERE ALGUNA_CONDICION  /*(Omite esta línea si deseas modificar todos los registros) */

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
Modificar registro de una tabla alcides SQL 7 09-11-2010 20:06:13
modificar una tabla filtrada marcos_0586 Varios 10 17-08-2010 23:18:59
error al modificar una Tabla metroyd SQL 3 03-04-2008 18:04:07
Modificar una tabla dbf hecha en fox pro DenisDiaz Varios 7 13-09-2007 14:25:36
Tabla a excel modificar y guardar en la tabla jgutti Servers 1 06-09-2004 16:20:49


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


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