PDA

Ver la Versión Completa : Como evitar duplicidad en un dbgrid?


alcides
06-02-2007, 14:04:47
Hola a todos,

Utilizo delphi 7 y mis tablas estan en access,

Resulta que manelo una relacion master disteil y en un dbgrid capturo mis cuentas, como se puede evitar introducir la misma cuenta dos veces.

si por fa, me pueden dar una orientacion.


Gracias mil,


Alcides
Rep.Dom.

Neftali [Germán.Estévez]
06-02-2007, 14:41:38
Revisa documentación sobre claves primarias (PK), e índices únicos.
Utilizándolos en los campos adecuados de tu tabla puedes evitar que se repitan registros con determinados datos.

alcides
06-02-2007, 15:35:38
Gracias neftali, por tu orientación.

Resulta neftali que no es en la tabla, es en el Dbgrid al momento de capturar la información, que necesito que una cuenta no se repita.


Gracias Mil,


Alcides
Rep.Dom.

jhonny
06-02-2007, 16:43:31
Se me ocurre una pachotada y es que cada que agregues una cuenta la pongas en un TStringList y antes de grabar verifiques con un IndexOf al StringList y si dicha funcion devuelve diferente a -1 pues mostrar un mensaje donde diga que la cuenta esta repetida...
Eso a groso modo claro esta, pues abria que tener en cuenta varias cosas tales como, si borras una cuenta debes borrarla del StringList tambien y cosas de esas.

ContraVeneno
06-02-2007, 16:58:58
A lo que se refiere Neftali, es que debes crear índices únicos en tu tabla de acces, de esta manera, cada vez que quieras agregar un registro que ya existe, se te generará una excepción de violación de llave primaria. La cuál puedes manejar a tu antojo.

Recuerda que el DBgrid es solo una representación gráfica del Dataset, es decir, lo importante es el dataset, no el dbgrid.

jhonny
06-02-2007, 17:16:01
La solución (pachotada) que te mostré podría servirte en un remoto caso donde quizá estés usando algún DataSet (de Memoria por ejemplo) donde no reconozca el conjunto de llaves que tienes en tu tabla.

Neftali [Germán.Estévez]
06-02-2007, 17:23:45
Resulta neftali que no es en la tabla, es en el Dbgrid al momento de capturar la información, que necesito que una cuenta no se repita.

En realidad es lo mismo. El Grid en sí no contiene nada, simplemente te muestra lo que hay en una tabla o consulta, por eso este tipo de operaciones no debes hacerlas sobre el Grid, sino sobre la fuente de datos.

Caral
06-02-2007, 20:40:59
Hola
Como te han dicho esto se hace directamente sobre la tabla.
En access es realmente facil ya que tiene un generador de consultas en donde puedes hacer la sentencia sql que necesites.
Esta sentencia empieza con:
SELECT DISTINCTROW
Esto hace que no se repitan los datos.
Saludos

alcides
06-02-2007, 21:06:48
Gracias mil,
ContraVeneno, Jhonny, Neftali, caral

por la orientación,


Gracias,




Alcides
Rep.Dom.