FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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'); Me imgino q tal ves pueda ser alguna propiedad del SQLConnection1 o SQLQuery1... Gracias por la ayuda
__________________
Joseph Buttgembach Verde Lima - Perú |
#2
|
|||
|
|||
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
__________________
Joseph Buttgembach Verde Lima - Perú |
#3
|
|||
|
|||
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
__________________
Joseph Buttgembach Verde Lima - Perú |
#4
|
|||
|
|||
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 Última edición por waly2k1 fecha: 23-09-2007 a las 04:34:51. |
|
|
|