Retornar características de item chave.
FKEY (<exp.C1>, <exp.C2>[, <vet.C>])
|
<exp.C1> |
Representa o nome do arquivo do banco de dados. |
|
<exp.C2> |
Representa o nome de um item. |
|
<vet.C> |
Representa um vetor cadeia. |
Retorna um valor numérico correspondente ao tipo do item passado como argumento. Caso seja declarado <vet.C> como argumento, este vetor é preenchido com informações adicionais sobre a chave <exp.C2>.
O valor retornado corresponde a soma, ou a um, dos valores descritos a seguir:
1 - Para chave primária,
2 - Para chave estrangeira,
3 - Para chave de busca,
10 - Para chave virtual,
100 - Para chave única,
1000 - Para chave nula,
10000 - Exclui em cascata,
20000 - Valor nulo em cascata na exclusão,
100000 - Altera em cascata,
200000 - Valor nulo em cascata na alteração.
O vetor <vet.C> é preenchido com informações adicionais.
No caso de chave primária somente o primeiro elemento do vetor é utilizado, sendo preenchido com o numero de arquivos associados à chave.
No caso de chave estrangeira, somente o primeiro elemento do vetor é utilizado, sendo preenchido com o nome do arquivo entidade associado a chave.
No caso de chave virtual, os elementos do vetor serão preenchidos com o nome dos itens que compõem a chave virtual. No caso de chave virtual estrangeira, o primeiro elemento é preenchido com o nome da entidade associada e os demais são preenchidos com o nome dos itens que compõem a chave virtual.
Esta função retorna -1 (menos um) quando:
<exp.C1> não for arquivo do banco de dados,
<exp.C2> não for chave no arquivo <exp.C1> ou qualquer outra incoerência.
Caso FKEY retorne -1, o vetor <vet.C> retornará com seus elementos preenchidos de brancos.
O exemplo a seguir mostra como utilizar esta função.
PROG
DECLARE vet_cad[3] = space (12)
ret = FOPEN ("bdemp1", "a", 33, 2)
IF ret # 0
MESSAGE "Erro na abertura do banco" blink
QUIT (2)
ENDIF
? FKEY ("tab_vend", "id1_func", vet_cad) && Exibirá 102 (estrangeira e única)
? vet_cad[1] && Exibirá tab_func
? FKEY ("tab_func", "id0_func", vet_cad) && Exibirá 1 (chave primaria)
? vet_cad[1] && Exibirá 0000000003