Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Borrar registro desde un Edit (https://www.clubdelphi.com/foros/showthread.php?t=81393)

giulichajari 09-11-2012 21:37:31

Borrar registro desde un Edit
 
Bueno, ahora necesito ayuda para borrar un registro de una tabla de Alumnos por DNI.
Lo que yo hice personalmente fue:
Primero realizar una consulta con un SELECT, para saber si el registroa eliminar existe y, luego de ser que exista un DELETE, quisiera saber por que me dice que hay pocos parametros se esperaba uno.

El codigo que tengo en el boton de Buscar es el siguiente:

Código SQL [-]
Query1->Close();
  Query1->SQL->Text = "SELECT DNI FROM ALUMNO WHERE ""DNI"" = :""PDNI""";
  Query1->ParamByName("PDNI")->AsString = Edit1->Text;
  Query1->Open();
  bool registrado = !Query1->IsEmpty();
  Query1->Close();
  if(registrado){
  AnsiString Consulta;
  Consulta="DELETE DNI, Cod_Localidad, Nombreyapellido from Alumno where DNI=Text";
  Query1->SQL->Clear();
  Query1->SQL->Add(Consulta);
  Query1->ExecSQL();
  MessageBox(Handle, "Los datos fueron borrados con exito",
    "AVISO", MB_ICONINFORMATION + MB_OK);
  }
   else
   {
     MessageBox(Handle, "El alumno no existe",
    "AVISO", MB_ICONINFORMATION + MB_OK);
     Table1->Cancel();
     }

Ademas tengo un DBGrid en el formulario, quisiera que se actualizara al entrar al mismo, lo puse para que se vean los alumnos registrados actualmente.
Tengo un TTable, un Query, y un DataSource.
Muchas gracias

ecfisa 09-11-2012 22:54:03

Hola.

Es incorrecta la sintáxis SQL de la sentencia de borrado.

Código:

void __fastcall TForm1::btnBorrarClick(TObject *Sender)
{
  Query1->Close();
  Query1->SQL->Text = "SELECT DNI FROM ALUMNO WHERE ""DNI"" = :""PDNI""";
  Query1->ParamByName("PDNI")->AsString = Trim(Edit1->Text);
  Query1->Open();
  if (!Query1->IsEmpty()) {
    Query1->Close();
    Query1->SQL->Text = "DELETE FROM ALUMNO WHERE ""DNI"" = :""PDNI""";
    Query1->ParamByName("PDNI")->AsString = Trim(Edit1->Text);
    Query1->ExecSQL();
    Table1->Refresh();  // (Si es que el DBGrid está conetado con Table1)
    MessageBox(Handle, "Los datos fueron borrados con exito",
    "AVISO", MB_ICONINFORMATION + MB_OK);
  } else
    MessageBox(Handle, "El alumno no existe","AVISO",
      MB_ICONINFORMATION + MB_OK);
}

Saludos.

jpgonzalez 20-11-2012 14:17:29

Cita:

Empezado por giulichajari (Mensaje 449116)
Bueno, ahora necesito ayuda para borrar un registro de una tabla de Alumnos por DNI.
Lo que yo hice personalmente fue:
Primero realizar una consulta con un SELECT, para saber si el registroa eliminar existe y, luego de ser que exista un DELETE, quisiera saber por que me dice que hay pocos parametros se esperaba uno.

El codigo que tengo en el boton de Buscar es el siguiente:

Código SQL [-]
Query1->Close();
  Query1->SQL->Text = "SELECT DNI FROM ALUMNO WHERE ""DNI"" = :""PDNI""";
  Query1->ParamByName("PDNI")->AsString = Edit1->Text;
  Query1->Open();
  bool registrado = !Query1->IsEmpty();
  Query1->Close();
  if(registrado){
  AnsiString Consulta;
  Consulta="DELETE DNI, Cod_Localidad, Nombreyapellido from Alumno where DNI=Text";
  Query1->SQL->Clear();
  Query1->SQL->Add(Consulta);
  Query1->ExecSQL();
  MessageBox(Handle, "Los datos fueron borrados con exito",
    "AVISO", MB_ICONINFORMATION + MB_OK);
  }
   else
   {
     MessageBox(Handle, "El alumno no existe",
    "AVISO", MB_ICONINFORMATION + MB_OK);
     Table1->Cancel();
     }

Ademas tengo un DBGrid en el formulario, quisiera que se actualizara al entrar al mismo, lo puse para que se vean los alumnos registrados actualmente.
Tengo un TTable, un Query, y un DataSource.
Muchas gracias

Tal como dice ecfisa, el delete borra la tupla entera de la tabla, es decir, la linea completa.
No puedes seleccionar que columnas borrar...
Para borrar la linea completa usas:
"DELETE FROM ALUMNO WHERE ""DNI"" = :""PDNI""";

Si lo que quieres es borrar los datos de alguna columna, pero dejar la fila en la BBDD tendiras que usar un UPDATE, seteando los campos que deseas borrar con algun valor por defecto.

Espero te haya servido.
Abrazo!


La franja horaria es GMT +2. Ahora son las 11:08:18.

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