Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Actualizar Registros En Una Tabla Paradox (https://www.clubdelphi.com/foros/showthread.php?t=52126)

sdiaz1983 11-01-2008 04:59:50

Actualizar Registros En Una Tabla Paradox
 
Buen dia a todos, antes que nada queria agradecerles por la colaboracion a todas mis dudas que he formulado en varios temas, vengo a molestarlos uan vez mas con otra duda, pero antes quiero explicar que es lo que estoy haciendo:

Código Delphi [-]
procedure TFrmClientes.BtnConsultarClick(Sender: TObject);
begin
TblCliente.Active:=True;
QryCliente.SQL.Text:='select * from cliente where Cedula=:P1';
QryCliente.Params[0].AsString:=EdtCedula.Text;
QryCliente.RequestLive:=True;
QryCliente.Active:=True;
if (QryCliente.RecordCount>0) then
  begin
  LblNombre.Visible:=True;
  EdtNombre.Visible:=True;
  LblApellido.Visible:=True;
  EdtApellido.Visible:=True;
  LblDireccion.Visible:=True;
  EdtDireccion.Visible:=True;
  LblTelefono.Visible:=True;
  EdtTelefono.Visible:=True;
  BtGuardar.Visible:=False;
  BtBorrar.Visible:=True;
  BtEditar.Visible:=True;
  BtnConsultar.Visible:=False;
  EdtCedula.SetFocus;
  EdtCedula.Enabled:=False;
  end
else
  begin
  MessageDlg('REGISTRO NO EXISTE',mtError,[mbOk],0);
  end;
end;

En este segmento lo que hago es validar si el dato que ingreso en el campo cedula existe en la base de datos, si existe habilita unos objetos que ahi se muestran de lo contrario muestra el mensaje, esta validacion la hago con el objeto de poder actualizar un registro que ya existe en la tabla.

Ahora en este codigo:
Código Delphi [-]
 procedure TFrmClientes.BtEditarClick(Sender: TObject);
begin
EdtCedula.Text:='';
EdtNombre.Text:='';
EdtApellido.Text:='';
EdtDireccion.Text:='';
EdtTelefono.Text:='';
EdtNombre.SetFocus;
QryCliente.UpdateRecord;
QryCliente.Edit;
QryCliente.SQL.Text:='update cliente set Cedula:=P1 and Nombre:=P2 and Apellido:=P3 and Telefono:=P4 and Direccion:=P5';
QryCliente.Params[0].AsString:=EdtCedula.Text;
QryCliente.Params[1].AsString:=Edtnombre.Text;
QryCliente.Params[2].AsString:=EdtApellido.Text;
QryCliente.Params[3].AsString:=EdtTelefono.Text;
QryCliente.Params[4].AsString:=EdtDireccion.Text;
QryCliente.Post;
end;

Lo que trato de hacer es realizar una actualizacion aun registro que ya se encuentra en la tabla pero cuando doy click en el boton para que me ejecute el proceso me aparece un mensaje de error que me dice: "QryCliente: el Dataset no esta en modo insert o update(traduccion al español)", la pregunta que les queria plantear a ustedes es si tengo un error en el codigo, que tengo que corregir, ya que no se cual es el error.

Mil gracias por su ayuda.

mzell 11-01-2008 06:27:31

Hola sdiaz1983.

Segun lo que veo, estás combinando dos metodos diferentes para realizar la actualización.

Puedes probar actualizarlo en las siguientes formas:
(estoy asumiendo que los EditBox ya tienen valores asignados)

Forma 1 (Utilizando metodos de dataset):
Código Delphi [-]
procedure TFrmClientes.BtEditarClick(Sender: TObject);
begin
{...}
QryCliente.Edit;
QueryCliente.FieldByName('Cedula').value := EdtCedula.Text;
QueryCliente.FieldByName('Nombre').value := EdtNombre.Text;
QueryCliente.FieldByName('Apellido').value := EdtApellido.Text;
QueryCliente.FieldByName('Telefono').value := EdtTelefono.Text;
QueryCliente.FieldByName('Direccion').value := EdtDireccion.Text;
QryCliente.Post;


Forma 2 (Utilizando los metodos de Query)
Código Delphi [-]
procedure TFrmClientes.BtEditarClick(Sender: TObject);
begin
{...}
QryCliente.SQL.Text:='update cliente set Cedula:=P1 and Nombre:=P2 and Apellido:=P3 and Telefono:=P4 and Direccion:=P5';
QryCliente.Params[0].AsString:=EdtCedula.Text;
QryCliente.Params[1].AsString:=Edtnombre.Text;
QryCliente.Params[2].AsString:=EdtApellido.Text;
QryCliente.Params[3].AsString:=EdtTelefono.Text;
QryCliente.Params[4].AsString:=EdtDireccion.Text;
QryCliente.ExecSQL;
end;

Espero que sea útil esta sugerencia.
Hasta luego.

sdiaz1983 11-01-2008 14:54:31

con respecto a su ayuda
 
Buen dia.

De antemano Le agradezco por haber respondido mi duda, pero probe ambas alternativas, en una me bota un error con respecto a la sentencia
Código Delphi [-]
QryCliente.ExecSql;
que me dice que invalid use of keyword token, y con respecto al otro metodo el registro me lo elimina.

Una cosa que queria depronto complementar es que yo los datos los ingreso al formulario, los editbox no tienen valores preasignados sino que yo se los ingreso estando el programa en ejecucion, no se entonces si en algo cambia las sentencias que usted me explico anteriormente.

Mil gracias por su ayuda y estare pendiente de su respuesta.


La franja horaria es GMT +2. Ahora son las 21:25:10.

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