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 20-01-2006
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
problemas en un insercion en la base de datos

hola amigos tengo un problema al introducir un nuevo registro en una base de datos de access, este es el error que se produce en tiempo de ejecucion


no coinciden los tipos de datos en la espresion de criterios


eso se ocaciona cuando cuando agrego al codigo el procedimiento datachange, este es el codigo que tengo en ese procedimiento


Código Delphi [-]
begin
  inherited;
  if NOT  ADOQuery1.EOF
  then
    Begin
    // Recuperamos los valores del registro actual en los campos respectivos
  // le_id01.Text:=DataSource1.Fields[0].AsString;
    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;
   // bbModificar.Enabled := true;
    //bbEliminar.Enabled := true;
    End
  {else
  begin
    // Recuperamos los valores del registro actual en los campos respectivos
    edCodDocente.Text:= '';
    edNombres.Text:= '';
    edApPaterno.Text:= '';
    edApMaterno.Text := '';
    edDNI.Text := '';
    edDireccion.Text := '';
    edTelefono.Text := '';
    bbModificar.Enabled := false;
    bbEliminar.Enabled := false;
  end;}
end;

por favor es pido ayuda

Última edición por delphi.com.ar fecha: 20-01-2006 a las 18:51:15.
Responder Con Cita
  #2  
Antiguo 20-01-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Por casualidad... ¿Si comentas todo el evento no se produce el error de todos modos?
¿Cuál es la consulta del ADOQuery1?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 20-01-2006
alfil123 alfil123 is offline
Miembro
 
Registrado: nov 2005
Posts: 116
Poder: 19
alfil123 Va por buen camino
re

si comento todo el evento no se pruduce el error,


esta es la consulta para guardar

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.open;
  ADOQuery1.Append;
  // ADOQuery1.FieldByName('id_Docente').asstring:= LabeledEdit1.text;
ADOQuery1.FieldByName('Nombres').asString:= LabeledEdit2.text;
ADOQuery1.fieldbyname('ap').asString:= LabeledEdit3.text;
ADOQuery1.fieldbyname('am').asString:= LabeledEdit4.text;
ADOQuery1.fieldbyname('Dni').asstring:= LabeledEdit5.text;
ADOQuery1.fieldbyname('direccion').asString:= LabeledEdit6.text;
ADOQuery1.fieldbyname('telefono').asString:= LabeledEdit7.text;
ADOQuery1.fieldbyname('Especialidad').asString:= LabeledEdit8.text;
ADOQuery1.fieldbyname('Area').asString:= 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;

y esta es la consulta de creacion del form

Código Delphi [-]
procedure TMantenimiento_Docente.FormShow(Sender: TObject);
begin
  inherited;
ADOQuery1.close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.add('Select* from DOCENTE');
   ADOQuery1.Open;
end;
procedure TMantenimiento_Docente.Formcreate(Sender: TObject);
begin
  inherited;
ADOQuery1.close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.add('Select* from DOCENTE');
   ADOQuery1.Open;
end;
grasias por su tiempo

Última edición por delphi.com.ar fecha: 20-01-2006 a las 19:19:00. Razón: Agregué las etiquetas [DELPHI]
Responder Con Cita
  #4  
Antiguo 20-01-2006
Avatar de fabianbbg
fabianbbg fabianbbg is offline
Miembro
 
Registrado: ago 2003
Ubicación: Corrientes, Argentina
Posts: 80
Poder: 21
fabianbbg Va por buen camino
Hola:
Tengo dudas con tu aplicación: aver..
*¿Porque haces en el create del form y en el show lo mismo?
*¿No es redundante?

*Otra cosa:
cuando agregas un registro:
Código Delphi [-]
ADOQuery1.Close;
ADOQuery1.sql.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add('from Docente');
ADOQuery1.open;
  ADOQuery1.Append;
  // ADOQuery1.FieldByName('id_Docente').asstring:= LabeledEdit1.text;
ADOQuery1.FieldByName('Nombres').asString:= LabeledEdit2.text;
ADOQuery1.fieldbyname('ap').asString:= LabeledEdit3.text;
ADOQuery1.fieldbyname('am').asString:= LabeledEdit4.text;
ADOQuery1.fieldbyname('Dni').asstring:= LabeledEdit5.text;
ADOQuery1.fieldbyname('direccion').asString:= LabeledEdit6.text;
ADOQuery1.fieldbyname('telefono').asString:= LabeledEdit7.text;
ADOQuery1.fieldbyname('Especialidad').asString:= LabeledEdit8.text;
ADOQuery1.fieldbyname('Area').asString:= LabeledEdit9.text
    ADOQuery1.post;

No hace falta traer todos los registros solo para que el dataset tenga la estructura que necesitas para insertar.

Si queres insertar todo con SQL podes mandar dentro del SQL.text del TADOQuery la sentencia INSERT

Código Delphi [-]
ADOQuery1.sql,text:='INSERT INTO Docente (Nombres,ap,am,Dni,direccion,telefono,Especialidad,Area)
SELECT '+
quotedstr(LabeledEdit2.text)+ 'AS Expr1' //asi para todos los campos

Luego a ese Query lo ejecutas con ADOQuery.ExecSql

Ahora bien.. si no te gusta la idea y seguis con tu planteo, deberias revisar si no estas queriendo guardar un valor string (label.text) en un campo tipo numerico.

y ademas podrias probar asi

Código Delphi [-]

ADOQuery1.FieldByName('Nombres').Value:= LabeledEdit2.text;

por supuesto por cada campo..

bueno. Saludos..
__________________
desde Corrientes, Argentina..
Cuna del Libertador de America
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 con Base de Datos i_gauss C++ Builder 2 16-01-2006 11:02:50
Como conectar base de datos SQL SERVER con Delphi 5 olbeup Conexión con bases de datos 4 05-08-2005 14:38:45
Problemas al restaurar Base de Datos JMOTON Firebird e Interbase 1 25-02-2004 17:46:01
seleccion de base de datos sebas Conexión con bases de datos 2 12-07-2003 22:52:59
problemas con la base de datos superhopi Conexión con bases de datos 1 19-05-2003 09:47:58


La franja horaria es GMT +2. Ahora son las 10:03:10.


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