sakuragi
29-08-2005, 18:29:53
hola que tal
encontre una funcion por aqui e los foros
pero viene en fireBird
no eh podido pasar una sentencia a ms sql.
este el codigo en FIREBIRD
select codemp,nombre,apellidos
from empleados
where (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data
:date es de
parambyname('data'+inttostr(n)).asstring:=cadena[n];
esto lo saque de la una consulta que se parese al winamp.
"containing" esta funcion de firebird no se como haser en MS sql para que funcione igual
bueno les pongo el codigo de toda la consulta tipo winamp hecha por vtdeleon (member.php?u=2723)
procedure Tfrmbuscar.FormCreate(Sender: TObject);
begin
vbusca.Clear;//Edit
Codigo:='';//DECLARADA PRIVATE
cadena:=TStringList.Create;//DECLARADA PRIVATE
Query1.Close;
with Query1.SQL do begin
Clear;
Add('select Codemp, Nombre, apellidos');//+column );
Add('from empleados');//+tabla);
end;
Query1.Open;
end;
procedure Tfrmbuscar.vbuscaKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
n:integer;
begin
if (Length(trim(vbusca.Text))>0) then
if key in [VkKeyScanA('A')..VkKeyScan('Z'), VkKeyScanA('0')..VkKeyScan('9'),
VK_BACK, vk_space, vk_delete] then begin
cadena.CommaText:=vbusca.Text;
with Query1 do begin
Close;
if cadena.Count<>nkey then begin
condi:=' (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+'0';
for n:= 1 to cadena.Count-1 do begin
condi:=condi +' and (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+inttostr(n);
end;
if SQL.Count>2 then
sql.Delete(2);
sql.Insert(2,'where '+condi);
end;
for n:=0 to ParamCount-1 do begin
ParamByName('data'+inttostr(n)).AsString:=cadena[n];
end;
nkey:=n;
if not Prepared then
Prepare;
Open;
end;
end;{ else key:= #0;}
end;
ya le he estado intentando hasrlo funcionar con ms sql pero me ha sido en bano
eh modificado mucho pero creo que el principal problem esta en
condi:=' (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+'0'
si me equivoco espero me corrijan
lo e puesto asi
condi:=' (rtrim(nombre)+'' ''+rtrim(apellidos));
me marca erro de parentecis =S
cual quier ayuda sera muy bien agradecida
gracias
saludos
encontre una funcion por aqui e los foros
pero viene en fireBird
no eh podido pasar una sentencia a ms sql.
este el codigo en FIREBIRD
select codemp,nombre,apellidos
from empleados
where (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data
:date es de
parambyname('data'+inttostr(n)).asstring:=cadena[n];
esto lo saque de la una consulta que se parese al winamp.
"containing" esta funcion de firebird no se como haser en MS sql para que funcione igual
bueno les pongo el codigo de toda la consulta tipo winamp hecha por vtdeleon (member.php?u=2723)
procedure Tfrmbuscar.FormCreate(Sender: TObject);
begin
vbusca.Clear;//Edit
Codigo:='';//DECLARADA PRIVATE
cadena:=TStringList.Create;//DECLARADA PRIVATE
Query1.Close;
with Query1.SQL do begin
Clear;
Add('select Codemp, Nombre, apellidos');//+column );
Add('from empleados');//+tabla);
end;
Query1.Open;
end;
procedure Tfrmbuscar.vbuscaKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
n:integer;
begin
if (Length(trim(vbusca.Text))>0) then
if key in [VkKeyScanA('A')..VkKeyScan('Z'), VkKeyScanA('0')..VkKeyScan('9'),
VK_BACK, vk_space, vk_delete] then begin
cadena.CommaText:=vbusca.Text;
with Query1 do begin
Close;
if cadena.Count<>nkey then begin
condi:=' (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+'0';
for n:= 1 to cadena.Count-1 do begin
condi:=condi +' and (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+inttostr(n);
end;
if SQL.Count>2 then
sql.Delete(2);
sql.Insert(2,'where '+condi);
end;
for n:=0 to ParamCount-1 do begin
ParamByName('data'+inttostr(n)).AsString:=cadena[n];
end;
nkey:=n;
if not Prepared then
Prepare;
Open;
end;
end;{ else key:= #0;}
end;
ya le he estado intentando hasrlo funcionar con ms sql pero me ha sido en bano
eh modificado mucho pero creo que el principal problem esta en
condi:=' (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+'0'
si me equivoco espero me corrijan
lo e puesto asi
condi:=' (rtrim(nombre)+'' ''+rtrim(apellidos));
me marca erro de parentecis =S
cual quier ayuda sera muy bien agradecida
gracias
saludos