Olá Fórum,
estou criando um sistema que usa tbrowse com célula referenciada.
Ou seja, a informação que consta do banco de dados atual (código do órgão) é convertida na referência (nome do órgão) em outro banco de dados, que é apresentada na tela com tbrowse.
Assim, se o registro atual do código do órgão contém o número “000023”, ele é pesquisado na tabela de órgãos e apresenta na tela, por exemplo, “SUNAB”, que é o nome referenciado.
Até aí tudo bem, funciona direitinho.
Mas agora estou precisando ordenar ou efetuar uma pesquisa nessa coluna que apresenta o nome.
Mas eu não tenho um índice ativo ou acessível para “nome do órgão”, mas apenas “código do órgão”.
Assim, se o usuário deseja efetuar a ordenação ou pesquisa de dados nessa coluna, eu “pego” a chave digitada pelo mesmo, que é um nome, procuro o nome na tabela própria (órgão), retorno o código e, então, procuro esse código no banco de dados atual, agora ordenado pelo código.
Funciona “quase” certinho, pois a pesquisa é efetuada mas os dados não ficam ordenados, apenas agrupados pelo código.
Para contornar o problema, estou pensando em utilizar array, colocando o conteúdo para o tbrowse dentro da mesma.
Dessa forma, poderei pesquisar e ordenar tranqüilamente a informação visualizada em tela.
Todavia, o crescimento do banco de dados é natural, e talvez é “tática” crie lentidão de processamento em face do volume de dados a serem verificados.
Igualmente, funcionando em rede, a preocupação com a integridade e atualização dos dados é importante, pelo que a base (de dados) deve ser constantemente verificada para refletir eventual alteração.
Há como contornar o problema?
Aguardo sugestões e experiências (boas ou más).
De acordo com o Vagner, o xharbour não tem o limite de 64k para o campos de caracteres e memo.
Então, seria conveniente armazenar informações do registro nestes campos, ou seja, ao invés de criar tabelas vinculadas, simplesmente lançar a informação no campo e depois tratá-la?
Por exemplo, num campo qualquer do registro de pedido, inserir os itens que compõe o mesmo.
Assim, no campo ITEMPED, literalmente, você insere o código do item, a descrição, quantidade, valor unitário, etc., em vez de fazê-lo com uma tabela vinculada.
Como definir o tamanho do campo para o máximo possível?
Também aguardo sugestões e experiências (boas ou más).
Opinião dos colegas
Moderador: Moderadores
Olá,
Tive um problema semelhante, mas era uma consulta temporária e tinha que "preparar" os dados para apresentar para o usuário. Dessa forma criei um índice temporário referenciando diretamente o campo descrição no outro arquivo, por exemplo ( bem simples mesmo ) :
use clientes alias cli new
set index to clientes
dbSetOrder(1) // por codigo do cliente, digamos codcli
use pedidos alias ped new
set index to pedidos
set relation to ped->codcli into cli
index on cli->nomecli + ped->codped to temp
daí, apresento no browse ordenado pelo nome e posso pesquisar a vontade. Mas essa é a criação de índice temporário e em uma consulta que não é frequente.
Acho que a pesquisa usando matrizes será bem rápida, mas tem o custo do processamento, atualização, etc.
Pode parecer meio POG ( http://desciclo.pedia.ws/wiki/Programa% ... Gambiarras ) mas a melhor forma acho que é guardar também as descrições no seu arquivo. O custo do armazenamento é pequeno hoje em dia, valendo a pena "desnormalizar" o arquivo.
[]s
Manoel Angeiras
Tive um problema semelhante, mas era uma consulta temporária e tinha que "preparar" os dados para apresentar para o usuário. Dessa forma criei um índice temporário referenciando diretamente o campo descrição no outro arquivo, por exemplo ( bem simples mesmo ) :
use clientes alias cli new
set index to clientes
dbSetOrder(1) // por codigo do cliente, digamos codcli
use pedidos alias ped new
set index to pedidos
set relation to ped->codcli into cli
index on cli->nomecli + ped->codped to temp
daí, apresento no browse ordenado pelo nome e posso pesquisar a vontade. Mas essa é a criação de índice temporário e em uma consulta que não é frequente.
Acho que a pesquisa usando matrizes será bem rápida, mas tem o custo do processamento, atualização, etc.
Pode parecer meio POG ( http://desciclo.pedia.ws/wiki/Programa% ... Gambiarras ) mas a melhor forma acho que é guardar também as descrições no seu arquivo. O custo do armazenamento é pequeno hoje em dia, valendo a pena "desnormalizar" o arquivo.
[]s
Manoel Angeiras
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin

