FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
Hola, Javier_A.
Código:
Has probado con: FindKey(['ValorCampo1','ValorCampo2']);
__________________
Lo importante no es saber, sino tener el e-mail del que sabe. |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
Pon un trozo de código para ver en que te estás equibocando, porque FindKey funciona bien
Mira que la tabla esté indexada por los campos de búsqueda |
#5
|
|||
|
|||
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 |
#6
|
|||
|
|||
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 |
|
|
|