Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al eliminar un registro (https://www.clubdelphi.com/foros/showthread.php?t=67567)

bothy 23-04-2010 09:47:06

Error al eliminar un registro
 
hola colegas.
tengo un problemita al eliminar un registro tengo este codigo
Código Delphi [-]
 db.Active :=true;
    db.Delete ;
  db.FieldByName('admin').AsString :=edit3.Text;
  db.FieldByName('pass').AsString :=edit4.Text  ;
  db.Post ;
  db.Cancel;
  application.MessageBox(pchar('Administrador Eliminado'),
      pchar('BIBLIOTECA MOCHICAHUI'), (MB_OK + MB_ICONWARNING));
y me tira este error
Cita:

raised exception class EIBClientError with message'NOt in edit mode'
segun yo el codigo esta bien y me debe eliminar el registro que esta en el
edit3 y edit4 pero no me lo elimina.
tambien tengo este codigo para inserter y modificar
codigo modificar
Código Delphi [-]
db.Active :=true;
  db.Edit ;
  db.FieldByName('admin').AsString :=edit3.Text;
  db.FieldByName('pass').AsString :=edit4.Text ;
  db.Post ;
  db.Cancel;
  application.MessageBox(pchar('Administrador Modificado'),
      pchar('BIBLIOTECA MOCHICAHUI'), (MB_OK + MB_ICONWARNING));
codigo insertar
Código Delphi [-]
db.Active :=true;
db.Append ;
db.FieldByName('admin').AsString :=edit3.Text;
db.FieldByName('pass').AsString :=edit4.Text ;
db.Post ;
     application.MessageBox(pchar('Administrador Registrado'),
      pchar('BIBLIOTECA MOCHICAHUI'), (MB_OK + MB_ICONWARNING));
       db.Cancel ;
de antemano gracias por su ayuda

mcs 23-04-2010 10:31:00

Es normal que no te funcione.

El pseudo-codigo para borrar borrar un registro es este:
- Abrir la base de datos
- Abrir la tabla
- Buscar el registro a borrar
- Borrar el registro
- Cerrar la tabla
- Cerrar la base de datos

Por lo que entiendo, lo que tu haces es:
- Abrir la base de datos
- Abrir la tabla (db.Active:=true)
- Borrar el registro (db.Delete)
- Buscar el registro a borrar (db.FieldByName('admin').asString:=edit3.text y db.FieldByName('pass').asString:=edit4.text)
- Guardar los cambios (db.Post)

Como puedes ver, no es exactamente lo mismo...

Saludos,

Marc

Neftali [Germán.Estévez] 23-04-2010 10:51:06

Creo que para hacer un Delete no necesitas hacer el Post.
Posicionate en el registro a eliminar y realiza el Delete.

bothy 25-04-2010 01:16:55

Hola colega muchas gracias por su tiempo y por ayudarme..

me podrian ayudar ya que hago el codigo como dijo mcs
El pseudo-codigo para borrar borrar un registro es este:
- Abrir la base de datos
- Abrir la tabla
- Buscar el registro a borrar
- Borrar el registro
- Cerrar la tabla
- Cerrar la base de datos
y me tira el mismo error
Código Delphi [-]
 db.Active :=true;
  db.Open ;

  db.FieldByName('admin').AsString :=edit3.Text;
  db.FieldByName('pass').AsString :=edit4.Text  ;
  db.Delete ;
  db.Cancel;
  db.Active :=true;

Casimiro Notevi 25-04-2010 01:49:10

No, amigo, no haces lo que dices, fíjate:
Código Delphi [-]
db.Active :=true;  <-  abres ¿la base de datos?
db.Open ;            <-  abres ¿la tabla?  como tienen el mismo nombre... ¿no se sabe qué es?
db.FieldByName('admin').AsString :=edit3.Text;   <- asignas un valor al campo admin
db.FieldByName('pass').AsString :=edit4.Text  ;    <- asignas un valor al campo pass
db.Delete ;  <- borras el registro donde estás posicionado (no has buscado nada)
db.Cancel;  <-  cancelas ¿el qué?
db.Active :=true;   <- cierras ¿la base de datos?

Evidentemente, no haces ni parecido a lo que te han sugerido que debe hacerse:
- Abrir la base de datos
- Abrir la tabla
- Buscar el registro a borrar
- Borrar el registro
- Cerrar la tabla
- Cerrar la base de datos

Caral 25-04-2010 01:56:14

Hola
Registro........?, no campo......?
Saludos

Caral 25-04-2010 02:25:49

Hola
Veamos:
Se supone que tienes un registro en una tabla que contiene los campos admin y pass.
No se puede eliminar un registro con el mismo query que hace la consulta.
Lo que puedes hacer es si quieres usar el mismo query, crearle otra sentencia sql para que haga el delete COMPLETO del registro.
Algo asi:
Código Delphi [-]
  db.Active :=false;
  db.Sql.Text:= 'Delete * from TUTABLA where admin = :A And pass = :B';
  db.Parameters[0].Value:= edit3.text;
  db.Parameters[1].Value:= edit4.text;
  db.ExecSQL;
  db.Active :=false;
  db.Active :=True;
Saludos

bothy 25-04-2010 03:49:36

hola caral muchas gracias
estaba utilizando el mismo query
ya solucione el problema gracias colegas por su tiempo:)

Caral 25-04-2010 03:52:51

Hola
Y como lo hiciste?.
Aparentemente usaste otro query, pero que hiciste, que código usaste?
Recuerda que los hilos los ven otros y es bueno que sepan como lo resolviste.
Saludos

bothy 27-04-2010 10:04:18

hola amigos disculpen pero a qui estoy de buelta muchas gracias a la gente del foro que nos ayudan a nosotros los nobatos..

aqui esta el codigo puse otro query como lo dijo caral
Código Delphi [-]
  q2.Active :=close;
  q2.Sql.Text:= 'Delete * from administradores Values(:A,:B)';
  q2.ParamByName('A').AsString :=EDIT3.Text ;
  q2.ParamByName('B').AsString :=EDIT4.Text ;
  q2.ExecSQL;

bothy 27-04-2010 10:06:01

disculpen mi error el codigo es este
Código Delphi [-]
q2.close;
  q2.Sql.Text:= 'Delete * from administradores Values(:A,:B)';
  q2.ParamByName('A').AsString :=EDIT3.Text ;
  q2.ParamByName('B').AsString :=EDIT4.Text ;
  q2.ExecSQL;


La franja horaria es GMT +2. Ahora son las 04:44:19.

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