Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
15 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 15 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
ListBox

23/5/2017, 10:37 por Rosangela Pires

Ola Amigos.

Para se movimentar na grid com as setas colocamos no Metodo AfterChange da grid …

Comentários: 0

TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Estatísticas
Temos 7081 usuários registrados
O último usuário registrado atende pelo nome de DENISON SANTOS DA SILVA

Os nossos membros postaram um total de 49 mensagens em 26 assuntos

Conceitos e operação de um SGBD - Ajuda

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

Informativo Conceitos e operação de um SGBD - Ajuda

Mensagem por memarques em 12/4/2013, 16:52

Caros

Nunca usei o VFP com um SGDB. Estou desenvolvendo uma aplicação que fará o acesso a SQl e MySQL.

Sou da velha guarda (ou seja velho mesmo) e sempre preferi usar "na mão" recursos que alguns Wizards deixam disponíveis. Mas agora gostaria de discutir alguns conceitos com voces.

Usando as tabelas nativas do FOX num grid, por exemplo, cada linha do grid "aponta" uma "linha" da tabela e conforme vamos "paginando" esse grid (movendo o cursor) os ponteiros vão sendo atualizados e cada linha do grid vai se atualizando. Numa tabela normal do VFP isso é normal, uma vez que o VFP está com a tabela ABERTA e usando-a ON-LINE.

No caso de um SGDB, por exemplo é possível fazer-se uma consulta tipo:

select * from Empresas

Com isso criamos um cursor que também pode ser mostrado num grid, da mesma forma que uma tabela NORMAL do VFP (afinal de contas, o cursor criado é mesmo uma tabela).

Pois bem o que eu gostaria de saber/entender/discutir é o seguinte:

No caso de um SGDB quando se faz uma consulta selec * from Empresas, TODOS os registros dessa tabela navegam pela infraestrutura para ser criado um cursor.

É possível "controlar" qtos registros são lidos, e ir "automaticamente" trazendo novos registros para o grid (que está mostrando os dados do cursor) quando se "pagina" o grid?

Ou seja: Imagina que eu tenha uma tabela com 10000 registros, se eu executar um select *, e criar um cursor, e mostrar num grid, isso dependendo do numero de registros vai demorar muito.

O idela seria que esse select * mostasse por ex, 100 registros, e conforme o usuário fosse paginando o GRID "se necessário" fosse sendo feita a leitura de outros 100 a partir do servidor e não trazidos os 10000 registros de uma vez. Deu prá entender minha questão?

Como voces tratam disso? Podem ajudar?

Ate
Mauro

memarques
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por Marcos Guedes em 13/4/2013, 00:23

Mauro, veja esta rotina para conectar-se com banco MySQL via drive odbc:

[Você precisa estar registrado e conectado para ver este link.]

O que você quer é possível sim, mas talvez não mais interessante.

No link que citei você verá que os dados são passados para um cursor, o que já poderá lhe dar uma ideia do que fazer.

Atualmente eu só trago pra tela o necessário.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por memarques em 13/4/2013, 13:29

Marcos

Obrigado. Já tinha visto esse link. Meu problema não é conectar, nem deletar ou inserir dados nos SGBD.

O que eu gostaria de saber é como eu posso deixar um grid VENDO um CURSOR SEM ter que trazer todos os dados da tabela de um BD trafegarem na rede, entendeu?

Sua Mensagem:

"Atualmente eu só trago pra tela o necessário."

o que vc faz? Por exemplo, quero montar um grid com os dasos de uma tabela. Se forem muitos dados, como fazer sem ter que carregar o cursor de uma só vez com todos os dados?

Obrigado pela resposta
Ate
Mauro

memarques
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por Nelson Arcas em 17/4/2013, 12:02

Mauro,

Qual a forma que você está gerando o cursor, através do sqlexec() ou através de um cursoradapter?
Qual o banco você está utilizando?
Atualmente comecei a utilizar o postgres e tenho algumas tabelas que sao enormes e para abrir a tela eu trago somente os 100 primeiros registros.

Código:

select * from cadfunc limit 100
Veja se isso interessa.
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por memarques em 21/4/2013, 13:56

Nelson
Desculpe a demora ...
Isso mesmo que é minha duvida... Vamos imaginar que vc traga esses 100 registros para um cursor e mostre os registros num Grid.
Quando o usuário PAGINAR o grid e chegar no fim desses 100 registros, como vc faz?

Essa é minha duvida .... kkk

Obrigado
Mauro

memarques
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por Nelson Arcas em 22/4/2013, 08:42

Mauro,
Otimizei esse processo por uma dica de um amigo para nao trazer todos os campos na grid somente os campos de consulta.
No meu exemplo foi um cadastro de funcionário como tenho vários campos por volta de 240 campos estou trazendo apenas
Número da matricula
Nome completo
Data de admissão
Data de demissão
Estou trazendo em 0,5 segundo 22.000 registro para um cursor local auxiliar que chamei de auxfunc, que preenche o Grid de pesquisa ao selecionar um registro no auxfunc, preencho o cursor adapater referente a tabela cadfunc em um método do form que criei como acerta_cursores()

Código:


LOCAL lccampochave
SELECT auxfunc
lccampochave=ALLTRIM(STR(auxfunc.matricula))

SELECT cadfunc
THISFORMSET.DATAENVIRONMENT.cadfunc.SELECTCMD="select * from cadfunc where matricula = "+lccampochave
THISFORMSET.DATAENVIRONMENT.cadfunc.CURSORFILL()


Obs: No caso eu sempre estou iniciando este cursor adapter como vazio para abrir mais rápido somente as estruturas que gerei pelo próprio assistente.

Código:

Select * from cadfunc where 1=0
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por memarques em 22/4/2013, 09:40

Nelson, de novo obrigado.

Ok, entendi o que vc fez. Voce trouxe de uma tabela somente os campos que precisa, e depois preencheu um cursor adapater com o resto das informações (as que vc AINDA não trouxe de todo mundo) só quando o dado for mostrado na tela de grid. Com essa "rotina", sem dúvida vc otimizou bastante o tempo de resposta. O.5 sec é perfeitamente aceitável.

De qualquer forma "minha questão conceitual" ainda não consegui "enxergar". Imagine que mesmo vc otimizando dessa forma, ao ler os 22.000 registros (mesmo que seja poucos campos) ao invés de demorar 0.5 sec demore 1 hora.

Existe alguma forma de "NÃO" trazer esses 22000 registros de uma só vez, por exemplo trazer 100, criar um grid com esses 100 e "conforme for sendo necessário" ir trazendo o restante dos registros?

Obrigado, ate
Mauro


memarques
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por Nelson Arcas em 27/4/2013, 12:06

Olá Mauro, essa semana foi bem corrida nao consegui responder antes.

Você poderia criar algum método que realize a leitura somente dos 100 primeiros registros e elaborar alguma logica que quando o ponteiro estiver posicionado no ultimo registro, realizar a chamada de mais 100 registros, acredito que voce teria que ter um cursor auxiliar para fazer algum tipo de contador para saber qual o registro inicial para somar mais 100 e assim por diante.
Isso seria resolvido de forma fácil se o Fox fosse de forma nativa "multithreading" , assim você realizava a primeira busca com os 100 primeiros registros e a outra thread iria alimentando o cursor em segundo plano.

Abs
Nelson
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Informativo Re: Conceitos e operação de um SGBD - Ajuda

Mensagem por memarques em 28/4/2013, 10:07

Pelo que vejo, voce por exemplo, não se preocupa com isso já que tem a resposta boa em termos de tempo.
Vou ver o que ando nessa linha qq coisa retorno.

Obrigado
Mauro

memarques
Participa Bastante
Participa Bastante


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