Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   guardar dato siempre en el mismo registro (https://www.clubdelphi.com/foros/showthread.php?t=77008)

lucas05 13-12-2011 17:18:14

guardar dato siempre en el mismo registro
 
Hola, tengo una tablaA con dos campos ta_id y ta_valor.
Esta tabla posee un unico regitro, cuyo campo ta_valor va a ser modificado constantemente.
Como puedo hacer para que vez que ingreso un valor en un edit, este se guarde siempre en ese único
registro (en el campo ta_valor).
Lo que intento hacer es reescribir simpre el mismo registro
Estoy usando un edit1,button1 y adoquery1

Espero haber sido claro.

Muchas Gracias

TiammatMX 13-12-2011 17:24:51

Cita:

Empezado por lucas05 (Mensaje 421045)
Hola, tengo una tablaA con dos campos ta_id y ta_valor.
Esta tabla posee un unico regitro, cuyo campo ta_valor va a ser modificado constantemente.
Como puedo hacer para que vez que ingreso un valor en un edit, este se guarde siempre en ese único
registro (en el campo ta_valor).
Lo que intento hacer es reescribir simpre el mismo registro
Estoy usando un edit1,button1 y adoquery1

Espero haber sido claro.

Muchas Gracias

Utiliza la sentencia SQL "Update", es lo único que debes hacer.

Código SQL [-]
Update TuTabla Set Campo1 = 'xxx', Campo2 = 2, ... CampoN = 'N' Where CampoLlave = TuLlave;

lucas05 13-12-2011 18:54:09

Hola, gracias por responder, use el siguiente código, pero cuando lo compilo da error.
Código Delphi [-]
ADOQuery1.Close;
ADOQuery1.SQL.Add('Update tablaA');
ADOQuery1.SQL.Add('Set ta_valor= '+FloatToStr(Edit1.Text));//Aqui da error al compilar
ADOQuery1.SQL.Add('where ta_id=1');
ADOQuery1.ExecSQL;

Podrían decirme cual es el error.

Muchas Gracias.

microbiano 13-12-2011 19:14:03

que error te muestra

newtron 13-12-2011 19:16:47

Bueno, no dices qué error te da pero en principio no puedes hacer un FloatToStr de un valor tipo string así que tendrías que poner lo siguiente:

Código Delphi [-]
ADOQuery1.SQL.Add('Set ta_valor= '+Edit1.Text);

teniendo en cuenta que el valor que tengas en Edit1 no tenga comas de miles y valor decimal sea un punto.

Saludos

gluglu 13-12-2011 19:17:42

Pues le va a mostrar un error tal que diciendo que no se puede convertir un texto desde Float a String

Código Delphi [-]
FloatToStr(Edit1.Text))/

Edit1.Text es de tipo String (Texto, tal y como la propia propiedad lo indica .text) y está intentanto utilizar una función FloatToStr, que como parámetro espera un dato del Tipo Float (es decir un número decimal).

:rolleyes:

newtron 13-12-2011 19:23:20

Cita:

Empezado por gluglu (Mensaje 421059)
Pues le va a mostrar un error....

Pandilla de buitres.... para una que puedo contestar yo me la queréis quitar. :p

lucas05 13-12-2011 19:58:40

Hola, estoy intentando otra manera, no se si esta bien
Código Delphi [-]
ADOQuery1.Close;
ADOQuery1.SQL.Add('Update tablaA');
ADOQuery1.SQL.Add('Set ta_valor=: ');//Aquí no entiendo que debo asignarle a Set
ADOQuery1.SQL.Add('Where ta_id=:1');
ADOQuery1.FieldByName('ta_valor').AsInteger:=StrToInt(Edit1.Text);//Necesito esta linea para guardar los cambios?
ADOQuery1.Open;




Muchas Gracias.

microbiano 13-12-2011 20:20:26

haber haber como que no entiendes que asignarle al set?, creo que primero deberiamos pasar por un manual de sql jejejejeje.


yo lo hago asi espero te sirva.

Código Delphi [-]
with Form_modulo.Qry_Temp do
              begin
                SQL.Clear;
                SQL.Add('update agenda set tipo=:Ptipo');
                SQL.Add(',unidadcompradora=:Punidad');
                SQL.Add(',descripcion=:Pdescripcion');
                SQL.Add(',DePreconvocatoria=:Pdepreconv');
                SQL.Add(',HastaPreconvocatoria=:PHastaPreconvocatoria');
                SQL.Add(',Repcepcion=:PRepcepcion');
                SQL.Add(',RecepcionHora=:PRecepcionHora');
                SQL.Add(',Fallo=:PFallo');
                SQL.Add(',FalloHora=:PFalloHora');
                SQL.Add(',Ejercicio=:PEjercicio');
                SQL.Add(',status=:Pstatus');
                SQL.Add(',Claves=:PClaves');
                SQL.Add(',Importe=:PImporte');
                sql.Add('Where id=:Pid');
                Parameters.ParamByName('Ptipo').Value:=self.cbb_tipo.ItemIndex;
                Parameters.ParamByName('Punidad').Value:=Self.txtunidad.Text;
                Parameters.ParamByName('Pdescripcion').Value:=Trim(Self.txtnotas.Text);
                Parameters.ParamByName('Pdepreconv').value:=int(Self.dtpFechaPreIni.Date);
                Parameters.ParamByName('PHastaPreconvocatoria').Value:=int(self.dtpFechaPreFin.Date);
                Parameters.ParamByName('PRepcepcion').Value:=Int(self.dtpFecharecp.Date);
                Parameters.ParamByName('PRecepcionHora').Value:=timetostr(self.dtpHoraRecep.Time);
                Parameters.ParamByName('PFallo').Value:=Int(self.dtpFechaFallo.Date);
                Parameters.ParamByName('PFalloHora').Value:=TimeToStr(self.dtpHoraFallo.Time);
                Parameters.ParamByName('PEjercicio').Value:=Trim(Self.txtejercicio.Text);
                Parameters.ParamByName('PStatus').Value:=Self.cbb1.Text;
                Parameters.ParamByName('PClaves').Value:=Int(Self.txtclaves.Value);
                Parameters.ParamByName('PImporte').Value:=Self.txtimporte.Value;
                Parameters.ParamByName('Pid').Value:=Self.widentificador;
                try
                  ExecSQL;
                  Application.MessageBox('Las Modificaciones se Realizarón Exitosamente en la Adjudicación',PChar(Application.Title), MB_OK + MB_ICONINFORMATION);
                  limpiar;
                  botones(0);
                  Exit;
                except
                  on e:EOleException do
                    begin
                      MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
                      Exit;
                    end;  
                end;

              end;

adaptalo a lo que necesitas

olbeup 13-12-2011 20:53:35

Cita:

Empezado por lucas05 (Mensaje 421053)
Hola, gracias por responder, use el siguiente código, pero cuando lo compilo da error.
Código Delphi [-]
ADOQuery1.Close;
ADOQuery1.SQL.Add('Update tablaA');
ADOQuery1.SQL.Add('Set ta_valor= '+FloatToStr(Edit1.Text));//Aqui da error al compilar
ADOQuery1.SQL.Add('where ta_id=1');
ADOQuery1.ExecSQL;

Podrían decirme cual es el error.

Muchas Gracias.

Si es un único registro, el WHERE sobra, ya que va actualizar sólo un registro siempre y cuando exista algún registro.

Sobre que te da error en
Cita:

ADOQuery1.SQL.Add('Set ta_valor= '+FloatToStr(Edit1.Text));//Aqui da error al compilar
Lo de convertir un Float a String, pues va ser que no cómo dice gluglu.
También depende que el campo ta_valor sea de tipo decimal si es así, prueba con esto:
Código Delphi [-]
...
var
  S: String;
  X: Extended;
begin
  X := StrToFloat(Edit1.Txt);
  Str(X:0:3, S);
  with ADOQuery1 do
  begin
    Close;
    SQL.Add('UPDATE TablaA');
    SQL.Add('  SET TA_VALOR = ' + S);
    ExecSQL;
  end;
end;

Si tienes que escribir siempre en la TablaA, añade a la TablaA tantos campos cómo datos diferentes pidas, guardándolos en su campo correspondiente para después recuperarlos.

Un Saludo.

ecfisa 14-12-2011 14:09:06

Hola.

Para este caso en especial, otra forma puede ser:
Código Delphi [-]
var
  v: Double;
begin
  if TryStrToFloat(Edit1.Text, v) then
    with ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE TABLA');
      SQL.Add('SET TA_VALOR = :VALOR');
      Parameters.ParamByName('VALOR').Value:= Edit1.Text;
      ExecSQL;
    end
  else
    raise Exception.Create('El valor ingresado no es un numero válido');
end;
Aunque siempre utilizo try/except como suguiere microbiano.

Saludos.

TiammatMX 14-12-2011 16:40:27

Cita:

Empezado por olbeup (Mensaje 421068)
Si es un único registro, el WHERE sobra, ya que va actualizar sólo un registro siempre y cuando exista algún registro.

Yo estaba dando la estructura de la sentencia, no la solución. Perdón si se mal entendió.


La franja horaria es GMT +2. Ahora son las 09:23:25.

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