Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 31-03-2004
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
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
Responder Con Cita
  #3  
Antiguo 31-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Pues en mi larga vida, nunca he visto fallar a findKey, salvo que IndexName o IndexFieldNames no apunten a la llave primaria.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 31-03-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 01-04-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 01-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Y que tenes en IndexFieldNames o en IndexName??
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 01-04-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
En indexfieldnames es codart(codigo del articulo) y en indexname no tengo nada.
Responder Con Cita
  #8  
Antiguo 01-04-2004
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
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
Responder Con Cita
  #9  
Antiguo 01-04-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
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.
Responder Con Cita
  #10  
Antiguo 01-04-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
Nuria Va por buen camino
Hola !

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

Saludos!
Responder Con Cita
  #11  
Antiguo 01-04-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
Es con cualquier articulo pero nada mas en esa tabla.

Gracias.
Responder Con Cita
  #12  
Antiguo 01-04-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
Nuria Va por buen camino
¿ Has probado si puedes insertar en esa tabla usando el Database Desktop?

Salu2!
Responder Con Cita
  #13  
Antiguo 01-04-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
Si ya lo intente, y si me pone los articulos siempre y cuando todavia no esten agregados.

Gracias.
Responder Con Cita
  #14  
Antiguo 01-04-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
Nuria Va por buen camino
Pues entonces no sé que te puede estar pasando... . Una sugerencia create de nuevo la tabla no sé igual ya funciona.

Un Saludo!
Responder Con Cita
  #15  
Antiguo 01-04-2004
trex2000 trex2000 is offline
Miembro
 
Registrado: may 2003
Posts: 240
Poder: 21
trex2000 Va por buen camino
Ya volvi a crear la tabla y sigue iguel, de todos modos muchas gracias.
Responder Con Cita
  #16  
Antiguo 01-04-2004
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
Hay veces que se tiene que comenzar desde cero (¿A esto se referirá Al González con POC? )

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
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 03:49:11.


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