Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2007
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Unhappy Project Project1.exe raised exeption....

Hola soy un programador junior estoy aciendo una AMB donde tengo que filtrar unos datos de una base de datos PostgresSQL.
La From y los componentes estan pero a la hORA de filtrar salta un error que dice: "Project Project1.exe raised exeption class EAccessViolation with message 'access violation at address 52BBEA3C in module' dbexpress100.bpl' read of address 00000094"",el dato con una funcion hecha por un compañero (esta funcion ya funciona en otros programas y sirve para conectarce al la bd) pero es en un if de esta funcion donde el programa no acepta y salta este error esta condicion dice: "if BaseDatosFB.InTransaction then". Ahhh. olvide mencionar que el error salta al precionar el boton que hace la consulta en el momento que llega a la condicion "if" ya mencionada. Ya mire mi select luego de precionar el boton del query y esta perfecto sin
ningun.
por favor si alguna vez te sucedio algo semegante comentalo que ya no aguanto esta impotencia que ciento
Responder Con Cita
  #2  
Antiguo 14-03-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

"Lo repetiré hasta que se me entienda". Las "violaciones de acceso a memoria" se producen porque se trata de acceder a la instancia de un objeto que aún no ha sido creado y/o cuando se trata de acceder a la instancia de un objeto que ya fue liberado. Tendrás que situar algún que otro punto de ruptura en tu código, echar un vistazo para ver a qué objetos se están accediendo, si se está llamando a algún método de alguno, etc.

Es muy probable que el problema no esté en la consulta SQL propiamente dicha, en tu caso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 14-03-2007
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Question Y como LO soluciono??¿?

Ok. como soluciono ese problema. Una duda estoy usando un combobox esto puede afectar en algo. MUchAs gracias Por responder te voy a gradecer mas si lo vuelves a hacer y a las personas que lo haran.
PD: Perdon por la ignorancia con delphi pero hace 1.5 meses que comense a utilizarlo y es el primer lenguage orientado a objetos que estoy usando.
Responder Con Cita
  #4  
Antiguo 14-03-2007
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
a me olvidaba

la consulta sql esta perfecta la comprove con un showmessage
Responder Con Cita
  #5  
Antiguo 14-03-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Ignorantes somos todos en un momento dado. Y nadie nace sabiendo, así que no te preocupes en absoluto. En lo que respecta al problema... lo que ocurre es que es complicado (acaso pudieras copiar por aquí al menos una parte del código fuente implicado en el problema), es complicado, digo, dar una solución concreta.

Dices que si usar un "ComboBox" puede tener que ver... pues hombre, en principio no, pero, si se está tratando de utilizar un "ComboBox" que no ha sido creado o ya ha sido destruído... entonces evidentemente sí habría problemas. No se puede (sin más) saber si el "ComboBox" es culpable, pero, puedes centrarte en depurar el error.

¿Puedes copiar por aquí algo del código fuente relacionado con el problema? Tal vez de ese modo alguien pueda echarte una mano si ve algo, o quiera preguntarte algo a partir de que pueda ver el código fuente en cuestión.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 14-03-2007
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Arrow Ok...

Código Delphi [-]
procedure TFSucursal.BitBtn3Click(Sender: TObject);
var
   sSQL, sFROM, sWHERE, sORDER, sEsquema,sent: string;
begin
     sSQL   := EmptyStr;
     sFROM  := EmptyStr;
     sWHERE := EmptyStr;
     sORDER := EmptyStr;

     sEsquema := 'dba.';


     sSQL  := 'select * ';
     sFROM := 'from '+sEsquema+'sucursal_mh ';
     sWHERE:= 'where 0 = 0 ';

     if not ( Trim( DBLFiltra_sucursal.Text ) = EmptyStr ) then
        sWHERE := sWHERE + 'and cod_sucursal_mh = '+ (DBLFiltra_sucursal.KeyValue);
     sORDER := ' order by des_sucursal_mh';
     DMSucursales.QrySucursal_MH.SQL.Clear;
     DMSucursales.QrySucursal_MH.SQL.Add ( sSQL + sFROM + sWHERE + sORDER );
     DMSucursales.CDSsucursal_mh.Close;
      sent:=(sSQL+sFROM+sWHERE+sORDER);
      ShowMessage(sent);
     UCerrarAbrirPG(DMSucursales.CDSsucursal_mh, Self); {aqui salta a la funcion (en realidad no se si es una funcion o petodo. y salta a este codigo siguiente En un na UNIDAD01}

{...}

Código Delphi [-]
procedure UCerrarAbrirPG(DataSet: TDataSet; Sender : TForm);
var
   nombre, ErrorM : string;
begin
     ErrorM := '';
     nombre := DataSet.Name;
     if BaseDatosPG.InTransaction then {EN este lugar no entra y salta el error }
        begin
             try
                DataSet.Close;
             except
                on E: Exception do
                   UAbrirMensaje('Error al cerrar el componente '+nombre+'.'+#13+#10+'Mensaje : '+E.Message,ierror,sender);
             end; {try}
             try
                DataSet.Open;
             except
                on E: Exception do
                   UAbrirMensaje('Error al abrir el componente '+nombre+'.'+#13+#10+'Mensaje : '+E.Message,ierror,sender);
             end; {try}
        end {if}
     else
        begin
             try
               DataSet.Close;
             except
               on E: Exception do
                  UAbrirMensaje('Error al cerrar el componente '+nombre+'.'+#13+#10+'Mensaje : '+E.Message,ierror,sender);
             end; {try}
             IniciarTransaccionPG;
             try
                BaseDatosPG.StartTransaction(TDPG);
                DataSet.Open;
                BaseDatosPG.Commit(TDPG);
             except
                on E: Exception do
                   begin
                       BaseDatosPG.Rollback(TDPG);
                       UAbrirMensaje('Error al abrir el componente '+nombre+'.'+#13+#10+'Mensaje : '+E.Message,ierror,sender);
                   end; {on}
             end; {try}
        end; {else}
end;

Edito este mensaje para añadir las etiquetas [ delphi ].

Última edición por dec fecha: 14-03-2007 a las 22:19:54.
Responder Con Cita
  #7  
Antiguo 14-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
Las "violaciones de acceso a memoria" se producen porque se trata de acceder a la instancia de un objeto que aún no ha sido creado y/o cuando se trata de acceder a la instancia de un objeto que ya fue liberado
Hombre, esto no es del todo cierto. Por ejemplo, los siguientes códigos causarán una violación de acceso:

Código Delphi [-]
var
  a: array of Integer;

begin
  a[84] := 84;
end;

Código Delphi [-]
var
  p: pbyte;

begin
  p^ := 84;
end;

Menciono esto porque el error pudiera también estar al acceder a un elemento inexistente de un arreglo, por ejemplo, ComboBox.Items

// Saludos
Responder Con Cita
  #8  
Antiguo 14-03-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; llevas razón Román. Incluso, ¿no podría decirse que cualquier intento de acceder a memoria ya liberada o sin asignar aún causaría una violación de acceso? Pregunto.

Edito: Y me respondo. Supongo que esto último no es así puesto que por ejemplo uno puede acceder al valor de una variable de tipo "string" incluso sin que esta fuera inicializada. Mejor dicho, las variables de tipo "string" son inicializadas por Delphi con un determinado valor, con una cadena vacía. ¿Verdad?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 14-03-2007
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Question Esta podria ser la causa?

en el codigo aparece un Trim( DBLFiltra_sucursal.Text ){DBLFIltra_sucursal = a un TRxLookupDBComboBox} esta podria ser la causa? Y como cambio esto o que hago para que no cree problemas
Responder Con Cita
  #10  
Antiguo 15-03-2007
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
encontre el error

el error se daba por el mal direccionaminto del programa a la base de datos.
si sefijan en el error en el if de arriba donde se produce el error la palabra que dice BasedeDatosPG estaba como nill osea que no apuntaba a nada es por eso que se producia el error gracias a todos por su colaboracion emos derrotado nuevamente al enemigo jajaja.
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
raised execption eoserror code 14 nfrfabian API de Windows 1 24-02-2007 00:15:25
Exeption EStackOverflow Luana Varios 4 03-08-2005 08:15:01
error 'Access violation at address 0053CF79 in module project1' Renees Varios 3 15-03-2005 17:17:37
Project NavSistem.exe raised exception.............. Picard C++ Builder 2 31-05-2004 18:46:00
Raised Exception javiermorales OOP 24 18-09-2003 00:06:09


La franja horaria es GMT +2. Ahora son las 15:14:34.


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