PDA

Ver la Versión Completa : Llaves Combinadas


Fenareth
17-04-2008, 19:19:30
Hola a todos chicos y chicas del club !!!

Les platico un poco mi duda: Estoy haciendo un proyecto donde se introducen las compras que les hacemos a los proveedores... Todo esto en Delphi 6 y con tablas en Paradox...

Al principio todo era felicidad porque en mi tabla tenía definido un campo llave llamado idcompra y todo funcionando perfecto, pero ahora me doy cuenta de que no consideré algo. Como en el idcompra se captura el folio de la factura que nos manda el proveedor puede ser que dos proveedores diferentes nos manden dos facturas con el mismo folio y oh ! problema, no nos permitirá grabar eso directamente...

En la ayuda del DataBase Desktop descubrí que puedo tener dos campos llave y que Paradox tomará sólo como duplicado un registro si ambos se repiten, entoces definí el código del proveedor (idprov) y el folio de la compra (idcompra) como campos llaves (poniendo el siempre famoso asterisco a un lado del campo)...

Al querer probar, trato de capturar un folio de compra (idcompra) ya existente pero con otro proveedor diferente y sopas !!!, me manda un error de key violation...

Mi pregunta es: entendí mal la ayuda de Delphi ?, me falta algún parámetro por definir en la tabla ?, necesito hacer algo extra para que esto funcione ? :confused:

Les agradezco muchisimo su tiempo y cualquier sugerencia que puedan tener... :o

jcarteagaf
17-04-2008, 19:52:31
Estas usando TTable? Puede ser que en la propiedad Indexfieldnames tengas solo IDCOMPRA cuando deberia ser IDCOMPRA;IDPROV.

P.D. Me encanto la parte de Sopas!!!!

Fenareth
17-04-2008, 21:37:30
Jejejejeje, y el sopas !!!! es aun mas chistoso en vivo :p

Y jcarteagaf sobre tu consejo, fíjate que no lo definía directamente en el TTable pero lo ponía en el código pero quité esa parte, hice la definición como sugeriste y funciona perfecto ;)... muchas muchas gracias :)

Para hacer búsqueda por campo llave cuando es combinado se sigue haciendo igual que cuando el campo llave es sólo uno ?... con el FindKey ???

eduarcol
17-04-2008, 21:43:57
sip, solo que separas cada valor a buscar por comas, y debe estar en el mismo orden del indice de la tabla.

Fenareth
17-04-2008, 21:59:37
Ok, pues muchas gracias de nuevo a ambos...

Un saludote desde México :D