Jump to content
Fivewin Brasil

"navegar" no MySql


evertonlb

Recommended Posts

Boa tarde amigo..

Continuando com minhas duvidas no SQL, gostaria de saber como faço para passar de um registro para outro.

Explico melhor.

Tenho nas minhas janelas de cadastro botões que levam o usuário ao primeiro registro da tabela, para o próximo, para o anterior e para o último registro.

Como eu uso comandos DBF o Gotop, dbSkip(+1), DbSkip(-1), Gobottom resolvem meu problema.

Usando o SqlArray(), da SqlLib, peguei os dados da tabela... sei que usando o "where codigocliente = '12345678'" eu seleciono só um registro,

mas como faço pra navegar pelos registros da tabela??

Att.

Everton

Link to comment
Share on other sites

Everton

Boa tarde

Na SQLLIB se você usar SQLArray vai ter um vetor com os dados da tabela. Neste caso irá navegar pelo vetor

aVetor:=SqlArray("Select * from tabela")

n:=1

aVetor[n] //dbgotop()

n++ //DbSkip(1)

n-- ////DbSkip(-1)

aVetor[Len(avetor)] //dbgobotom()

Você também pode abrir como dbf:

USE SQL ("Select * From Tabela") Alias Tabbela New

Neste caso serão os mesmos comandos dbase

Att

João Bosco

Link to comment
Share on other sites

Everton

Boa tarde

Na SQLLIB se você usar SQLArray vai ter um vetor com os dados da tabela. Neste caso irá navegar pelo vetor

aVetor:=SqlArray("Select * from tabela")

n:=1

aVetor[n] //dbgotop()

n++ //DbSkip(1)

n-- ////DbSkip(-1)

aVetor[Len(avetor)] //dbgobotom()

Você também pode abrir como dbf:

USE SQL ("Select * From Tabela") Alias Tabbela New

Neste caso serão os mesmos comandos dbase

Att

João Bosco

Bom dia João... Então o vetor vai conter todo o conteúdo da tabela, não importando quantos registros eu tenha???

Att.

Everton

Link to comment
Share on other sites

Everton

Sim o vetor vai conter o conteúdo da tabela, mas se a tabela for maior que a capacidade de memória para manipulação do vetor, vai dar erro no tamanho do vetor.

Você terá que avaliar de acordo com a tabela que estiver implementando.

Alessandro

O uso de vetor (SqlArray) será mais rápido que o dbf (USE SQL) mas isso tem que ser avaliado em cada situação, o tamanho da tabela, a faciliade para manipular os dados.

Atualmente não trabalho mais com essas opções onde o banco de dados fica todo carregado na memória, para o usuário ficar passeando pelos registro.

Com o uso do SQL passei a sempre priorizar os filtros, a pessoa primeiro seleciona um critério (código, nome, data, etc ) depois eu faço o filtro e apresento para o usuário os dados.

Mostrarmos tabelas de 100, 500, 1000 registros na tela é uma situação.

Mostrar banco de dados com 3.000.0000 de registros é outra, após algum tempo você verá que o usuário não precisa ficar passando por tantos registro um por um, ele precisa sempre de alguma forma de delimitar as pesquisas.

Ex.: Tabela de funcionários 3000 registros, eu listava no listbox todo o banco de dados e a pessoa com o Get vai digitando o nome e o sistema posicionando, isso em dbf, hoje, com mysql eu abro o listbox vazio e o usuário digita o nome e aciona o botão pesquisar.Eu executo o filtro com like e mostro todos os nomes que ele deseja MARIA%.

Outro exemplo:

Cadastro de atendimentos com 3.000.000, cadastro de exames com 5.000.000 primeiro a pessoa seleciona o paciente, então vou nos atendimentos e filtro somente os atendimentos de determinado paciente, a pessoa seleciona o atendimento, então vou na tabela de exames e filtro somente os exames do paciente e do atendimento selecionado.

Att

João Bosco

Link to comment
Share on other sites

João,

Pelo que o Everton falou, é uma dialog contendo dados de apenas 1 registro, não precisa carregar todos os registros em um array pra jogar na dialog.

De fato Kleyber.. Com DBF eu uso assim

if onde == 1   //  aqui eu vejo qual botão foi pressionado
   Go Top
elseif onde == 2		
   DBSkip(-1)
   if BOF()
      go bottom
   endif	
elseif onde == 3
   DBSkip(1)
   if EOF()
      go Top
   endif	
elseif onde == 4
   Go Bottom
endif

Carrego as variáveis e dou um refresh. Isso é o ideal. No cadastro de clientes, por exemplo, navegar pelos registros não é usado, mesmo porque eu tenho um F2 que abre um browse com todos os clientes, ai o usuário acha quem ele quiser. Mas no cadastro de produtos a história é outra.. muitas vezes

a pessoa que cadastra os itens, altera preços e faz outras correções nos produtos, precisa ver os últimos itens que foram cadastrados.. ai opta pelo menu de navegação que tenho

no cadastro... Aqui sim preciso disponibilizar esta navegação

Att.

Everton

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...