PDA

Ver la Versión Completa : Error al insertar registro.


giulichajari
09-11-2012, 09:08:59
Bueno estoy tratando (en un formulario Builder c++) con 3 TEdit insertar en los correspondientes campos de la Tabla, el codigo que puse en el boton listo(que deberia guardar los datos) es el siguiente.

bool registrado = false;
Table1->Open();
Table1->First();

while ((!Table1->Eof) && (!registrado)) {

if ( DNI->Text.ToInt() == (Alu_insertar->Table1->FieldByName("DNI")->AsInteger))

registrado=true;
else
Table1->Next();
}

//Query1->SQL->Add ("select * from Alumno where DNI like "+this->DNI->Text+"%");
if (registrado==true) {


MessageDlg ("Alumno ya registrado", mtInformation , TMsgDlgButtons()<<mbOK,0);
}
else
{

Table1->FieldByName("Nombreyapellido")->AsString = Nombre->Text;
Table1->FieldByName("DNI")->AsInteger= DNI->Text.ToInt();
Table1->FieldByName("Cod_localidad")->AsInteger=Localidad->Text.ToInt();

MessageDlg ("Los datos se registraron con exito", mtInformation , TMsgDlgButtons()<<mbOK,0);
}

Quisiera saber de algún manual que tenga las operaciones básicas de todo programa con sql
Altas
Bajas
Modificaciones
Como son las sentencias en SQL mas que nada, las he visto en Internet. Pero el problema quizas este en el Builder ya que la sintaxis puede estar mal.
Muchas gracias.

Casimiro Notevi
09-11-2012, 10:37:20
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

ecfisa
09-11-2012, 10:42:27
Hola giulichajari y bienvenido a Club Delphi :)

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Te aconsejo que cuando incluyas código lo encierres entre las etiquetas: aqui_tu_codigo , como verás en el que sigue debajo, le dá mayor legibilidad y seguramente obtendrás más respuestas.


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.

giulichajari
09-11-2012, 13:52:09
Voy a tener un examen en la universidad con altas bajas modificaciones y busqueda.:D
Gracias por tu ayuda.
Si llego a tener un problema en las bajas ¿creo otro hilo o lo coloco aca?

Casimiro Notevi
09-11-2012, 15:51:59
Si llego a tener un problema en las bajas ¿creo otro hilo o lo coloco aca?

Creo que no has leído nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) ;)
Preguntas distintas, hilos distintos.