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

Oxa78 11-02-2005 18:44:05

DBExpress e IndexFieldNames
 
Saludos, gracias de antemando por toda la ayuda q siempre me brindan

... y nuevamente las torturas

Luego de migrar de Delphi 5 a Delphi 7, y cambiar el BDE x DBExpress, tengo la siguiente estructura de conexión :

Base de Datos : MS SQL Server 2000

SQLConnection1

SQLQuery1 + DataSetProvider1

DCOMConnection

ClientDataSet1 + DataSource1

y en alguna parte del codigo ejecuto esta busqueda indexando el ClientDataSet1:

Código:

    ClientDataSet1.IndexFieldNames  := 'GRUPOID';     
    ClientDataSet1.SetKey;
    ClientDataSet1.FieldByName('GRUPOID').AsString := 'DATO78';
    If ClientDataSet1.GotoKey then
        ShowMessage('Registro Encontrado')
    Else
        ShowMessage('No se Econtro el Registro');

* El problema es q a pesar de q existe el dato en la tabla respectiva, no encuentra el dato. Y lo peor es q con la aplicacion q utiliza BDE no tiene problemas, todos los componentes tienen las propiedades por defecto...

Me imgino q tal ves pueda ser alguna propiedad del SQLConnection1 o
SQLQuery1...

Gracias por la ayuda

Oxa78 27-04-2007 19:29:16

Saludos, paso varios años desde q publique el mensaje, quería dejar el BDE y pasar a DBExpress, quise volver a realizar al migración hice pruebas con DBExpress y buscar con IndexFieldNames, SetKey y GotoKey pero aun no funciona estoy con D7 tengo el Update 7.1.

Alguien tendra alguna idea de como solucionar este asunto.

Muchas gracias nuevamente por la ayuda

Oxa78 22-09-2007 18:32:46

Saludos, y la respuesta es, con DBExpress si tu campo es CAHR te llena de espacios en blanco por eso la busqueda con SetKey, GotoKet no funciona, los campos deben ser VARCHAR

waly2k1 23-09-2007 01:43:25

Rta
 
No es problema del DBExpress sino que al ser un campo de tipo Char en cualquier BD te almacena la cantidad de espacios hasta completar la cantidad definida en la tabla. El campo Char es recomendable en campos de longitud fíja, ya que es muy superior en perfomance a un varchar, Por qué?, bueno, pq en tipo Varchar lo que almacena en realidad es un puntero que apunta a la posicion real y no el dato propiamente dicho. Y si usas CHAR debes completar con espacios la cantidad definida en el campo menos la longitud de la cadena a buscar o bien usas LIKE <valor>%.

Otra cosa si usas SQL Server, usa ADO ya que es nativo y no otros componentes 'genéricos', además es mucho mas sencillo
Saludos


La franja horaria es GMT +2. Ahora son las 19:14:44.

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