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 30-03-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
ayuda con este procedimiento

tengo el siguiente procedimiento que cual se supone tendria que cargar los registros de una columna en un combo segun el numero de liitacion.

Código Delphi [-]
procedure llena_claves();
  var licitac: variant;
begin
     licitac:='00641321-030-09';//trim(fpropuestas.txtlicitacion.Text);
     with fmodulo.Q_licitac2 do
      begin
       sql.Clear;
       sql.Add('select * from requerimiento');
       sql.Add('where licitacion=:licit');
       Parameters.ParamByName('licit').Value:=Trim(licitac);
       try
         ExecSQL;
        while fmodulo.Q_licitac2.Eof do
          begin
            fpropuestas.cb_clave.Items.Add(fmodulo.Q_licitac2.Recordset.Fields['gpo'].value);
            fmodulo.Q_licitac2.Next;
            exit;
          end;
       except
         on E:EOleException do begin
         MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
        end;
      end;
      end;
end;

el problema es que me manda el siguiente error:

proyect fallo.exe raised exception class EAccesViolation with messaje 'Acces violation at
address 004c942b in module


y en pantalla me muestra este otro.

'Acces violation at
address 004c942b in module 'fallo.exe' Read Of address 000000


alguien tiene una idea del porque puede ser?

espero su ayuda muchas gracias
Responder Con Cita
  #2  
Antiguo 30-03-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Me tome algunas libertades y realize unas modificaciones...
1) Verifica que el formulario fPropuestas, ya este creado al momento de llamar a este procedimiento.
2) En vez de usar ExecSQL utiliza Open, las razones las coloque como comentario.

Eso por ahora, espero que de algo te sirva a solucionar el problema.

Código Delphi [-]
Procedure Llena_Claves(Licitac:String);
  var licitac: variant;
begin
     licitac:='00641321-030-09'; //trim(fpropuestas.txtlicitacion.Text);
     With fModulo.Q_licitac2 Do
     Begin
          Sql.Clear;
          Sql.Add('select * from requerimiento');
          Sql.Add('where licitacion=:licit');
          ParamByName('licit').Value:=Trim(Licitac);
          Try
             Open; //ExecSQL es utilizado para ejecutar sentencias sql que no retornan registros como por ejemplo INSERT, DELETE, UPDATE, CREATE TABLE...
             While Not Eof Do
             Begin
                 //Asegurate que el fpropuestas esta creado al llegar a esta linea...
                 fPropuestas.cb_clave.Items.Add(Fields['gpo'].value);
                 Next;
             End;
             Close;
          Except
             On E:EOleException Do
             Begin
                MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
             End;
          End;
     End;
end;
Responder Con Cita
  #3  
Antiguo 31-03-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
envio mensaje de error

hice las modificaciones que comentas sin embargo al ejecutar el programa me manda el sigueinte error:

[Error] f_propuestas.pas(110): Incompatible types: 'Integer' and 'String'


el campo de la base de datos es varchar de 30.


espero comentarios
Responder Con Cita
  #4  
Antiguo 31-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por microbiano Ver Mensaje
hice las modificaciones que comentas sin embargo al ejecutar el programa me manda el sigueinte error:

[Error] f_propuestas.pas(110): Incompatible types: 'Integer' and 'String'


el campo de la base de datos es varchar de 30.
Hola microbiano, debes indicarnos la línea de codigo donde te marca el error, yo supongo que es esta, cambia Value por AsString:

Código Delphi [-]
   fpropuestas.cb_clave.Items.Add(fmodulo.Q_licitac2.Recordset.Fields['gpo'].AsString);

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 31-03-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
gracias

efectivamente es el la siguiente linea que mencionas sin embargo al cambiar el value por AsString me sigue mostrando el mismo mensaje.
Responder Con Cita
  #6  
Antiguo 06-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Unhappy no he podido resolver el problema de este procedimiento

tengo el procedimiento que se supone tendria que cargar los datos en un combobox, para ello tengo el siguiente codigo.
Código Delphi [-]
procedure llena_claves();
  var licitac: variant;
begin
     licitac:='00641321-030-09'; //trim(fpropuestas.txtlicitacion.Text);
     With fModulo.Q_licitac2 Do
     Begin
          Sql.Clear;
          Sql.Add('select licitacion,gpo,gen,esp,dif,var from requerimiento');
          Sql.Add('where licitacion=:licit');
          Parameters.ParamByName('licit').Value:=Trim(Licitac);
          Try
             Open;
             While Not Eof Do
             Begin
                 fPropuestas.cb_clave.Items.Add(Fields['gpo'].Value);
                 Next;
             End;
             Close;
          Except
             On E:EOleException Do
             Begin
                MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
             End;
          End;
     End;

sin embargo al ejecutar el programa me muestra el siguiente error, en la linea de color rojo es decir:

fPropuestas.cb_clave.Items.Add(Fields['gpo'].Value); y este es el error:

[Error] f_propuestas.pas(109): Incompatible types: 'Integer' and 'String'

ya verifique y el tipo de dato de la tabla es varchar de 3, no entiendo por que el error alguien podria ayudarme.

ya intenten con

fPropuestas.cb_clave.Items.Add(Fields['gpo'].AsString);
fPropuestas.cb_clave.Items.Add(Fields['gpo'].asVariant);

pero nada funciona

Última edición por microbiano fecha: 06-04-2010 a las 17:01:50. Razón: aclarar el problema
Responder Con Cita
  #7  
Antiguo 06-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

El problema que veo es que en la linea que tienes con rojo debes poner el numero de columna y no el nombre , algo así:
Código Delphi [-]
...
While Not Eof Do
 Begin
  {La primer columna tiene indice cero(0),
  la segunda columna tiene indice uno (1)y asi sucesivamente,
  como se quiere cargar el campo "gpo" entonces hacemos asi:}
  fPropuestas.cb_clave.Items.Add(Fields[1].AsString);//se debe cargar como string y no como variant
  Next;
 End;
...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 06-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Talking ya lo solucione.

despues de tanto batallar el problema lo solucione de la siguiente manera por si alguna vez a alguien le puede ayudar este codigo:
Código Delphi [-]
procedure llena_claves();
  var licitac: variant;
begin
     licitac:=trim(fpropuestas.txtlicitacion.Text);
     With fModulo.Q_licitac2 Do
     Begin
          Sql.Clear;
          Sql.Add('select gpo,gen,esp,dif,var from requerimiento');
          Sql.Add('where licitacion=:licit');
          sql.Add('group by gpo,gen,esp,dif,var');
          Parameters.ParamByName('licit').Value:=Trim(Licitac);
          Try
             Open;
             While Not Eof Do
             Begin
                 fpropuestas.cb_clave.Items.Add((fieldByname('gpo').AsString) + ' ' + (fieldByname('gen').AsString) + ' ' + (fieldByname('esp').AsString)+ ' ' + (fieldByname('dif').AsString)+' '+(fieldByname('var').AsString));
                 Next;
             End;
             Close;
          Except
             On E:EOleException Do
             Begin
                MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
             End;
          End;
     End;

end;


Gracias a Todos los que dieron respuesta en su momento. alguien sabe como cerrar este hilo?
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
ayuda con este codigo kurono Varios 4 13-06-2008 01:03:29
porque no sirve este pequeño procedimiento?? Gaim2205 Varios 5 28-09-2007 23:25:17
procedimiento almacenado ayuda con este codigo pipecato Varios 5 16-12-2005 12:24:34
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
Ayuda con este error???? danytorres Varios 1 27-10-2004 11:38:09


La franja horaria es GMT +2. Ahora son las 17:44:55.


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