Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como evitar duplicidad en un dbgrid? (https://www.clubdelphi.com/foros/showthread.php?t=40055)

alcides 06-02-2007 14:04:47

Como evitar duplicidad en un dbgrid?
 
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

Cita:

Empezado por alcides
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:
Código SQL [-]
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.


La franja horaria es GMT +2. Ahora son las 17:44:19.

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