Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-01-2006
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
problemas en un insercion de un nuevo registros

Hola amigos, no puedo insertar un nuevo registro

Código Delphi [-]
procedure TMantenimiento_Docente.ToolButton2Click(Sender: TObject);
begin
  inherited;
  if (LabeledEdit2.text='') or (LabeledEdit3.text='')
    or (LabeledEdit4.text='') or (LabeledEdit5.text='')
      or (LabeledEdit6.text='') or (LabeledEdit7.text='')
        or (LabeledEdit8.text='')or (LabeledEdit9.text='')
  then
  begin
    showmessage('le falta completar los campos');
    exit;
  end;
  ADOQuery1.Close;
  ADOQuery1.sql.Clear;
  ADOQuery1.SQL.Add('select *');
  ADOQuery1.SQL.Add('from Docente');
  //ADOQuery1.SQL.Add('where id_Docente="'+ le_id01.text +'"');
  ADOQuery1.open;
  ADOQuery1.Append;
  // ADOQuery1.FieldByName('id_Docente').asstring:= LabeledEdit1.text;
  //ADOQuery1.FieldByName('Nombres').value:= LabeledEdit2.text;
  ADOQuery1.fieldbyname('ap').value:= LabeledEdit3.text;
  ADOQuery1.fieldbyname('am').value:= LabeledEdit4.text;
  ADOQuery1.fieldbyname('Dni').value:= LabeledEdit5.text;
  ADOQuery1.fieldbyname('direccion').value:= LabeledEdit6.text;
  ADOQuery1.fieldbyname('telefono').value:= LabeledEdit7.text;
  ADOQuery1.fieldbyname('Especialidad').value:= LabeledEdit8.text;
  ADOQuery1.fieldbyname('Area').value:= LabeledEdit9.text;
  ADOQuery1.post;
  ADOQuery1.close;
  LabeledEdit2.text:='';
  LabeledEdit3.text:='';
  LabeledEdit4.text:='';
  LabeledEdit5.text:='';
  LabeledEdit6.text:='';
  LabeledEdit7.text:='';
  LabeledEdit8.text:='';
  LabeledEdit9.text:='';
  showmessage('sea agregado un nuevo docente ');
end;

la linea en la que se produce el error en " ADOQuery1.post; "pero cuando no activo el evento DataChange, se puede introdusir sin ningun problema, este es el procedimiento del data change

Código Delphi [-]
procedure TMantenimiento_Docente.DataSource1DataChange(Sender:
  TObject; Field: TField);
begin
  inherited;
  if NOT ADOQuery1.EOF then
  Begin
    // Recuperamos los valores del registro actual en los campos respectivos
    le_id01.Text:=ADOQuery1.FieldByName('id_docente').Value;
    LabeledEdit2.Text:=ADOQuery1.FieldByName('Nombres').Value;
    LabeledEdit3.Text:=ADOQuery1.FieldByName('Ap').Value;
    LabeledEdit4.Text := ADOQuery1.FieldByName('AM').Value;
    LabeledEdit5.Text := ADOQuery1.FieldByName('DNI').Value;
    LabeledEdit6.Text := ADOQuery1.FieldByName('Direccion').Value;
    LabeledEdit7.Text := ADOQuery1.FieldByName('Telefono').Value;
    LabeledEdit8.Text := ADOQuery1.FieldByName('Especialidad').Value;
    LabeledEdit9.Text := ADOQuery1.FieldByName('Area').Value;
    // bbModificar.Enabled := true;
    //bbEliminar.Enabled := true;
  End
  else
  begin
    // Recuperamos los valores del registro actual en los campos respectivos
    le_id01.Clear;
    LabeledEdit2.Clear;
    LabeledEdit3.Clear;
    LabeledEdit4.Clear;
    LabeledEdit5.Clear;
    LabeledEdit6.Clear;
    LabeledEdit7.Clear;
    LabeledEdit8.Clear;
    ToolButton2.Enabled:=true;
    SpeedButton8.Enabled:=false;
  end;
end;

porfavor ayudenme ya me estan por estrangular aqui.

Última edición por dec fecha: 24-01-2006 a las 20:30:30.
Responder Con Cita
  #2  
Antiguo 24-01-2006
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
el mensaje de error es
"el campo docente.ap no puede ser una cadena de longitud cero"
Responder Con Cita
  #3  
Antiguo 25-01-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Hola Alfil123, creo que lo que pasa ahi es lo siguiente: el evento DataChange se va a llamar cuando le asignes un valor a cualquier campo, lo que quiere decir que al tratar de asignar al primer campo (docente.ap) el evento se va a disparar. Lo siguiente que va a pasar es que va a entrar en el condicional:
Código Delphi [-]
if NOT ADOQuery1.EOF then
ADOQuery1.EOF será igual a true porque estas insertando con la función append que te crea un registro vacio al final. Por consiguiente creo que se ejecutará el bloque:
Código Delphi [-]
...
else
  begin
  le_id01.Clear;
  LabeledEdit2.Clear;
  LabeledEdit3.Clear;
  LabeledEdit4.Clear;
  LabeledEdit5.Clear;
  ...
  end;
y al tratar de continuar asignando campos la rutina se encontrará que los LabeledEdit estan limpios.

Prueba poner ese código en algun otro evento, como por ejemplo en el evento AfterPost. Saludos.
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas en insercion de registros ilichhernandez Conexión con bases de datos 6 02-11-2005 10:00:57
Problemas con actualiazción de registros en Ttable delphi5 vick Conexión con bases de datos 1 13-10-2005 22:04:29
Seleccionar registros en una tabla, envio, e insercion en otra tabla!! EfrainSanmiguel Conexión con bases de datos 3 21-10-2004 01:12:43
Limitar Insercion de registros version prueba FernanGil Varios 4 01-10-2003 20:35:31
Problemas con inserción, !!Extraño¡¡ mosorio Conexión con bases de datos 0 24-05-2003 17:39:16


La franja horaria es GMT +2. Ahora son las 05:17:02.


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
Copyright 1996-2007 Club Delphi