PDA

Ver la Versión Completa : Posicionarse en una tabla


orsajo
03-10-2005, 12:22:13
Saludos:

Mi problema es el siguiente:

Necesito posicionarme correctamente en una tabla paradox para poder eliminar un registro. Le paso como parámetros la clave primaria. Mi codigo es el siguiente:

Tabla.Open;
Tabla.FindKey([variable]);
Tabla.Delete;
Tabla.Close;

El problema es que no consigo que se posicione en el lugar correcto. Siempre me borra el primer registro de la tabla.
Gracias de antemano, un saludo y Orsajo.

dec
03-10-2005, 12:56:10
Hola,

No sé si tendrías que comprobar previamente que "FindKey" tiene un resultado positivo, algo más o menos como esto:


if Tabla.FindKey([variable]) then
Tabla.Delete;

Porque puede ser que la función devuelve "False" y, según la ayuda de Delphi en ese caso no se moverá el cursor...



If the search is successful, FindKey positions the cursor on the matching record and returns true. Otherwise the cursor is not moved, and FindKey returns false.

orsajo
03-10-2005, 13:06:44
Este codigo, por desgracia, no me soluciona el problema, puesto que ahora ya no me borra el primero registro siempre, pero sigue sin borrarme el adecuado.

Lo que yo busco es que se posicione correctamente y borre el contenido. De todas formas, te agradezco tu respuesta.

Un saludo, Orsajo.

dec
03-10-2005, 13:18:03
Hola,

Creo que tú mismo estás utilizando las palabras que te dan una posible respuesta. Si el código que te he propuesto anteriormente sigue sin funcionarte significa algo: la función "FindKey" no obtiene resultados, devuelve "False" y, por lo tanto, no hay posibilidad de situar el cursor en un registro y mucho menos borrarlo. ¿Estoy equivocándome en algo? ;)

orsajo
03-10-2005, 13:21:12
Es muy posible. Pero entonces, planteo otra cuestión, ¿existe alguna solución alternativa?, ¿como puedo eliminar un registro teniendo la clave primaria escrita en un edit?.

Gracias de nuevo. Orsajo

epuigdef
03-10-2005, 13:25:47
Buenas!


Prueba con una sentencia SQL de eliminación:

query.sql.text := 'delete from tabla where clave = ' + quotedStr(Edit1.text);
query.execSQL;

Por cierto, el quotedStr sólo lo tienes que poner si la clave es alfanumérica

Un saludo

Edu

orsajo
03-10-2005, 13:42:03
Gracias a todos:

Ya esta todo solucionado, el problema era que la clave es compuesta.

TABLA.FINDKEY([CLAVE1, CLAVE2]);

Y todo solucionado, gracias de nuevo, a todos.

Un saludo, Orsajo.