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 09-06-2005
slayer6969 slayer6969 is offline
Registrado
 
Registrado: jun 2005
Posts: 3
Poder: 0
slayer6969 Va por buen camino
Ayuda con campo del tipo fkLookup

Buenos dias, señores / as. Permitanme que les de las gracias de antemano por dedicar unos instantes a leer estas brebes lineas. Gracias.

Bueno, mi problema es el siguiente. Estoy desarrollando una pequeña aplicación en la que dispongo de diferentes tablas, entre estas, una que he llamado 'Pais', una que he llamado 'Provincia' y otra más que recoge información de estas dos y que he llamado 'Empresa'. La definición de estas es la siguiente:

* Pais:
- IdPais ( Integer ) ( PK )
- Pais ( Char(50) )

* Provincia:
- IdPais ( Integer ) ( PK )
- IdProvincia ( Integer ) ( PK )
- Provincia ( Char(50) )

* Empresa:
- IdEmpresa ( Integer ) ( PK )
- ...
- IdPais ( Integer )
- IdProvincia ( Integer )
- ...

Bien. He creado diferentes TTable para el acceso a estas tablas y en la definicion de los campos para la tabla 'Empresa', he incluido dos campos del tipo fkLookup, para el acceso a los valores de las tablas 'Pais' y 'Provincia', de la siguiente manera:

* tempresaPais:
- KeyFields -> 'IdPais'
- LookupDataset -> tbPais
- LookupKeyFields -> 'IdPais'
- LookupResultFields -> 'Pais'

* tempresaProvincia:
- KeyFields -> 'IdPais;IdProvincia'
- LookupDataset -> tbProvincia
- LookupKeyFields -> 'IdPais;IdProvincia'
- LookupResultFields -> 'Provincia'

El caso es que con el campo de búsqueda definido para la tabla 'Pais' ( tempresaPais ), todo funciona muy bien. Sin embargo con el definido para 'Provincia' ( tempresaProvincia ), siempre me saca un error 'tbEmpresa: Field 'IdPais;IdProvincia' not found'.

¿ Hay algun problema al intentar este tipo de busqueda utilizando diferentes campos?
¿ El problema reside al intentar guardar los valores en cada uno de los campos editados ?
¿ Alguna idea ?

Muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 09-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Ojalá todos los mensajes del foro se explicasen así de bien, ha sido una delicia leer el mensaje, por ende, te doy la enhorabuena.

Falta por comentar el motor de bases de datos y las tablas, pero el problema parece surgir al incluir 2 campos separados por punto y coma en la propiedad keyFields.

Lo único que se me ocurre de momento es que al dar de alta una provincia, su id, contenga ya el pais, me explico:

Código:
codigoPais  Pais      
  34            España
  35            francia

codigoProvincia    Provincia
    34001                huelva
    34002                Malaga
    35001                París
En principio, los ceros que he añadido en el codigo de provincia no harían falta, (para no limitar a 999 provincias por pais), lo he añadido por claridad.

Espero que lo puedas aplicar, o que alguien dé otra forma de hacerlo.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 09-06-2005 a las 15:08:47.
Responder Con Cita
  #3  
Antiguo 10-06-2005
slayer6969 slayer6969 is offline
Registrado
 
Registrado: jun 2005
Posts: 3
Poder: 0
slayer6969 Va por buen camino
Ayuda con campo del tipo fkLookup



Muchísimas gracias, Lepe, por tu respuesta.

Efectivamente, parece que el error se da al incluir diversos campos en la clave de búsqueda.

Seria una buena idea dotar al campo 'IdProvincia' de la tabla 'Provincia' de una codificación significativa, tal y como apuntas. En esta ocasión me he decidido a usar campos del tipo entero. Históricamente, había utilizado para estos casos siempre campos del tipo carácter, pero a medida que la tabla va creciendo, todo se vuelve más lento, al utilizar este tipo de claves. Así se podrían utilizar los 3 primeros carácteres para identificar el país, y los 4 siguientes para identificar la provincia. Luego para acabarlo de redondear, se podría validar cuando se insertara el nuevo registro que siguiera este formato ... anda, pues igual se podria realizar este tipo de validación aunque el campo sea entero. Gracias, Lepe, creo que podría montármelo de esta manera. Aunque lo cierto es que me gustaría averiguar el porque de ese error.

Respecto a la base de datos, estoy utilizando Interbase. Sin embargo uso los componentes genericos de acceso a bases de datos del BDE, pues me gustaría que fuera en este aspecto un poco versátil. Que te parece ?

Muchas gracias de nuevo por vuestro soporte. Y, bueno, si se os ocurre alguna nueva idea que pueda arrojar un poco más de luz al caso, estaría encantado de poder escucharla.
Responder Con Cita
  #4  
Antiguo 18-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Interbase con BDE: Alternativas

Cita:
Empezado por slayer6969
Respecto a la base de datos, estoy utilizando Interbase. Sin embargo uso los componentes genericos de acceso a bases de datos del BDE, pues me gustaría que fuera en este aspecto un poco versátil. Que te parece ?
Bueno, parece que los gurús de Interbase y firebird no han visto este mensaje, (reconozco que ha habido muchisima actividad estos dias pasados en el foro) a ver si poniendolo el hilo arriba de los mensajes nuevos tenemos más suerte.

Lamento no poder contestar, pero todavia soy un novatillo con Firebird e Interbase.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 23-06-2005
slayer6969 slayer6969 is offline
Registrado
 
Registrado: jun 2005
Posts: 3
Poder: 0
slayer6969 Va por buen camino
Sigo con el mismo problema ... :(

Bueno, señores, antetodo, gracias por toda su ayuda.

Continuo obsesionado con el mismo problema con el que iniciaba este hilo de debate, puesto que por encima de toda la estructura gerarquica de la base de datos que estoy montando, existe un primer nivel que es el de "empresa", por lo que prácticamente todas las búsquedas van a utilizar ese código como parte de la consulta.

Alguien podria decirme si conoce algun componente del tipo DBLookupComboBox que pueda integrarse en un DBGrid, y que pueda utilizar como KeyFields y LookupKeyFields diferentes campos ?

Muchisimas gracias
Responder Con Cita
  #6  
Antiguo 23-06-2005
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 slayer6969
¿ Hay algun problema al intentar este tipo de busqueda utilizando diferentes campos?
No debería haber ningún problema. Al menos según la ayuda, KeyFields y LookupFields pueden una lista de campos separados por punto y coma.

La única observación en la ayuda que veo que podría ser relevante es:

Cita:
Empezado por ayuda de Delphi
Choose from the Key Fields drop-down list a field in the current dataset for which to match values. To match more than one field, enter field names directly instead of choosing from the drop-down list. Separate multiple field names with semicolons. If you are using more than one field, you must use persistent field components.
¿Has incluído los campos IdPais e IdProvincia en la lista de campos persistentes?

// Saludos
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 09:56:21.


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