Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error en busqueda. (https://www.clubdelphi.com/foros/showthread.php?t=3379)

kwan 04-09-2003 14:57:26

Error en busqueda.
 
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:

Código:

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í:

Código:

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:

Código:

          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.


La franja horaria es GMT +2. Ahora son las 08:09:24.

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