Jump to content
Fivewin Brasil

Browse Com MySql


AprendizFW

Recommended Posts

Olá Pessoal,

Utilizo a SQLLIB FREE para trabalhar com mysql e uma dificuldade que tenho nas rotinas de browse é posicionar no registro que acabei de inserir (pois ele sempre posiciona no primeiro registro). Uma solução que vi em alguns exemplos e que estou utilizando é usar o comando LOCATE para fazer esse posicionamento, entretanto com o aumento da quantidade de registros isso vai atrapalhando pois fica muito lento. Gostaria de saber se alguém utiliza outra solução para resolver esse problema.

Um grande abraço a todos,

Edilson.

Editado por - AprendizFW on 16/07/2012 10:45:56

Link to comment
Share on other sites

Olá Pessoal,

Utilizo a SQLLIB FREE para trabalhar com mysql e uma dificuldade que tenho nas rotinas de browse é posicionar no registro que acabei de inserir (pois ele sempre posiciona no primeiro registro). Uma solução que vi em alguns exemplos e que estou utilizando é usar o comando LOCATE para fazer esse posicionamento, entretanto com o aumento da quantidade de registros isso vai atrapalhando pois fica muito lento. Gostaria de saber se alguém utiliza outra solução para resolver esse problema.

Um grande abraço a todos,

Edilson.

Editado por - AprendizFW on 16/07/2012 10:45:56

Link to comment
Share on other sites

Olá,

você está usando "DBF" ou "Array" ?

Se for DBF, você sabe qual o RECNO do registro? Se souber, faça um:

obj_browse:Gotop()

ALIAS->(DBGOTO( nRec ))

obj_browse:Refresh()

Se não souber e for sempre o último, faça um DBGOBOTTOM

se o registro for ficar no meio, faça um DBSEEK mesmo, aí não tem jeito

se for array, eu faço ASCAN na tabela, e posiciono o browse nesta posição...

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Olá Erciley Junior,

Eu uso o browse como se estivesse usando um "DBF" e utilizo uma ordenação por nome, exemplo ( select * clientes order by nome ), quando insiro um registro não estou conseguindo a posição em que ele fica nessa ordenação, por isso estou utilizando o comando LOCATE para fazer esse posicionamento, pois o comando DBSEEK precisa de um índice e acho que o índice criado para mysql não funciona com esse comando, pelo menos eu acho, vou até testar...

Um abraço,

Edilson.

Link to comment
Share on other sites

Boa tarde Edilson

Eu nunca usei o LOCATE, então não sei como esse comando funciona no que se refere aos índices do arquivo.

O DBSEEK utiliza os índices, então acredito que seria mais vantajoso usar o DBSEEK ( levando em conta que vc utiliza o browse como se fosse um DBF )

att

Eduardo de Camargo Bilato

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

email: eduardobilato@gmail.com

msn: dunhox@hotmail.com

Link to comment
Share on other sites

Isso Edilson, como o Eduardo disse....

a SQLLIB faz isso, busca seus dados no banco através de comandos DBF, então o DBSEEK funciona sim (funciona em cima do índice que você tem, que não é necessariamente a ordem usada).

A não ser que esteja usando USE SQL, mas pelo que você disse, não está.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Vixi Erciley,

Pior que uso o "USE SQL" então não vou poder usar o DBSEEK, acho que vou me contentar com o LOCATE mesmo (rsrsrs), ou então vou mudar a lógica dos meus cadastros, ao invés de mostrar um browse e colocar botões para inserir, alterar e excluir, vou logo abrir a tela para cadastro e se o registro já existir perguntar se o usuário quer alterar ou excluir. Paralelo a isso vou montar um filtro que seria o browse (nesse caso não precisaria me preocupar com o posicionamento do registro que acabou de ser inserido).

De qualquer forma agradeço sua ajuda e a do Eduardo, um abraço a todos.

Edilson.

Link to comment
Share on other sites

Olá Geraldo,

É exatamente isso, porque quando eu insiro um novo registro eu tenho que executar novamente o "select" para ele reconhecer no browse esse novo registro, entretanto como ele está ordenado pelo "nome" não sei a posição que ele ficou nessa ordenação, por isso estou usando o LOCATE para ele posicionar no registro inserido e dar o "refresh", em bases pequenas fica blz, mas em bases grandes fica muito lento.

Um abraço,

Edilson.

Link to comment
Share on other sites

Olá Edilson, então, devido isso de lentidão, eu faria de duas formas:

1 - Utilize a LIB realmente para tratar esses dados como DBF, podendo fazer DBSEEK e qualquer outra coisa. (não gosto desta idéia)

2 - Faça um select e armazene os dados em VETOR, trabalhando com xBrowse ou TCBrowse, assim você pode fazer ASCAN na pesquisa, que não é nada demorado.

Usando a opção 1 (nãããão) você não precisa refazer select nenhum, pois o dado inserido vai aparecer automaticamente no grid, como os DBF.

Usando a opção 2, você pode refazer o select, ou para não ficar lento, ao incluir um registro, você pode fazer um AADD na tabela que armazenou as informações, fazer um ASORT para ordenar pelo nome, e após isso, fazer o ASCAN para localizar o registro.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Ultimamente, só trabalho assim.

Performance de muitos programas aumentou com isso.

Lembre-se sempre quando fazer selects, joins, etc, de estar usando o índice correto da tabela, isso faz uma diferença IMENSAAAAAAAA de velocidade.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Olá Erciley,

Como prometido, estou postando aqui o resultado do teste que fiz com array. Sem dúvida nenhuma o ganho de velocidade é muito grande, pois eu estava usando o (USE SQL) para pegar os dados de uma tabela remota de 35.000 registros (MUITO LENTO), então passei a usar o (SQLARRAY), ficou show de bola. Só estou apanhando um pouco com o listbox (POSICIONAMENTO), pois ainda não tinha usado ele com array, mas isso é o de menos.

Muito obrigado à todos,

Edilson.

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...