![]() |
Un indice compuesto por dos campos
Estoy intentando acceder a una tabla, ( por BDE ),que su indice esta --- compuesto por 2 items ---- y no logro acceder a ningun registro a no ser que me monte una lectura secuencial.
Que tengo que ponerle al SetKey o FindKey o Locate o Findnereast para que pueda utilizar ese puñetero indice( formado por dos campos) que me esta poniendo de los nervios. Un saludo a todos |
Hola, Javier_A.
Código:
Has probado con: FindKey(['ValorCampo1','ValorCampo2']); |
Gracias por contestar JavierB,
Ya he probado .... FindKey(['ValorCampo1','ValorCampo2']); y no ha habido ningun resultado, quiero decir que Findkey es una funcion boleana que devuelve True , si encuentra el dato y False en caso contrario, y no hay manera, el resultado siempre es False y el registro que me saca es aleatorio. Gracias de nuevo y un saludo |
Pon un trozo de código para ver en que te estás equibocando, porque FindKey funciona bien :confused:
Mira que la tabla esté indexada por los campos de búsqueda |
Hola Cadetill
Aqui te envio una muestra: La instruccion Table1.gotokey no la ejecuta porque no encuentra nada en el FindKey procedure TForm1.Button1Click(Sender: TObject); begin Table1.Active:=True; Table1.IndexFieldNames:='EMPRES;CLCODI'; if Table1.FindKey([001,116])then Table1.gotoKey end; Quizas el problema se encuentre en que tanto EMPRES como CLCODI forman un solo indice en el AS400( Un fichero logico ), y no se puede acceder como si fuesen dos indices, ( creo yo, pero no estoy muy seguro). No obstante, ahora voy a probar mandando SQL's, a ver que tal de velocidad, pues ni la lectura secuencial, (While), ni los filtros son practicos para el software que estoy desarrollando. Si encuentras o averiguas algo, comentamelo. Un millon de gracias....Javier |
mmmm, no no, eso funciona muy bien en el As400 ;)
Supongo que el problema será que 'EMPRES' es de tipo alfanumérico, por lo que el FindKey debería de quedar así Código:
if Table1.FindKey(['001',116])then Nota1: recuerda que cualquier valor de cadena, ha de ir entrecomillado Nota2: el FindKey, a parte de decirte si existe o no, también se te posiciona en el registro, por lo que no es necesario el GotoKey |
La franja horaria es GMT +2. Ahora son las 11:43:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi