PDA

Ver la Versión Completa : Problema con delphi XE2... alguna idea?


gramajo
30-07-2013, 04:03:02
Hola a todos, estoy trabajando una aplicación comercial de inventario con delphi XE2, Zeos y MySql. Esto bajo Windows 7, en cierto momento al correr la aplicación desde delphi y comenzar a utilizarla me dio este error:

Access violation at address 75789527 in module 'KERNELBASE.dll'. Write of address 004087D8

1. he desinstalado antivirus nod32.
2. he reformateado el equipo (pero solo con cambiar cualquier instrucción vuelve el error).
3. no estoy trabajando con punteros.

Le agradecería cualquier ayuda que ustedes me puedan proporcionar, muchísimas gracias.

nlsgarcia
30-07-2013, 06:18:55
gramajo,


...con Delphi XE2, Zeos y MySql...bajo Windows 7...en cierto momento...Access violation at address 75789527 in module 'KERNELBASE.dll'. Write of address 004087D8...he reformateado el equipo...

¡¡Bienvenido al Club Delphi!!

Pregunto:

1- ¿Haz descartado problemas de Hardware (Procesador, Memoria, Disco y Motherboard) especialmente Memoria y Disco?.

2- ¿Con reformatear el equipo te refieres a instalar Windows 7 y todos sus programas desde zero inicializando previamente el disco?.

3- ¿Windows 7 tiene todas sus actualizaciones de seguridad y Service Pack a la fecha?.

4- ¿Que quieres decir cuando comentas en cierto momento en el Msg #1?, ¿Alguna vez funciono la aplicación antes de ese momento?.

5- ¿Se ha instalado algún software o hardware que pueda influir en el problema?.

6- ¿Usas componentes de terceros además de Zeos que intervengan al momento de la falla?.

7- ¿Haz probado el programa en otra máquina que tenga la plataforma de desarrollo mencionada?, ¿Cual es su comportamiento?.

8- ¿Haz probado el funcionamiento de Zeos y MySQL en Delphi XE2 fuera de la aplicación en cuestión?, ¿Funcionan correctamente?.

9- ¿Puedes publicar el código en donde se produce la falla en cuestión?.

Espero sea útil :)

Nelson.

gramajo
30-07-2013, 18:39:19
Muchas gracias nlsgarcia, también gracias por las observaciones sobre mi pregunta, de esta forma tratare de formularla mejor.

1. Me falto descartar problemas de procesador o Mother Board, la memoria se la cambie y el disco es nuevo.
2. Al re-formatear me refiero a instalar todo desde cero, windows 7 y demás aplicaciones, anteriormente antes de instalar nuevamente todos los programas a la computadora, comencé a desinstalar aplicaciones pero siempre me dio el mismo mensaje de error, por lo que decidí comenzar de cero.
3. Actualizaciones de Windows? Ahí si estoy mal no cargue nada de actualizaciones, tengo el service pack1 de windows 7 nada mas.
4. "En cierto momento..." quise decir, que pude apreciar que todo estaba bien hasta que cambie ciertas instrucciones referidas a un if que no me permiten grabar si no he colocado el código del cliente, lo cambié para que no me deje grabar si no he metido el nombre del cliente, pero el campo en blanco en el campo codigo_cliente es lo que me ocasiona el problema.

Pero aquí me detengo, para explicar bien lo que paso, creo haber solucionado el problema pero es muy extraño lo que sucede, hice un cambio en un form que tiene como función el ingreso de datos de clientes, y la tabla correspondiente en este caso "clientes", necesito que el campo "codigo_cliente" no sea llave primaria, necesito que el campo "nombre_cliente" lo sea, así que hice el cambio en la tabla "clientes" y después de ingresar los datos a esta a través del form, cerrar este mismo y abrir un apartado correspondiente a ventas me encuentro con el "error".

Ahora bien, me di cuenta que si no hago ningún cambio el programa funciona bien, por lo que detecte que el hacer el cambio afecta las consultas de las tablas que forman el apartado de ventas, ahora lo que estoy haciendo es tratando de detectar cual consulta esta provocando el problema. Todo se debe a que mi cliente quiere ingresar en la tabla clientes, personas u empresas con código y sin código. Muchísimas gracias por ayudarme de verdad te lo agradezco. Saludos NlsGarcía!

nlsgarcia
30-07-2013, 19:59:43
gramajo,


...necesito que el campo "codigo_cliente" no sea llave primaria, necesito que el campo "nombre_cliente" lo sea...mi cliente quiere ingresar en la tabla clientes, personas u empresas con código y sin código...


Te sugiero reconsiderar este cambio, a efectos de normalización de BD no es recomendable este tipo de implementaciones, cada tupla debe tener un identificador único, el nombre del cliente no es adecuado como clave primaria.

Una alternativa es crear una función de búsqueda por medio del nombre_cliente (Parcial o Total) que de como resultado el codigo_cliente (O una lista de los códigos que cumplan con el string de búsqueda) y a través de este accesar la información de la tabla clientes, esto permitirá un diseño relacional mas coherente y dará facilidad de acceso a la información relacionada con la clave obtenida.

Espero sea útil :)

Nelson.

gramajo
30-07-2013, 21:57:28
Gracias Nelson en verdad, fijáte que tienes mucha razón y se lo hice ver a mi cliente pero estos no entienden de esas cosas, el programa lo hice para que le asignen un código a cada cliente que ingresen pero resulta que ahora dicen que manejan clientes que no tienen código, por que sencillamente son clientes que compran una sola vez y es muy raro verlos de nuevo, lo que se me ocurre ahora es hacer una función que asigne un código automáticamente, a estos que supuestamente no llevan la codificación que ellos manejan, que me sugieres?

P.D. Nelson? muchas gracias por tu gran apoyo.

ecfisa
30-07-2013, 22:20:23
...se lo hice ver a mi cliente pero estos no entienden de esas cosas, el programa lo hice para que le asignen un código a cada cliente que ingresen pero resulta que ahora dicen que manejan clientes que no tienen código, por que sencillamente son clientes que compran una sola vez y es muy raro verlos de nuevo...

Hola gramajo.

El cliente es el que paga... :)

Lo usual en estos casos es que la bd asigne un identificador numérico único a cada cliente de forma transparente para el usuario. Es decir que si tienen cuatro Perez Juan, cada uno tendrá un identificador único y será el que use internamente tu programa independientemente de como se llame el cliente.

¿ Como lo individualizan entonces ? Bueno, cuando busquen por Perez Juan tendrás que mostrarle los existentes y que ellos decidan por algún otro dato sobre cuál trabajarán.

Cuando mostras la lista a seleccionar, es sumamente útil y recomendable agregar un campo adicional que les ayude a identificarlo, tál como dirección, número de documento, número de contribuyente, etc.

Saludos. :)

nlsgarcia
30-07-2013, 22:34:21
gramajo,


...manejan clientes que no tienen código, por que sencillamente son clientes que compran una sola vez...



...Lo usual en estos casos es que la bd asigne un identificador numérico único a cada cliente de forma transparente para el usuario...


Te comento:

1- La normalización de la tabla clientes es independiente de la frecuencia de compra de los clientes.

2- Si independientemente de que el cliente compre una vez se debe crear una entrada en la tabla de clientes, este debe tener un código de cliente que lo identifique biunivocamente.

3- Te sugiero considerar lo sugerido en los Msg #4 y #6, lo cual no afectara lo requerido por el usuario y no comprometerá el diseño de la BD.

Espero sea útil :)

Nelson.

gramajo
30-07-2013, 22:51:10
Mil gracias Nelson, Ecfisa, estoy agradecido por la ayuda que me han prestado, pondré en practica su consejos en los mensajes #4 y #6. Saludos que estén bien :)