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 07-05-2004
Avatar de JamesBond_Mx
JamesBond_Mx JamesBond_Mx is offline
Miembro
 
Registrado: jul 2003
Ubicación: Poza Rica, Veracruz, México
Posts: 81
Poder: 21
JamesBond_Mx Va por buen camino
Bueno, primero que nada, estas utilizando bien las propiedades DataField, DataSource, ListField y ListSource de DBloockUp?, por que debido al comportamieto que describes supongo que no, al parecer solo tienes asignadas las propiedades DataField y DataSource, y por eso pasa lo que dices, lo que tienes que hacer es en la propiedad ListSource elegir la tabla de donde va a tomar los datos a mostrar, y en la propiedad ListField, el campo que va a proporcionar los datos a mostrar, ahora en la propiedad DataSource, pondrás la tabla donde va a almacenar los datos y en DataField el campo donde almacenará estos datos, ya que de lo contrario, solo tomará o mostrará los datos que se encuentran en la tabla destino, y por tal motivo al elegir tú uno, te muestra datos e los demás campos.

Espero haber sido explicito.

Suerte.
Responder Con Cita
  #2  
Antiguo 07-05-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
hola,
en el ListSource tenemos la tabla maestro, y en ListField el campo por el que se muestra. Aunque me deja poner en el DataSource la tabla detalle, no me deja poner nada en el DataField, porque me dice que es una relación circular, y supongo que es porque los dos campos en las dos tablas se llaman de la misma forma. Así que tengo esas dos propiedades a vacio.

Gracias
Responder Con Cita
  #3  
Antiguo 07-05-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

Lo de la referencia circular no tiene nada que ver con que coincidan los nombres de los campos (éso es bastante común que suceda entre tablas con campos relacionados) sino por usar como tabla de búsqueda (Lookup) la misma de la que depende (la maestra). Te recomiendo que uses otro objeto TTable para ligar como Lookup, aunque acceda a la misma tabla física, a ver si así no saltan esos problemas.

Saludos
__________________
Guía de Estilo
Responder Con Cita
  #4  
Antiguo 08-05-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
gracias andres1569,
hice lo que me dijiste, creé una nueva tabla en el form correspondiente (en el cual quiero añadir un nuevo registro a la tabla detalle) y le asigné a la tabla física maestro, y me da el siguiente error: "Proyect x raised exception class EDBEngineError with message 'Key Violation'. Process stoped...."
este error sale al aceptar el nuevo registro.
Gracias por vuestra ayuda.
Responder Con Cita
  #5  
Antiguo 08-05-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

El error de "Key violation" no tiene nada que ver con el primer problema que planteaste, se debe a que estás repitiendo el valor de la clave principal (o en todo caso de álgún campo/s que constituya/n un índice definido como único), esto es algo básico que debieras saber.

Respecto a la primera cuestión que planteaste, no acabo de entender que quieras hacer un lookup a la tabla maestra desde la de detalle, normalmente los lookups se realizan sobre tablas auxiliares donde reside la definición o información adicional que queremos mostrar. Para ello nos valemos de un campo que hace de nexo, pero en una relación maestro-detalle ese nexo se supone que ya lo tienes establecido, no hay lugar para hacer el lookup.

Mejor explica qué pretendes hacer y quizás veamos la forma correcta de abordarlo.
__________________
Guía de Estilo
Responder Con Cita
  #6  
Antiguo 09-05-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
hola compañeros,
lo que queremos hacer es mostrar todos los registros de la tabla maestra, pero sólo un campo, en este caso NIF, que son todos los NIF de los clientes que he creado. Con toda esta información en un DBLookUpComboBox, lo que queremos es seleccionar uno y crear una factura sobre dicho cliente, factura que pertenecerá a la tabla detalle, que está únida con la maestro por el campo NIF. Esperamos habernos explicado bien. Realizamos lo de poner un TTable y un DataSource en el form donde creamos el nuevo registro para la tabla facturas, para que no me pusiera lo de "Circular Reference" pero después de conseguirlo me dió el último problema aquí expuesto, es decir, lo de Key Violation. Espero que nos hayais entendido

Muchísimas gracias.
Responder Con Cita
  #7  
Antiguo 09-05-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como ya dijo Andrés anteriormente, el error Keyviolation, no tiene nada que ver con lo planteado anteriormente, esto ocurre únicamente cuando se repite la clave maestra de la tabla en cuestión.

Por otra parte la tabla facturas no debe de ser detalle de la de clientes, cuando queramos ver todas las facturas de un cliente, no tenemos más que poner un filtro o atacar con SQL:
Código Delphi [-]
Facturas.Filter:='NIF = '+QuotedStr(Edit1.Text);
Facturas.Filtered:=True;

Código SQL [-]
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From facturas Where Nif = '+QuotedStr(Edit1.Text));
Query1.Active:=True;

Y para finalizar la factura será maestro de sus lineas que estarán en otra tabla.

Por lo que el DbLookUpComboBox que muestra los clientes no hará más que mostrar los clientes para elegir uno.

Finalmente sería conveniente eliminar la relación maestro detalle entre las tablas clientes -> Facturas y crear una sino existe entre facturas -> lineas de factura.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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


La franja horaria es GMT +2. Ahora son las 14:24:10.


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