Hola
giulichajari y bienvenido a Club Delphi
Como a todos los que se inician te invitamos a que leas nuestra
guía de estilo.
Te aconsejo que cuando incluyas código lo encierres entre las etiquetas:[code] aqui_tu_codigo [/code], como verás en el que sigue debajo, le dá mayor legibilidad y seguramente obtendrás más respuestas.
Código:
void __fastcall TForm1::btnListoClick(TObject *Sender)
{
Query1->Close();
Query1->SQL->Text = "SELECT DNI FROM ALUMNO WHERE ""DNI"" = :""PDNI""";
Query1->ParamByName("PDNI")->AsString = DNI->Text;
Query1->Open();
bool registrado = !Query1->IsEmpty();
Query1->Close();
if(registrado)
MessageBox(Handle,"Error: Alumno ya registrado", "", MB_ICONERROR + MB_OK);
else {
try {
Table1->Append(); // Añadir nuevo registro
Table1->FieldByName("Nombreyapellido")->AsString = Nombre->Text;
Table1->FieldByName("DNI")->AsInteger= DNI->Text.ToInt();
Table1->FieldByName("Cod_localidad")->AsInteger=Localidad->Text.ToInt();
Table1->Post(); // Guardar cambios
MessageBox(Handle, "Los datos se registraron con exito",
"AVISO", MB_ICONINFORMATION + MB_OK);
} catch (const Exception & E) {
MessageBox(Handle,
AnsiString(AnsiString(E.ClassName()) + ": " +E.Message).c_str(),
"ERROR", MB_ICONERROR + MB_OK);
Table1->Cancel();
}
}
}
Veo que estas usando
TTable y
TQuery, te comento que la sintáxis de este último exige que dentrol de la sentencia SQL, se encierren entre comillas los nombres de campo y parámetro ("DNI" y "PDNI").
Saludos.