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)
-   -   Realizar una consulta por el campo teléfono de mi tabla (https://www.clubdelphi.com/foros/showthread.php?t=62149)

silver07 05-12-2008 21:23:06

Realizar una consulta por el campo teléfono de mi tabla
 
Hola amigos del club delphi, estaba tratando de realizar una consulta por el campo teléfono de mi tabla de la siguiente manera (809)999-9999, pero cuando limpio el mask edit los simbolos ( ) - se limpian y ahí esta el problema, cómo puedo hacer para que me permita digitar el número de teléfono una vez presione limpiar sin que se me quiten los simbolos y no me ocasione ningún error???, o si se puede hacer la consulta del teléfono como un valor entero ej. 809999999, sin que los simbolos ( ) - aún estando el tel. registrado de esta manera (809)999-9999, sean algún problema al momento de realizar la consulta.

Muchas gracias a cualquiera que pueda darme una ayuda con esto...:confused:

droguerman 05-12-2008 22:54:14

creo que era:
Código Delphi [-]
masked.editText := '';

Ana María 06-12-2008 15:21:57

Hola, podrías crear otro campo en la tabla con el nombre NorTelefono en el cual se guardará una versión normalizada del número telefónico y podrías utilizar la siguiente función:

Código Delphi [-]
function NormalizarNumero(Cad : string) : string;
 var
 I:integer;
 TempCad : string;
  begin
   Result := Cad;
    for i := 1 to Length(Cad) do
     if not (Cad[i]in['0'..'9']) then
       begin
        TempCad := Result;
        while Pos(Cad[i], TempCad) > 0 do
        Delete(TempCad, Pos(Cad[i], TempCad), 1);
        Result:= TempCad;
       end;
  end;



y llamarla en el evento en el evento beforePost de la tabla

Código Delphi [-]
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
 Table1.FieldByName('NormTelefono').Value :=
 NormalizarNumero(Table1.FieldByName('Telefono').AsString);
end;



Y despues puedes consultar el telefono sin normalizar pasando como parámetro el numero normalizado ( permitiendole al usuario que lo escriba como quiera.


Código Delphi [-]
parametro := NormalizarNumero(Edit1.Text)


Saludos

Ana María 06-12-2008 15:36:17

Mas Claro
 
Hice algo mal y no me funcionaron las etiquetas.
Lo repito. ( Esta técnica te da mas flexibilidad tanto a la hora de guardar como a la hora de consultar los números)

Código Delphi [-]function NormalizarNumero(Cad : string) : string;
var
I:integer;
TempCad : string;
begin
Result := Cad;
for i := 1 to Length(Cad) do
if not (Cad[i]in['0'..'9']) then
begin
TempCad := Result;
while Pos(Cad[i], TempCad) > 0 do
Delete(TempCad, Pos(Cad[i], TempCad), 1);
Result:= TempCad;
end;
end;
//la llamas en el evento BeforePost
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
Table1.FieldByName('NormTelefono').Value :=
NormalizarNumero(Table1.FieldByName('Telefono').AsString);
end;
// Y consultas pasando como parámetro el número normalizado
parametro := NormalizarNumero(Edit1.Text)

pcicom 07-12-2008 21:45:05

Saludos Anita..

para poner las etquitetas de codigo delphi es
[ DELPHI ] contenido [ /DELPHI ]

Sin espacios despues del corchete y sin espacios al CERRAR
ejemplo:
Código Delphi [-]
Var uno:integer;
begin
    uno := 1;
end;

Cita:

Empezado por Ana María (Mensaje 330014)
Hola, podrías crear otro campo en la tabla con el nombre NorTelefono en el cual se guardará una versión normalizada del número telefónico y podrías utilizar la siguiente función:

Código Delphi [-]function NormalizarNumero(Cad : string) : string;
var
I:integer;
TempCad : string;
begin
Result := Cad;
for i := 1 to Length(Cad) do
if not (Cad[i]in['0'..'9']) then
begin
TempCad := Result;
while Pos(Cad[i], TempCad) > 0 do
Delete(TempCad, Pos(Cad[i], TempCad), 1);
Result:= TempCad;
end;
end;




y llamarla en el evento en el evento beforePost de la tabla

Código Delphi [-]procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
Table1.FieldByName('NormTelefono').Value :=
NormalizarNumero(Table1.FieldByName('Telefono').AsString);
end;




Y despues puedes consultar el telefono sin normalizar pasando como parámetro el numero normalizado ( permitiendole al usuario que lo escriba como quiera.


Código Delphi [-]parametro := NormalizarNumero(Edit1.Text)



Saludos



La franja horaria es GMT +2. Ahora son las 11:39:26.

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