Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question Pasar consulta de FireBird a MS SQL server 2000

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

Código SQL [-]
 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

Código Delphi [-]
 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
Código Delphi [-]
condi:=' (rtrim(nombre) ||'' ''|| rtrim(apellidos)) containing :data'+'0'
si me equivoco espero me corrijan

lo e puesto asi
Código Delphi [-]
condi:=' (rtrim(nombre)+'' ''+rtrim(apellidos));

me marca erro de parentecis =S

cual quier ayuda sera muy bien agradecida

gracias

saludos
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #2  
Antiguo 29-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
No he podido probar el código SQL, pero creo que || se cambia por | y containing por having. Es decir:
Código SQL [-]
select codemp,nombre,apellidos
from empleados
Having (trim(nombre) | trim(apellidos)) :data
Esto no lo he podido comprobar, solo espero que al menos te de una idea (y si mi idea es totalmente errónea, pues tambien sáquenme de mi ignorancia )

Con respecto a tu cambio, creo que sería:

Código Delphi [-]
condi:=' (rtrim(nombre) + '' '' + rtrim(apellidos)) ';
__________________


Última edición por ContraVeneno fecha: 29-08-2005 a las 21:19:06.
Responder Con Cita
  #3  
Antiguo 29-08-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
muchas gracias contraveneno

lo probare

saludos

depues te digo como me fue
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #4  
Antiguo 30-08-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
nop no corrio

dice que no es .

tambien probe con "contains"

y tampoco.

marca erro "objeto parameter mal definido"

=S

creo que hando mas perdido que un machihui de 15 dias

probe asi

Código Delphi [-]
 condi:='having (rtrim(nombre)+'' ''+ rtrim(apellidos)):data'+'0';

y tambien

Código Delphi [-]
 condi:=' (rtrim(nombre) +'' ''+ rtrim(apellidos))having :data'+'0';

Código Delphi [-]
 condi:='having (rtrim(nombre) | rtrim(apellidos)):data'+'0';

y varias mas formas =S


se supones el sql deve ser igual donde sea ¬¬

=P

saludos
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #5  
Antiguo 30-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Código Delphi [-]
condi:='(rtrim(nombre) | rtrim(apellidos)) like '+ QuoteStr('%'+Vardata[n]+'%') ;
En lugar de utilizar el parametro data, la cual la utilice como un arreglo para el proposito. Puedes declara un variable String (VarData:array of string).
Pues con el || no estoy seguro como se debe utilizar en MSSQL pero intenta con '&'
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 30-08-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
gracias por responder otraves.

ahiva mas o menos

el problem que tengo ahora

es de pasar el texto del edit

a la variabe

vardata

ya que con
Código Delphi [-]
 cadena.commatext:=edit.text;

pasar el texto a la variable cadena y si ahi un espacio los separa por item como en una lista

el probla que teno esl como pasar eso al "vardata" para comparar esos token con [n]

eh intengo asi:
Código Delphi [-]
 vardata:=cadena.text;
 
 vardata:=cadena[n];
 
 vardata:=cadena.commatext;

creo que para aseder a esalista que se genera separando es (x,y) para pasarse para abajo

por que pongo cadena[n] pero nomas cuando es "1" me da el valor ya cuando es "2" no me lo da, entonses crewo que deve ser "2,1"

=S


saludos
saludos
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #7  
Antiguo 30-08-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Lightbulb

bueno ya resolvi ese pequeño problemita

puse a recompilar el cerebro

y salio que

Código Delphi [-]
 cadena.strings[n];

me daba lo que estaba buscado

saludos

__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #8  
Antiguo 30-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Que bueno que ya se resolvió. La siguiente tarea será escribir un mensaje sin errores de ortografía.
Lo digo con todo respeto.
Saludos.
__________________

Responder Con Cita
  #9  
Antiguo 30-08-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Thumbs up

buen punto

creo que mi compilador handa fallando en ese aspecto
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:03:46.


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
Copyright 1996-2007 Club Delphi