PDA

Ver la Versión Completa : Error en busqueda.


kwan
04-09-2003, 14:57:26
Hola preguntaros de que forma puedo hacer lo siguiente,
tengo un form con una serie de DBEdit relacionado con
una base de datos en paradox, le he introducido un edit
en el cual quiero buscar los numeros de los socios ya
que cada socio tiene relacionado un numero, bueno creo
que lo hago bien pero tiene una pega y es la siguiente
cuando busco un numero inexistente me lo avisa con el
showMessage hasta aqui correcto, pero como lo hago para
que cuando el Edit no tenga nada o introduzca una letra
me vuelva el ShowMessage de introducir solo numeros ya
k si no me da error??

este es el codigo que meto en mi form no se si con Try
y except se puede por eso os pido ayuda.

procedure TForm1.edCodigoKeyPress(Sender:TObject; var key: Char);

Begin

If Key = #13 Then
Begin
Table1.First;
If Not Table1.Locate('N_CARNET',StrToInt(edCodigo.Text),[])Then
ShowMessage('Ese Nº Carnet no existe');
end;


Gracias.

javiermorales
04-09-2003, 15:03:35
Buenos Días, podrías ponerlo entre:


try
cadena := IntToStr(edCodigo.Text);
except
ShowMessage('Debe introducir solo números');
Exit;
end

//RESTO DE CODIGO


También podrías evaluarlo en el evento Onchange del Edit, realizando cada vez la comprobación anterior. es decir que todo lo que te mete es un número.

Espero que te sirva

kwan
04-09-2003, 22:33:09
Hola y gracias x contestar, perdona mi ignorancia pero soy nuevo en esto, donde pones cadena que parametros devo de poner??

Gracias de nuevo.

javiermorales
04-09-2003, 23:34:25
Hola de nuevo,no te había indicado nada sobre la variable cadena ya que no lo consideré necesario. Es simplemente una variable de tipo string, en tu ejemplo, sería así:


procedure TForm1.edCodigoKeyPress(Sender:TObject; var key: Char);

var
cadena: string;

Begin
If Key = #13 Then
Begin
Table1.First;
try
cadena := IntToStr(edCodigo.Text);
except
ShowMessage('Debe introducir solo números');
Exit;
end;

If Not Table1.Locate('N_CARNET',cadena,[])Then
ShowMessage('Ese Nº Carnet no existe');
end;


Un saludo

kwan
05-09-2003, 00:29:49
Hola de nuevo, meda error al compilar se queda el cursor donde esta en rojo:

try
cadena := IntToStr(edCodigo.Text)|;


de todas forma Gracias.

Rudi
05-09-2003, 06:56:59
disculpa javiermorales pero creo que la variable cadena tiene que ser integer y en el try se debe verificar si hay error en
try
Cadena := strtoint(edCodigo.Text);

Cadena : Integer; //o mayor si lo necesitas

luego el locate lo haces con edCodigo.Text y no con la variable Cadena.

marcoszorrilla
05-09-2003, 08:02:20
Prueba con esto:


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ( StrScan('0123456789',Key) <> nil ) or
( Key = Char(VK_BACK) ) then { Habilitar tecla de borrado }
begin
{Aqui tu tratamiento normal del evento}
end
else
Key := #0;
end;


Un Saludo.

javiermorales
05-09-2003, 08:35:37
Rudi, tienes toda la razón del mundo, ayer tenía las neuronas en otra parte.

kwan
05-09-2003, 16:42:27
Hola emprimer lugar Gracias a todos, con las correcciones de rudi las probe y me funcionan pero una cosa curiosa en tiempo de ejecucion me da error y eso me a liado un poco, con las de Marcos las probe pero me daba error y posiblemente funcionen tambien pero en tiempo de ejecucion me da error.

Un saludo a todos.

Rudi
05-09-2003, 16:55:24
ejecutando desde delphi te da un error o corriendo el ejecutable?

si es desde delphi, no te preocupes pues el compilador te advierte que no pudo transformar la cadena, pero dentro del try..except previenes que el ejecutable muetre el error, lo que haces es manipular el error en el except, en tu caso con un showmessage.

esto es para ambos casos, el de javiermorales y el de marcoszorrilla.

si el error te lo da en el ejecutable, especifica que error te da a ver que se puede hacer.

kwan
05-09-2003, 17:53:21
Hola Rudi creo k no me he explicado bien, cuando me crea el ejecutable si k funciona es cuando desde delphi le doy a ejecutar cuando da el error que ya tu bien me explicas por lo del try, una vez que me ha creado el ejecutable si funciona correctamente.

Gracias,

Kwan.

Rudi
05-09-2003, 19:43:54
A la orden, siempre es bueno saberse útil.