Gambas2 e MySQL, aprofundando relações

Nesse artigo mostrarei como fazer busca de registro MySQL no Gambas2, além de outros itens interessantes, como botões de movimentação e edição.

[ Hits: 36.608 ]

Por: Jose Ribeiro em 06/08/2009 | Blog: https://serviceup.com.br/


Botões: Primeiro, Anterior, Próximo e Último



Botão "Primeiro"

PUBLIC SUB ToggleButton5_Click()

   cnx.ConectarBanco
   reg = cnx.conexao.Exec("select * from cadastro")
   reg.MoveFirst()
   WHILE reg!codigo <> Val(TextBox1.Text)
      reg.MoveNext
   WEND
   reg.MoveFirst()
   TextBox1.Text = reg!codigo
   TextBox2.Text = reg!nome
   TextBox3.Text = reg!telefone
   CATCH
      Message.Info("Impossível mover registro")

END

O que isso faz?

Olha só, isso é uma autêntica adaptação técnica de emergência que realmente funciona. Conecta ao banco, busca todos os registros da tabela "cadastro", move para o primeiro registro.

Enquanto o código do atual registro for diferente do valor da textobox1, ande até encontrá-lo.

Fazendo isso movendo o registro para o registro que está na tela, aí o resto é simples: reg.MoveFirst() para mover para o primeiro e pronto. Nesse botão compliquei um pouco porque tentei deixar a programação dos botões o mais parecido possível para explicar a única diferença necessária de ter entre eles.

Botão "Anterior"

PUBLIC SUB ToggleButton6_Click()

   cnx.ConectarBanco
   reg = cnx.conexao.Exec("select * from cadastro")
   reg.MoveFirst()
   WHILE reg!codigo <> Val(TextBox1.Text)
      reg.MoveNext
   WEND
   reg.MovePrevious()
   TextBox1.Text = reg!codigo
   TextBox2.Text = reg!nome
   TextBox3.Text = reg!telefone
   CATCH
      Message.Info("Impossível mover registro")

END

O que isso faz?

A mesma coisa que o anterior, a diferença é:

reg.MovePrevious()

Quando encontra o atual registro ele move para o anterior e mostra na tela.

Botão "Próximo"

PUBLIC SUB ToggleButton7_Click()

   cnx.ConectarBanco
   reg = cnx.conexao.Exec("select * from cadastro")
   reg.MoveFirst()
   WHILE reg!codigo <> Val(TextBox1.Text)
      reg.MoveNext
   WEND
   reg.MoveNext()
   TextBox1.Text = reg!codigo
   TextBox2.Text = reg!nome
   TextBox3.Text = reg!telefone
   CATCH
      Message.Info("Impossível mover registro")

END

O que isso faz?

Assim como no outro ele faz a mesma coisa, só que move o registro para o próximo: reg.MoveNext().

Botão "Último"

PUBLIC SUB ToggleButton8_Click()

   cnx.ConectarBanco
   reg = cnx.conexao.Exec("select * from cadastro")
   reg.MoveFirst()
   WHILE reg!codigo <> Val(TextBox1.Text)
      reg.MoveNext
   WEND
   reg.MoveLast()
   TextBox1.Text = reg!codigo
   TextBox2.Text = reg!nome
   TextBox3.Text = reg!telefone
   CATCH
      Message.Info("Impossível mover registro")

END

O que isso faz?

Esse é o último do tipo quase idêntico. Esse move o registro para o último: reg.MoveLast().

Observe que o diferença deles é uma linha, mas o para mover para o primeiro e para o último poderia ser mais simples para, assim, ficar mais claro a facilidade de fazê-los.

A única variável declarada fora das procedures foi:

PUBLIC reg AS Result

Página anterior     Próxima página

Páginas do artigo
   1. Preparando o ambiente
   2. Botões: novo, salvar, editar, excluir
   3. Botões: Primeiro, Anterior, Próximo e Último
   4. Busca de registro e vídeo complementar
   5. Exemplos de programas escritos em Gambas2
Outros artigos deste autor

Gambas2: Inserindo dados em tabela SQLite

Projeto Gerenciador de Lan House

BrOffice.org BASE: Criando banco de dados em 5 minutos

Gallery - Álbum de fotos no seu site

Instalação e Configuração do Puppet

Leitura recomendada

Sincronização segura entre bancos de dados MySQL utilizando SJA

Store Procedures com Transaction no MySQL

Configurando Apache + MySQL + PHP no Slackware

OcoMon 2.0RC6 no OpenSUSE 11.2 com PHP5 + MySQL5 + Apache2 com correção de acentuação

MySQL Workbench no Slackware 14.0

  
Comentários
[1] Comentário enviado por usrlinux em 06/08/2009 - 08:45h

Discordo do seu ponto de vista de ferramentas para uso comercial são ferramentas que fazem coisas de maneira automatizada, o que leva uma ferramenta ser mais utilizada comercialmente é o suporte que ela oferece aos desenvolvedores que a utilizam para desenvolver suas aplicações.
Embora o Gambas 2 tenha uma documentação razoável qual é o suporte que a equipe de poucos colaboradores dessa ferramenta podem dar ao desenvolvedor que irá utilizá-la, ainda que seja uma IDE versátil.

[2] Comentário enviado por joserribeirojuni em 06/08/2009 - 09:39h

usrlinux, Justificando meu ponto de vista é o seguinte, quando se fala em software livre, sempre são poucos colaboradores, que oferecem o máximo de suporte possível de acordo com suas possibilidades, e discordo quando questiona o suporte dessa ferramenta, segue dois links que uso nessa afirmação.

http://gambasdoc.org/help/doc/forum?en&view

http://gambasdoc.org/help/doc/report?en&view

Além disso toda comunidade é aberta a ajudar.

Além do mais é pelo motivo de automatizar o sucesso de ferramentas como: GenuXus.
Não que isso seja ruim é claro.
Completanto, hoje automatizar faz sim, toda a diferença, juntamente com o suporte é claro.
Abraço.

[3] Comentário enviado por usrlinux em 06/08/2009 - 10:29h

Quando eu falei sobre suporte não estava somente falando de um meio de comunicação para reportar os erros ou problemas de codificação, mas sendo isso uma coisa básica que deve existir num projeto livre e sério para atrair pessoas da comunidade a utilizar a ferramenta e ajudar no seu aperfeiçoamento.
Quero salientar que isso demanda tempo, e seu cliente não vai ficar esperando um bug ser concertado ou suporte a certa tecnologia ser adicionado na sua ferramenta de desenvovimento, são estes os fatores que tornam uma ferramenta de desenvolvimento mais comercial.

Sobre Genexus embora agilize o processo de desenvolvimento existem desvatagens a primeira delas é que existem poucos profissionais aptos a desenvolver com a ferramenta, desta forma, existe também profissionais com pouco conhecimento que não utilizam as melhores práticas de desenvolvimento por falta de domínio, o que causa problemas sérios em longo prazo e comentários de que a ferramenta é ruim. Outra desvantagem ainda está no preço das licenças que são vendidas por gerador, porém em médio prazo elas “se pagam” devido os benefícios de produtividade.


[4] Comentário enviado por joserribeirojuni em 06/08/2009 - 10:44h

Meu caro, o fato é que na pratica ferramentas livre, tem seus Bugs corrigidos mais rapidamente, e suporte a novas tecnologias são sempre implementados mais rapidos, como por exemplo, o Kernel Linux, que ja suportar USB 3.0.

Abraço.


[5] Comentário enviado por usrlinux em 06/08/2009 - 12:47h

Leia este artigo você pode se encaixar aqui:

http://www.vivaolinux.com.br/artigo/Se-o-Linux-e-tao-melhor-que-o-Windows-e-e-de-graca-por-que-a-mai...


[6] Comentário enviado por joserribeirojuni em 12/08/2009 - 09:55h

Não, não se encaixa nesse contexto não.

[7] Comentário enviado por HER GNU/LINUX em 17/05/2010 - 16:32h

Salve, José Ribeiro!
Parabéns pela contribuição. O Importante é a colocabração, pois sempre vai ajudar alguém. Veja bem! Talvez você possa me ajudar, sem compromisso.
No decorrer de minha vida profissional sempre usei o Microsoft Access para facilitar as tarefas rotineiras nos diversos setores que passei pela empresa que trabalho.
Para você ter uma ideia hoje gerencio uma área de traporte de fretamento com um pequeno banco de dados que criei. Ele é eficiente até agora, mas entendo que seu limite
tá para ser esgotado. Claro! que o Microsoft accesse é prático e a exigência para o seu desempenho está na modalagem de dados. Bem! Gostaria de aprender um banco de
dados que eu pudesse usá-lo no ambiente Linux - Ubuntu. Na verdade não sei nem por onde começar. Você poderia dar uma dica.
De preferência que fosse prático como o Access. O banco de dados que acompanha o BrOffice ao meu é pobre em recursos práticos que estou acostumado.
Abraços e continue assim garoto.

[8] Comentário enviado por hudyfx em 29/04/2011 - 11:25h



ola cara belza, eu estava dando uma olhada no seu tutorial, ache bem legal...

porem eu queria questionar algumas coisas, percebi que o programa faz a conexão quando o banco de dado quando o mesmo é executado:
PUBLIC SUB Form_Open()

cnx.ConectarBanco()

END

só que Mysql expira a conexão depois de um certo tempo, se o programa fica muito tempo aberto e a conexao expira, é notório o fato de que o usuario deve fechar e abrir o programa para restabelecer a conexão.
alem disso, se vc ( por exemplo ) tem uma variavel publica do tipo "result" o valor estático da variavel só é preservada quando aconexao esta ativa.

com base nisso nao seria interessante e "evento" se conectar no banco de dados, fazer o que ele tiver que fazer, e depois desconectar? Assim ele nao pararia nunca e a conexão com o banco nao ficaria preza na inicialização do programa?
exemplo:

PUBLIC SUB ToggleButton6_Click()

cnx.ConectarBanco <--------"Abre conexao
reg = cnx.conexao.Exec("select * from cadastro") <----------" Faz o que tem que fazer
reg.MoveFirst()
WHILE reg!codigo <> Val(TextBox1.Text)
reg.MoveNext
WEND
reg.MovePrevious()
TextBox1.Text = reg!codigo
TextBox2.Text = reg!nome
TextBox3.Text = reg!telefone
CATCH
Message.Info("Impossível mover registro")
cnx.conexao.Close <----------------" Fecha a conexao
END

com isso nao é necessário abrir a conexao no Form_Open, e o banco não fica preso
acredito que assim seja bem melhor...

[9] Comentário enviado por joserribeirojuni em 29/04/2011 - 11:41h

Sim cara, seria interessante, quando escrevi esse arquivo eu tinha começado a faculdade tinha pouca noção. Se fosse fazer hoje eu mudaria pelo menos uns 8 detalhes nesse artigo.

Abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts