FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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 Espero que te sirva |
#3
|
|||
|
|||
Hola y gracias x contestar, perdona mi ignorancia pero soy nuevo en esto, donde pones cadena que parametros devo de poner??
Gracias de nuevo. |
#4
|
||||
|
||||
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; |
#5
|
|||
|
|||
Hola de nuevo, meda error al compilar se queda el cursor donde esta en rojo:
try cadena := IntToStr(edCodigo.Text)|; de todas forma Gracias. |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
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; |
#8
|
||||
|
||||
Rudi, tienes toda la razón del mundo, ayer tenía las neuronas en otra parte.
|
#9
|
|||
|
|||
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. |
#10
|
|||
|
|||
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. |
#11
|
|||
|
|||
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. |
#12
|
|||
|
|||
A la orden, siempre es bueno saberse útil.
|
|
|
|