Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Findkey (https://www.clubdelphi.com/foros/showthread.php?t=8744)

trex2000 31-03-2004 19:17:30

Findkey
 
Saludos:
Tengo un sistema con tablas paradox, tengo el problema de que al hacer un findkey a un articulo nunca lo encuentra y siempre trata de agregarlo como nuevo entonces me genera un key violation, en la intruccion que uso tengo que si lo encuantra edite el registro pero nunca entra aqui, la llave de la tabla es el codigo del articulo.

Espero haberme dado a entender.
De antemano muchas gracias. :confused:

roman 31-03-2004 19:26:31

Pues si no ejecuta la instrucción del condicional es porque no encontró el registro. ¿Por qué no nos pones esa parte del código aquí para tener una mejor idea?

// Saludos

jachguate 31-03-2004 19:36:32

Pues en mi larga vida, nunca he visto fallar a findKey, salvo que IndexName o IndexFieldNames no apunten a la llave primaria.

Hasta luego.

;)

marcoszorrilla 31-03-2004 20:00:02

Reitero lo dicho por mis compañeros, además te digo, abre la tabla con el DatabaseDesktop y asegúrate que el código del artículo está escrito igual que el que tu buscas, puede tener un espacio o un caracter extraño que no estás contemplando.

Un Saludo.

trex2000 01-04-2004 00:52:48

Gracias por sus respuestas lo que hago es lo siguiente:
Articulo:=Query1.FieldByName('CodArt').AsString;
If MdParadx.TbEc.FindKey([Articulo])Then
Begin
MdParadx.TbEc.Edit;
Operaciones...;
MdParadx.TbEc.Post;
End
Else
Begin
MdParadx.TbEc.AppendRecord([Articulo,NumeroPedidos]);
End;

Eso es todo lo que hago.

La llave principal es codart de la tabla ec.db.

Gracias por su ayuda.

jachguate 01-04-2004 01:02:13

Y que tenes en IndexFieldNames o en IndexName??

trex2000 01-04-2004 03:24:33

En indexfieldnames es codart(codigo del articulo) y en indexname no tengo nada. :confused:

roman 01-04-2004 07:24:24

Dale curso a la sugerencia de marcoszorrila. Pon un punto de corte (F5) en la línea

Código:

if MdParadx.TbEc.FindKey([Articulo]) then
Cuando pare la ejecución examina el valor de la variable Articulo y asegúrate de que coincide exactamente con el valor en la tabla (usando el Database Desktop para ello).

// Saludos

trex2000 01-04-2004 18:53:24

El problema es que eso ya lo hice y si coincide el valor de articulo con el que tengo en la tabla.

Gracias por su ayuda. :confused:

Nuria 01-04-2004 19:06:36

Hola !

¿Siempre te pasa con el mismo artículo o con artículos diferentes?

Saludos!

trex2000 01-04-2004 19:09:50

Es con cualquier articulo pero nada mas en esa tabla.

Gracias. :confused:

Nuria 01-04-2004 19:14:38

¿ Has probado si puedes insertar en esa tabla usando el Database Desktop?

Salu2!

trex2000 01-04-2004 19:24:05

Si ya lo intente, y si me pone los articulos siempre y cuando todavia no esten agregados.

Gracias. :confused:

Nuria 01-04-2004 19:31:09

Pues entonces no sé que te puede estar pasando... :confused: . Una sugerencia create de nuevo la tabla no sé igual ya funciona.

Un Saludo!

trex2000 01-04-2004 21:16:04

Ya volvi a crear la tabla y sigue iguel, de todos modos muchas gracias.

roman 01-04-2004 21:35:35

Hay veces que se tiene que comenzar desde cero (¿A esto se referirá Al González con POC? :p )

Trata de reproducir el caso a su mínima expresión:
  1. Trabaja con una copia de la tabla con, digamos, 10 registros.
  2. Crea un nuevo projecto con un sólo formulario
  3. Coloca en el formulario un Table, un botón y nada más
  4. Configura las propiedades del Table igual a como las tienes ahora.
  5. En el OnClick del botón coloca el código:

    Código:

    Assert(Table.FindKey(['un valor de la clave']), 'Esto es cosa de duendes');

Nota que le pasas al FindKey no una variable sino directamente un string con un valor que sepas que existe.

Si recibes el mensaje 'Esto es cosa de duendes' realmente será cosa de duendes pero puedes enviarnos el proyecto reducido como attachment incluida la tabla de diez registros y a ver si le encontramos algo.

// Saludos


La franja horaria es GMT +2. Ahora son las 15:11:52.

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