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 26-11-2007
Josepo Josepo is offline
Miembro
 
Registrado: nov 2007
Ubicación: Barcelona
Posts: 14
Poder: 0
Josepo Va por buen camino
Consulta maestro-detalle, DBExpress con MySQL

Hola a todos. Soy nuevo en el foro. Estoy muy contento y satisfecho con todo lo que he aprendido aquí en los últimos días. Estoy haciendo una aplicación para consumo propio, su utilidad será agenda, facturar y llevar los datos de los clientes en una peluquería. Estoy en situación inicial (sólo he hecho prácticas...).

Inicialmente he optado por una conexión dbexpress con base de datos MySQL, estoy diseñando un tipo de consulta maestro-detalle y no me acaba de funcionar. Para practicar he creado 2 tablas cliente y factura, visualizo el query del cliente en campos dbedit y navego correctamente con un dbnavigator. En un dbgrid visualizo las facturas respectivas del cliente que se refrescan correctamente.

Problema: en el SQLQuery de factura, DataSource apunta al DataSource de Cliente (que es maestro) y en SQL tengo:
Código SQL [-]
SELECT * FROM factura

y funciona pero si hago cualquier variación, por ejemplo escoger ciertos campos o renombrarlos:
Código SQL [-]
SELECT fra_num AS Número FROM factura

me da error diciendo que otro campo (por cierto, indexado) no lo ha encontrado. He hecho diferentes variaciones de SELECT y sólo funciona con SELECT *.

¿que puede estar pasando?

Espero haber aportado suficientes datos , agradeceré cualquier comentario.
Responder Con Cita
  #2  
Antiguo 26-11-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, prueba quitando el acento a Numero.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 26-11-2007
Josepo Josepo is offline
Miembro
 
Registrado: nov 2007
Ubicación: Barcelona
Posts: 14
Poder: 0
Josepo Va por buen camino
Hola enecumene, no es el acento, se me ha escapado cuando lo he escrito aquí como ejemplo...

Es curioso, porque cuando escribo las instrucciones SQL en el phpmyadmin hace los SELECT de cualquier tipo correctamente pero si lo hago desde un SQLQuery imprescindiblemente se han de seleccionar ciertos campos para que no salga error.
Responder Con Cita
  #4  
Antiguo 26-11-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Cuando haces un maestro-detalle, has de incluir en la consulta del detalle el campo que la relaciona con el maestro.

Código SQL [-]
SELECT cliente, fra_num AS Número FROM factura
__________________
Saludos.
Responder Con Cita
  #5  
Antiguo 28-11-2007
Josepo Josepo is offline
Miembro
 
Registrado: nov 2007
Ubicación: Barcelona
Posts: 14
Poder: 0
Josepo Va por buen camino
Gracias por vuestras respuestas. Tienes razón, basti, se ha de incluir necesariamente el campo que relaciona el detalle con el maestro.

No obstante, he descubierto otra cosa, que al campo que relaciona no se le puede dar otro nombre en el select, es decir si hago
Código SQL [-]
SELECT fra_idcli FROM factura
funciona, pero si hago
Código SQL [-]
SELECT fra_idcli AS Cliente FROM factura
no funciona. Dándole vueltas he descubierto que si quiero hacer esta segunda opción, la propiedad ClientDataSet.IndexFielName debo de poner también Cliente. Seguro que lo que explico es muy evidente para todos, pero claro, esto de ser novato trae estos dolores de cabeza.

Una vez resuelto esto me encuentro con otro problema: yo no quiero que en la grid salga el campo fra_idcli, que dinámicamente me lo pone porque hemos visto que es obligatorio ponerlo. Este campo hace que en cada linea me repita el mismo número de cliente (es obvio: ¡todas las lineas son las facturas del mismo cliente!).

¿cómo puedo hacer para que una columna no salga en la grid?

Gracias por vuestra paciencia.

Última edición por Josepo fecha: 28-11-2007 a las 10:55:05.
Responder Con Cita
  #6  
Antiguo 28-11-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Puedes hacerlo de dos maneras. Una en el propio editor de campos del dataset, poniendo la propiedad visible a false. La otra es definiendo las columnas del dbgrid (doble click en el grid), añadiendo sólo las que quieres que se vean. Cualquiera de las dos opciones sólo afectará al grid, no al resto de controles que puedas tener asociados al campo.
__________________
Saludos.
Responder Con Cita
  #7  
Antiguo 30-11-2007
Josepo Josepo is offline
Miembro
 
Registrado: nov 2007
Ubicación: Barcelona
Posts: 14
Poder: 0
Josepo Va por buen camino
Thumbs up Perfecto

Muchas gracias, basti, tu respuesta me ha sido de mucha utilidad.

He probado los dos sistemas y con ambos consigo lo que necesitaba.
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
Error al modificar datos en maestro detalle con dbexpress alopete Conexión con bases de datos 5 01-10-2007 12:00:32
Consulta maestro detalle. jplj SQL 5 30-05-2007 20:24:14
problemas maestro-detalle DBexpress jmlifi Conexión con bases de datos 2 16-06-2006 12:27:05
Ordenar Maestro detalle en DBExpress cesar_picazo Conexión con bases de datos 3 17-08-2005 18:10:30
Maestro/Detalle con dbExpress mosorio Conexión con bases de datos 4 02-09-2003 23:48:52


La franja horaria es GMT +2. Ahora son las 21:38:36.


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