PDA

Ver la Versión Completa : Problema con DBExpress y DBGrid


octavioallec
17-09-2008, 03:54:14
Hola a todos.

Consulto con todos ustedes porque he buscado muchas posibles soluciones y aún no he tenido éxito, mi problema es el siguiente...

Tengo mi aplicación en Delphi 2007, mi base de datos en MySQL 5.1.25, sistema operativo Windows XP SP3.

En mi aplicación uso componente DBExpress, en mi DataModule ya cuento con los componente SQLConnection, SQLQuery (también probado con SQLDataSet), DataSetProvider y ClientDataSet. He verificado conectarlos adecuadamente.

Puedo conectarme a mi base de datos sin problemas, pero todo empieza cuando hago una consulta, por ejemplo.

SQLQuery1.SQL.Text:='SELECT Nombre FROM Usuarios';
SQLQuery1.Open;
ClientDataSet1.Open;

Enlazo mi ClientDataSet con un DataSource y puedo ver los resultados en un DBGrid, sin embargo, si agrego algún campo más a mi consulta (el que sea), mi aplicación manda error.

SQLQuery1.SQL.Text:='SELECT Nombre,Clave FROM Usuarios';
SQLQuery1.Open;
ClientDataSet1.Open;

Envía el siguiente error:

Access violation at address 00BDDF48 in module 'dbxmys30.dll'. Read of address 00000000

Con sinceridad agradeceré sus aportaciones para poder solucionar este problema. Saludos y GRACIAS de antemano.

toni.vi
17-09-2008, 20:03:14
No es necesario el SQLQuery1.Open;
con ClientDataSet1.Open; es suficiente.
Debes cargar los campos en el sqldataset y en clientdataset y poner en el campo que sea clave principal de ambos componentes en pfInKey dentro del ProviderFlags a true.

octavioallec
18-09-2008, 16:27:38
Toni muchas gracias por tu sugerencia, ya hice los cambios que me indicaste, el QUERY no necesita abrirse, sin embargo cuando intento usar el SQLDataSet me manda error.

Me he centrado un poco más en usar los SQLQuery, pero sigo teniendo el mismo problema, cuando en el Query hago una consulta de un solo campo trabaja muy bien, pero en cuanto uso otra consulta y pido 2 o más campos de cualquier tabla me envía el error que comentaba al principio.

Sinceramente agradezco mucho el apoyo de las personas que me ayuden a resolver el problema :) (Toni...GRACIAS).

Saludos a todos y que estén de lo mejor.

toni.vi
19-09-2008, 14:15:05
Supongo que conectas
SqlDataset al SqlConnection
DatasetProvider a SqlDataset
ClientDataset a DatasetProvider
DataSource al ClientDataset (muy importante)

La propiedad pfInKey de los campos key principal a True.
Si Trabajas con más de una tabla en la misma Select, los campos que no son de la tabla principal debes poner pfInUpdate y pfInWhere a False.
Con todo eso debe funcionar bien, sino deberias dar mas detalles.
Saludos
Toni

octavioallec
18-10-2008, 04:20:35
Nuevamente Toni muchas gracias por tu colaboración, con sinceridad comienzo a pensar que he tenido una mala configuración de estos componentes al instalar Delphi 2007, o bien con tanta prueba, le cambie la configuración de forma erronea y ahora que hago un poco de memoria, recuerdo que usando los asistentes pude accesar a las tablas y campos de mi DB, seguí probando y después ni los asistentes funcionaban bien.

Los datos ya los he colocado como me sugieres, sólo coloco campos de una misma tabla (si uso campos de varias tablas en algunas consultas, pero aún no llego a esa parte con los DBExpress), con las propiedades que me indicas y nada (Gracias Toni).

Seguiré buscando la forma ya que estoy migrando todos mis proyectos y deseo que trabajen adecuadamente.