Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error al insertar registro. (https://www.clubdelphi.com/foros/showthread.php?t=81383)

giulichajari 09-11-2012 09:08:59

Error al insertar registro.
 
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 Noteví 09-11-2012 10:37:20

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

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



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.

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.

giulichajari 09-11-2012 13:52:09

Me anduvo bien.
 
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 Noteví 09-11-2012 15:51:59

Cita:

Empezado por giulichajari (Mensaje 449057)
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 ;)
Preguntas distintas, hilos distintos.


La franja horaria es GMT +2. Ahora son las 22:15: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