Olá Amigos
Boa Tarde
Estou aqui novamente com mais uma dúvida que gostaria da ajuda dos amigos: É o seguinte:
Tenho dois Arquivos:
CadOds.Dbf Com os seguintes campos:
NroDos,c,08
DatEmi,D,08
CodUsu,C,10
CodEqu,C,03
NomEqu,C,12
IteOds.Dbf Com os seguintes campos:
OrdIte,C,08
CodSer,C,03
DesSer,C,45
VlrSer,N,10,02
Ambos os arquivos estão indexados pelo primeiro campo, ou seja: NroOds e OrdIte ok
Fiz uma consulta da seguinte maneira:
Mostro no DbEdit todos os registros do CadOds
Quando eu teclo numa determinada ordem de serviço, o sistema me mostra os itens dessa ordem, só que estar demorando
para mostrar os itens, ambos os arquivos tem mais de 130.000 itens. Como fazer para essa consulta ser mais rápido e ao mesmo tempo em dois computadores em rede, ou seja, ao mesmo tempo dois usuários consultando?
Estar da seguinte maneira, quando eu escolho a ordem de serviço, eu abro o arquivo de itens, gero um arquivo temporário
com os itens dessa ordem e em seguida mostro num dbedit, quando saio fecho esse arquivo, deleto esse arquivo temporário e volto para o arquivo de ordens.
Eu uso índices Ntx.
Poucos registros, mostram rapidinho, mas agora estar demorando para mostrar, existe outra forma de rotina onde posso
mostrar mais rápido?
Atenciosamente.
Consulta mais rápida
Moderador: Moderadores
- Ricardo Sales Ribeiro
- Usuário Nível 3

- Mensagens: 279
- Registrado em: 13 Jul 2004 18:06
- Localização: Fortaleza-Ceara
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Consulta mais rápida
Olá!
Se você estiver usando Clipper 5.3 poderá usar a função OrdScope().
Já no 5.2, teria a opção de usar SubNtx() ou as rotinas TBrowse For While do Rick Spence, que são ótimas.
Se você estiver usando Clipper 5.3 poderá usar a função OrdScope().
Já no 5.2, teria a opção de usar SubNtx() ou as rotinas TBrowse For While do Rick Spence, que são ótimas.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Ricardo Sales Ribeiro
- Usuário Nível 3

- Mensagens: 279
- Registrado em: 13 Jul 2004 18:06
- Localização: Fortaleza-Ceara
Consulta mais rápida
Olá Boa Noite
Amigo alxsts
Eu uso a versão 5.2, e confesso que não sei utilizar esta função que o amigo sugeriu. Seria pedir muito se o amigo
me ensinasse, estou com esse problema e preciso resolver.
Atenciosamente
Amigo alxsts
Eu uso a versão 5.2, e confesso que não sei utilizar esta função que o amigo sugeriu. Seria pedir muito se o amigo
me ensinasse, estou com esse problema e preciso resolver.
Atenciosamente
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Consulta mais rápida
Olá!
Não conheço seu sistema mas, não seria possível migrar para Harbour? Isto traria várias vantagens e a migração consiste em apenas compilar o teu sistema com Harbour, ficando em modo console mesmo. Os sistemas em Clipper, 16 bits, estão ficando cada vez mais restritos a poucos sistemas operacionais.
Quanto ao exemplo, vou ver o que consigo.
Não conheço seu sistema mas, não seria possível migrar para Harbour? Isto traria várias vantagens e a migração consiste em apenas compilar o teu sistema com Harbour, ficando em modo console mesmo. Os sistemas em Clipper, 16 bits, estão ficando cada vez mais restritos a poucos sistemas operacionais.
Quanto ao exemplo, vou ver o que consigo.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Consulta mais rápida
Amiguinho,
Exemplos:
Outros exemplos, filtragem de itens vinculados a um cliente. O filtro pega somente seus itens, mas dentro de um certo periodo
Exemplos:
Código: Selecionar todos
// Ordenado por IDPEDIDO
dbSelectArea( "PEDIDOS" )
M->IDPEDIDO := PEDIDOS->IDPEDIDO
...
dbSelectArea( "ITENS" )
OrdSetFocus( 1 ) // Ordem pelo campo IDPEDIDO
OrdScope(0, STR(M->IDPEDIDO,6,0) )
OrdScope(1, STR(M->IDPEDIDO,6,0) )
dbGoTop()
...
Código: Selecionar todos
// Ordenado por IDCLIENTE
dbSelectArea( "CLIENTES" )
nIDCliente := CLIENTES->IDCLIENTE
...
dDataInicio := ctod("01/01/2000")
dDataFinal := date()
//
dbSelectArea( "ITENS" )
OrdSetFocus( 16 ) // Ordem indexada pelos campos IDCLIENTE e DATAPED
OrdScope(0, strzero(nIDCliente,5,0)+DTOS(dDataInicio) )
OrdScope(1, strzero(nIDCliente,5,0)+DTOS(dDataFinal) )
dbGotop()
...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Consulta mais rápida
Ricardo, bom dia..
Para o caso que vc relatou, eu uso recurso do TBrwose, e nao tenho problemas com velocidade..
Nos fontes que te mandei da contabilidade, tem relatorios que sao gerados no video e depois enviados para impressora atraves do F9.
Nesses relatorios ha varias execuções em que faço a rotina que vc precisa, de forma rapida. Numa delas, que é a conciliaçao contabil, é possivel, inclusive alterar um lançamento contabil em conciliaçao, atraves da TBrowse.
Se voce pesquisar nos fontes, vai encontrar o exemplo de aplicaçao do tbrowse e resolver seu problema.
E isso é nativo do clipper 5.2, nao é funcao especifica.
Para o caso que vc relatou, eu uso recurso do TBrwose, e nao tenho problemas com velocidade..
Nos fontes que te mandei da contabilidade, tem relatorios que sao gerados no video e depois enviados para impressora atraves do F9.
Nesses relatorios ha varias execuções em que faço a rotina que vc precisa, de forma rapida. Numa delas, que é a conciliaçao contabil, é possivel, inclusive alterar um lançamento contabil em conciliaçao, atraves da TBrowse.
Se voce pesquisar nos fontes, vai encontrar o exemplo de aplicaçao do tbrowse e resolver seu problema.
E isso é nativo do clipper 5.2, nao é funcao especifica.