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)
-   -   Like con DBExpress (https://www.clubdelphi.com/foros/showthread.php?t=26085)

Esau 12-10-2005 21:10:19

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

vtdeleon 12-10-2005 23:23:39

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;

Esau 13-10-2005 03:21:48

Ya lo probe sigue saliendo el mismo error

Caro 13-10-2005 16:33:28

Hola

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

Saludos

Esau 15-10-2005 18:50:16

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


La franja horaria es GMT +2. Ahora son las 12:29:38.

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