Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
9 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 9 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Alterar uma palavra num arquivo de texto
Ontem à(s) 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

» Pesquisa em grid
14/9/2016, 09:24 por AJC

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6960 usuários registrados
O último usuário registrado atende pelo nome de Maycon Hersing

Os nossos membros postaram um total de 17118 mensagens em 2576 assuntos

USO COMANDO SEEK

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Em curso USO COMANDO SEEK

Mensagem por AJC em 10/10/2013, 09:28

Pessoal como faço para fazer um pesquisa letra a letra usando o comando seek em uma tabela indexado por codigo e nome usando o mesmo textbox, atraves do select consigo, mas nao estou conseguindo com o seek.
Exemplo: tenho um textbox onde digito ou numero a numero ou letra a letra e o select filtra no meu grid os dados para escolha, mas esta lento demais pois banco dados e bem grande, preciso passar a usar indices e fazer o mesmo trabalho usando o seek, voces tem alguma ideia.

Antonio

AJC
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por rrfsistemas em 11/10/2013, 00:28

AJC, como está seu select ?
O BD usa índices no select ? Caso não, fica lento mesmo...
O Select pode utilizar os mesmos índices para otimizar a consulta.

rrfsistemas
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por Julio em 11/10/2013, 08:57

Não sei se vai lhe ajudar.
Achei este codigo quando precisei retirar letra a letra de um textbox, so que é com for:

Código:
c= ALLTRIM(thisform.text1.Value) && pegar todo textbox eliminando espaços laterais.
n= LEN(c) && retorna o nr de caracter contido na expressão c

FOR a = 1 TO n
cString= SUBSTR(c, a, 1) && pegar um caracter por vez
MESSAGEBOX( "O caracter da posição " + TRANSFORM(a) + " é: " + TRANSFORM(cstring) )

DO CASE
CASE UPPER(cString)= "A"
*- O chr A foi capturado
CASE UPPER(cString)= "B"
*- O chr B foi capturado
...
restante do codigo
...
CASE EMPTY(cString)
*- Representa espaço

OTHERWISE

ENDCASE

ENDFOR

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por Roberto em 11/10/2013, 11:59

poderia ser mais claro, e citar um exemplo

Roberto
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Em curso SEEK

Mensagem por AJC em 11/10/2013, 13:34

rrfsistemas quanto a usar indices para otimizar o select voce poderia me dar um exemplo de uso seu?

Julio legal sua ideia vai ser util, mas no meu caso tenho um textbox somente para inserir nele numero a numero do codigo ou letra a letra do nome e com select ele pesquisa e filtra no grid abaixo do textbox de pesquisa, isto porque estou usando como metodo pdv ou seja bco dados clientes estao em cada terminal, se usar em rede checando direto no servidor o sistema para
Antonio

AJC
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por rrfsistemas em 12/10/2013, 01:43

Você pode acelerar o acesso a dados em tabelas utilizando índices e buffer com eficiência. Além disso, você pode se beneficiar da tecnologia Rushmore para otimizar suas consultas.
É importante compreender quando as consultas serão otimizadas e quando não serão. O Visual FoxPro otimiza condições de consulta, procurando uma correspondência exata entre o lado esquerdo de uma expressão de filtro e uma expressão de chave de índice. Por isso, com a tecnologia Rushmore, uma expressão só poderá ser otimizada, se você procurar em relação à expressão exata usada em um índice.
Por exemplo, suponha que você tenha acabado de criar uma tabela e esteja adicionando o primeiro índice utilizando um comando como o seguinte:
USE T_Nome_01
INDEX ON UPPER(ca_name) TAG tag_name

O comando a seguir não é otimizável, pois a condição de procura baseia-se apenas no campo ca_name, não em uma expressão que é indexada:

SELECT * FROM customers WHERE ca_name ="ABCDE"

Em vez disso, você deve criar uma expressão otimizável utilizando um comando como o seguinte, no qual a expressão que você está procurando corresponde exatamente a uma expressão indexada:

SELECT * FROM T_Nome_01 WHERE UPPER(ca_name) = "ABCDE"

Quando vc usa o Select - SQL o VFP "se pergunta: existe índice?", se não, ele tomará o controle e decidirá, baseado em uma série de fatores, como por exemplo memória, qtd de registros, etc..., se cria ou não índices temporários e qual a melhor maneira de faze-los. Isso leva tempo. Se vc indicar para o VFP o que e como utilizar, poderá aumentar a velocidade da consulta.

Outra coisa:
escrevendo aplicativos para ambientes multi-usuários, o desempenho será de
extrema importância, pois a falta de eficiência é multiplicada. Além disso, se vários usuários estiverem acessando os dados, o seu aplicativo deverá lidar com questões de compatibilidade e acesso a rede.
Para lidar com essas questões, você pode:
- ajustar o intervalo de tentativa de bloqueio.

Ajustando o intervalo de tentativa de bloqueio

Se o aplicativo tentar bloquear um registro ou tabela e não obter êxito, você poderá fazer com que o Visual FoxPro tente automaticamente o bloqueio de novo, após um pequeno intervalo. No entanto, cada tentativa de bloqueio resulta em maior tráfego de rede. Se o tráfego de rede já estiver pesado, enviar várias solicitações de bloqueio sobrecarregará a rede e acarretará na redução da velocidade para todos os usuários.
Para lidar com esta situação, você pode ajustar o intervalo entre as tentativas de bloqueio. Ao utilizar um intervalo maior (que resulta em menos tentativas por segundo), você poderá reduzir o tráfego de rede e melhorar o desempenho.
Para ajustar o intervalo de tentativa de bloqueio :
- chame a função SYS(3051), passando a ela o número de milissegundos a ser esperado entre cada tentativa de bloqueio.

Espero ter ajudado

rrfsistemas
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por lardecristo em 14/10/2013, 13:50

Olá, cara se não for necessário trazer todos os clientes, sugiro usar SELECT com o parametro TOP 10, porque é bem mais rápido, e faça isso usando uma tabela com indexação, porque assim o sistema ficará mais rápido, a ideia que coloco aqui é a mesma que tem no Google, mas eu limito a minha busca em 10 linhas.

Código:

SELECT TOP 10 Chave_Cliente, Nome FROM Cliente WHERE LIKE(ALLTRIM(THISFORM.txtNome.Value)+"*", Cliente.Nome)

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Em curso INDEX X SELECT

Mensagem por AJC em 16/10/2013, 22:26

Pessoal estou pesquisando sobre comando seek, vi uma materia de tabela indexada mais select...bom nunca vi e usei, sempre uso select...mas estou com problema em acessar uma tabela via rede, esta muito lento, alguem ja usou esta situação se usou poderia me passar um exemplo?
tabela clientes - preciso indexar codigo, nome para pesquisa
tipo select
select codigo,nome from clientes where alltrim(nome)=thisform.pesquisa.value into cursor nomecliente
jogo esta pesquisa no interactive change no meu grid para pesquisar letra a letra

Antonio


AJC
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por rrfsistemas em 16/10/2013, 23:00

AJC parece que vc não leu o que eu escrevi acima:
"O Visual FoxPro otimiza condições de consulta, procurando uma correspondência exata entre o lado esquerdo de uma expressão de filtro e uma expressão de chave de índice.", isso inclui o SEEK e o SELECT.

Seu select: não está errado !
select codigo,nome from clientes where alltrim(nome)=thisform.pesquisa.value into cursor nomecliente

Se você usar a expressão " where alltrim(nome)"
você deve criar um índice exatamente igual , ou seja :
Index on alltrim(nome) ...
Não use funções de conversão ,formatação ou referências diretamente no SELECT ("thisform.pesquisa...","alltrim(nome)"), crie a expressão antes, em uma variável, isso ajuda muito o processamento .
Creio que vc está usando tabelas em um BD, certo ?
Se for tabela livre, acho que tá ai o seu problema...
Outra coisa, vc disse "...InteractiveChange do meu grid... ", não seria InteractiveChange do TextBox ?

rrfsistemas
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por AJC em 17/10/2013, 13:37

rrfsistemas eu li mas não entendi direito, mas agora ficou bem claro.

"Se você usar a expressão " where alltrim(nome)"
você deve criar um índice exatamente igual , ou seja :
Index on alltrim(nome) ..."
neste caso esta tabela tem dois indices dentro dela
pelo alltrim(codigo) e alltrim(nome) e ai como ficaria neste caso usando o select
o mesmo encontra o set order do indice?

"Não use funções de conversão ,formatação ou referências diretamente no SELECT ("thisform.pesquisa...","alltrim(nome)"), crie a expressão antes, em uma variável, "

valeu esta situação e não a usava.

"Creio que vc está usando tabelas em um BD, certo ?
Se for tabela livre, acho que tá ai o seu problema...
Outra coisa, vc disse "...InteractiveChange do meu grid... ", não seria InteractiveChange do TextBox ?"

Não realmente estou usando tabela livre, pelo que entendi se usar no banco
de dados ficaria melhor?
e InteractiveChange e no textbox de pesquisa e não no grid errei ao digitar.
bom mas segue no que tem dentro do meu interactive do textbox:

rscli1='SELECT cod, nome, endereco, bairro, cpf, rg, cidade,estado,obs FROM FORCE clientes WHERE ALLTRIM(UPPER(nome))=ALLTRIM(UPPER(thisform.pesquisa.Value))'
rscli2=' and ALLTRIM(UPPER(nome))<>SPACE(40) OR cod=VAL(thisform.pesquisa.Value) order by nome, cod INTO CURSOR cursor'
rscli = rscli1+rscli2
thisform.grid1.RecordSourceType = 4
thisform.grid1.RecordSource = rscli

Antonio




AJC
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por jmd.sistemas em 17/10/2013, 23:27

Antonio

usando tabela livre ou BD nativo sem select e usando o indice ativo:

*************************************
Quem ( Textbox )
No metodo InteractiveChange digitar:
*************************************

set near on
set exact off

procura = alltrim(thisform.quem.value)

seek procura

thisform.grid1.refresh
thisform.grid1.setfocus
thisform.quem.setfocus


***************************
no meu caso funciona bem e rápido.
espero que ajude

José Maria Dias

jmd.sistemas
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por rrfsistemas em 17/10/2013, 23:47

Bem vamos lá: dicas são sempre bem vindas.

Qdo eu disse pra vc criar a expressão antes e não usar diretamente no select, eu queria dizer que:
Ex:
select codigo,nome from clientes where alltrim(nome)=thisform.pesquisa.value into cursor nomecliente

Ficaria assim :

m.valor = thisform.pesquisa.value

select codigo,nome from clientes where alltrim(nome) = m.valor into cursor nomecliente

Ok !

*------------------------------------------------*

"neste caso esta tabela tem dois indices dentro dela
pelo alltrim(codigo) e alltrim(nome) e ai como ficaria neste caso usando o select
o mesmo encontra o set order do indice?"

RESPOSTA:
Não entendi bem sua pergunta mas, você pode escolher o índice normalmente como se estivesse usando em outra situação, comando...

Ex:
Set order to codigo
ou
Set order to nome

*------------------------------------------------*

As tabelas livres não possuem mecanismos internos para otimização.
O BD trabalha com conceitos internos semelhantes ao da arquitetura cliente-servidor.
O BD usa o conceito de "Procedimento armazenado". Insert´s, Delete´s, etc...
Esta situação eu já comprovei e os resultados são bem diferentes.
Essas mudanças podem depender de um estudo mais profundo do seu projeto...

*------------------------------------------------*
Observei que vc está usando a cláusula "FORCE" no select. Isto indica ao VFP que o Select não precisa de otimização.
No seu caso, sem índices, usando tabelas livres e em rede, não aconselho a usá-la.
Seria interessante deixar o VFP tentar otimizar o Select, depois tire suas próprias conclusões...
Não sei como está o layout do seu form, mas, na minha opinião, usar dois tipos de dados ou dois campos para fazer pesquisa incremental em um mesmo TextBox é um risco não calculado.
Essa situação deve ter uma atenção a mais.
Será que existe a necessidade de dois índices ?!?!? Ou seria melhor ter dois TextBox ?!?!?!?!
Eu costumo colocar o programa (.EXE) nas estações, isto diminui muito o tráfego na rede.
Espero que com esses conceitos e as dicas dos outro membros vc consiga seu objetivo.
Qqer coisa é só postar ! Smile

rrfsistemas
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Em curso OTIMIZAÇÃO

Mensagem por AJC em 24/10/2013, 12:55

Boa tarde rrfsistemas
Quando perguntei sobre indices seria no caso como usá-lo vou explicar melhor
Não trabalho com as tabelas abertas, quando crio os formularios
no init peço com select... para carregar os dados que preciso, sei que colocando indices na tabela ajudaria, mas no caso tenho dois indices na tabela codigo, nome
quanto aciono um formulario uso select para pesquisa por codigo chamo o select direto select codigo,nome from clientes where alltrim(nome)=vnome into cursor xxx
mas esta tabela esta com dois indices, como usar o set order sendo que o mesmo so vai funcionar com tabela aberta, tipo
use clientes
set order nome
no select nao precisamos disto acionamos direto podendo usar o order by
Quanto ao meu problema estou em demora no acesso ao banco de dados de um terminal para um servidor, por enquanto para solucionar trouxe a tabela de clientes para o terminal usando tipo pdv, e com algumas funcoes o sistema se auto atualiza em todos os terminais inclusive no servidor, mas mesmo assim percebemos demora, estou tentando descobrir melhoras para resolver a questão , já li muita coisa sobre otimização , uso melhor do select, mas ainda não consegui resover a questão.
Mas toda ajuda de vocês são extremamente validas, pois estamos buscando soluções.
Obrigado,
Antonio

AJC
Participante Regular
Participante Regular


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por rrfsistemas em 25/10/2013, 13:51

Antonio só respondendo parte da sua pergunta, a maioria dos DBA que conheço me disseram que tanto o Order by ou Group By causa um atraso significativo no processamento, isso claro depende tbm do equipamento, tamanho da base entre outras, mas no geral me recomendaram tentar não usar, só se precisar mesmo. Como vc não trabalha com as tabelas abertas vou analisar sua última postagem e ver se consigo uma solução...

rrfsistemas
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Em curso Re: USO COMANDO SEEK

Mensagem por Conteúdo patrocinado Hoje à(s) 05:09


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum