Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-10-2005
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Post Like con DBExpress

Hola Amigos tengo un problema, estoy investigando acerca de los controles DBExpress, de verdad el tiempo de Acceso es bastante rapido y no necesita mucho HARDWARE lo he probado en distintas configuraciones y los resultados han sido muy buenos...
hasta aqui todo bien hasta que me tope con un LIKE. especificamente hice esto
puse una conexion DBExpress, Luego un SQLQuery, luego un Provider, Un ClientDataSet y un DataSource...
la propiedad SQL del SQLQuery dice Asi
Código SQL [-]
 Select * from Personal Where Nombres Like :Variable
luego cuando lo llamo a travez del ClienteDataset lo Hago Asi
Código Delphi [-]
ClientDataSet1.Close;
ClientDataSet1.Params.ParamByName('Variable').Value := QuotedStr('%'+Edit1.Text+'%');
ClientDataSet1.Open;
La Consulta se ejecuta todo bien no arroja ningun error pero no arroja ningun registro a pesar que probe la misma consulta en el Analizador de SQL Server y si obtuve registros.
Hice lo mismo con BDE y con ADO y obtengo resultados, pero con DBExpress no obtengo ningun registro.
Alguien me puede Ayudar
Responder Con Cita
  #2  
Antiguo 12-10-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

No veo error en tu consulta, ni en cómo asignas el parametro, pero intenta establecer el tipo de dato:

Código Delphi [-]
 ClientDataSet1.Params.ParamByName('Variable').DataType:= ftString;
__________________
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!

Última edición por dec fecha: 13-10-2005 a las 00:58:19. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #3  
Antiguo 13-10-2005
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Ya lo probe sigue saliendo el mismo error
Responder Con Cita
  #4  
Antiguo 13-10-2005
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola

Código Delphi [-]
ClientDataSet1.Close;
ClientDataSet1.Params.ParamByName('Variable').Value :='%'+Edit1.Text+'%';
ClientDataSet1.Open;

Saludos
Responder Con Cita
  #5  
Antiguo 15-10-2005
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Solucion

Bueno amigo Caro temo decirte que la solucion que me ofreces no funciona, al parecer hay un error en el mismo control...
lo explicare mejor:
tengo una Tabla en un servidor SQL Server 2000 que corre sobre Windows 2003 Server, Tengo campos en mi tabla les dare solo los importantes...
Codigo Varchar(10), ApPaterno Varchar(20) ApMaterno VarChar(20) Nombres varchar(20), el campo clave en mi tabla es Codigo. En el campo codigo existen datos de 8 caracteres y de 10 caracteres, suponiendo que tengo los datos
Codigo : '00980432' -> este dato tienen 8 carateres
Codigo : '1013257613' -> este dato tiene 10 caracteres

cuando hago una busqueda con DBExpres y el valor '00980432' dentro del parametro, no arroja ningun registro, pero cuando paso el dato '1013257613' si arroja registro, ahora hice la prueba de pasar este dato '00980432 ' "dese cuenta que al final se tiene dos espacios en blanco", cuando ejecuto , si me arroja el registro que busco... algo parecido sucede con el Like o quizas peor, ahora la solucion que he propuesto es esto...
Código Delphi [-]
procedure TForm_Buscar.BuscarClick(Sender: TObject);
begin
  ClientDataSet1.Close;
  SQLQuery.Close;
  SQLQuery.SQL.Clear;
  if DBCodigo.Text <> '' then
    Begin
      SQLQuery.SQL.Add('Select Codigo from Personal where Codigo = '+Char(39)+DBCodigo.Text+Char(39));
      Query.Open;
      if ClientDataSet1.RecordCount = 0 then
             ShowMessage('El Codigo '+DBCodigo.Text+' no se encuentra en la Base de datos, por favor Verificar...');
    End;
End;
Con el LIKE sucede algo parecido, lo que hago es cerrar el conjunto de datos cliente luego armar la consulta en el SQLQuery no pasar parametros y luego Abrir el Conjunto de Datos Cliente, de esta forma consigo registros...
para el Like Hice esto.
Código Delphi [-]
  if Length(DbNombre.Text) <> 0 then
    Begin
             ClientDataSet1.Close;
      SQLQuery.SQL.Add('Select Codigo, Nombres from Personal where Nombres like '+Char(39)+'%'+DBNombre.Text+'%'+Char(39)+' ');
      ClientDataSet1.Open;
    End;

Hata Ahora todo funciona bien con esta solucion ya he implementado algunas DLL y Modulos Con DBExpres... si alguien tiene alguna otra sugerencia me gustaria saberla...
Gracias por Todo

Última edición por Esau fecha: 15-10-2005 a las 18:55:14.
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 12:49:06.


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