BOTAO DE NAVEGACAO
Bom dia para todos.
Venho mais uma vez até vocês para pedir que compartilhem seus conhecimentos comigo e me ajude a desenvolver o seguinte:
Tenho um formulá de produtos e neste formulário é exibido os dados como:
Código
Nome
Preço
Criei no formulário Quatro Command Buttons
<< < > >> respectivamente, afim d e realizar navegação entre os registros.
Alguém poderia me ajudar a fazer?
Minha base de dados é Sql Server
Tabela Equipamentos
Campos? Codigo, Nome, preço e qtd.
Obrigado.
Azor Freire
Venho mais uma vez até vocês para pedir que compartilhem seus conhecimentos comigo e me ajude a desenvolver o seguinte:
Tenho um formulá de produtos e neste formulário é exibido os dados como:
Código
Nome
Preço
Criei no formulário Quatro Command Buttons
<< < > >> respectivamente, afim d e realizar navegação entre os registros.
Alguém poderia me ajudar a fazer?
Minha base de dados é Sql Server
Tabela Equipamentos
Campos? Codigo, Nome, preço e qtd.
Obrigado.
Azor Freire
Você sabe usar ADO?
Sim utilizo a ADO.
Esqueci de mencionar.
Esqueci de mencionar.
Então, é simples. Faça a conexão, faça a seleção, deixe a seleção(recordset) como variável pública no form, e faça o método de avançar/retroceder em cada botão correspondente.
Utilizando os métodos MoveFirst/Last/previous/ next.
Poderia por favor me dar um exemplo?
Poderia por favor me dar um exemplo?
rs.MoveFirst
rs.MoveLast
rs.MoveNext
rs.MovePrevious
para mover ao primeiro e ao último eu consegui na boa. Porém para o anterior e para o propximo eu não consigo.
olha como eu fiz para mover para o primeiro.
Set oConCadPro = New ADODB.Connection
oConCadPro.ConnectionString = Init.vStrConSQLServer
oConCadPro.Open
Set oRecCadPro = New ADODB.Recordset
vStrSql = [Ô] Select * From ger003 where codigo=[ô][Ô] & txtCodigo.Text & [Ô][ô] [Ô]
oRecCadPro.Open vStrSql, oConCadPro, adOpenDynamic, adLockReadOnly
oRecCadPro.MovePrevious
txtCodigo.Text = oRecCadPro.Fields([Ô]codigo[Ô])
txtNomeEquip.Text = oRecCadPro.Fields([Ô]nome[Ô])
cboFornecedores.Text = oRecCadPro.Fields([Ô]fornecedor[Ô]) [ô] Aqui na base registra apenas o codigo uma função deverá ser feita para trazer nome
Sincroniza_Fornecedores [ô] Faz a sincronia entre as bases Access e Sql Server para exibir o nome correto
cboSetor.Text = oRecCadPro.Fields([Ô]setor[Ô])
txtCodBarras = oRecCadPro.Fields([Ô]codbarra[Ô])
txtPCompra.Text = Format(oRecCadPro.Fields([Ô]precocomp[Ô]).value, [Ô]Currency[Ô]) [ô] Formatação necessária para exibir o valor de forma correta.
txtPVenda.Text = Format(oRecCadPro.Fields([Ô]precovend[Ô]).value, [Ô]Currency[Ô]) [ô] Formatação necessária para exibir o valor de forma correta.
Combo1.Text = oRecCadPro.Fields([Ô]embalagem[Ô])
txtUnEmbalagem.Text = oRecCadPro.Fields([Ô]unidades[Ô])
txtQtdMin.Text = oRecCadPro.Fields([Ô]qtdminima[Ô])
If Not IsNull(oRecCadPro.Fields([Ô]grupo[Ô])) Then [ô] Verifica se o campo não está nulo para evitar erros
txtGrupo.Text = oRecCadPro.Fields([Ô]grupo[Ô])
End If
txtLocalizacao.Text = oRecCadPro.Fields([Ô]sbgrupo[Ô])
txtSugestao.Text = oRecCadPro.Fields([Ô]sugestao[Ô])
txtDescricao.Text = oRecCadPro.Fields([Ô]nome2[Ô])
txtPDV.Text = oRecCadPro.Fields([Ô]Nome1[Ô])
If Not IsNull(oRecCadPro.Fields([Ô]grupo[Ô])) Then
txtGrupo.Text = oRecCadPro.Fields([Ô]grupo[Ô])
End If
If oRecCadPro.Fields([Ô]ativo[Ô]) = True Then
Check1.value = 1
End If
[ô] Para carregar a imagem do Equipamento cadastrado caso existe imagem
If Not IsNull(oRecCadPro.Fields([Ô]foto[Ô])) Then
If oRecCadPro.Fields([Ô]foto[Ô]) <> [Ô][Ô] Then
If Existe(atual & oRecCadPro.Fields([Ô]foto[Ô])) Then
imgEquipamento.Picture = LoadPicture(atual & oRecCadPro.Fields([Ô]foto[Ô]))
End If
Else
imgEquipamento.Picture = LoadPicture([Ô][Ô])
End If
Else
imgEquipamento.Picture = LoadPicture([Ô][Ô])
End If
Call fechaObjetoConnection(oConCadPro)
Call fechaObjetoRecordset(oRecCadPro)
olha como eu fiz para mover para o primeiro.
Set oConCadPro = New ADODB.Connection
oConCadPro.ConnectionString = Init.vStrConSQLServer
oConCadPro.Open
Set oRecCadPro = New ADODB.Recordset
vStrSql = [Ô] Select * From ger003 where codigo=[ô][Ô] & txtCodigo.Text & [Ô][ô] [Ô]
oRecCadPro.Open vStrSql, oConCadPro, adOpenDynamic, adLockReadOnly
oRecCadPro.MovePrevious
txtCodigo.Text = oRecCadPro.Fields([Ô]codigo[Ô])
txtNomeEquip.Text = oRecCadPro.Fields([Ô]nome[Ô])
cboFornecedores.Text = oRecCadPro.Fields([Ô]fornecedor[Ô]) [ô] Aqui na base registra apenas o codigo uma função deverá ser feita para trazer nome
Sincroniza_Fornecedores [ô] Faz a sincronia entre as bases Access e Sql Server para exibir o nome correto
cboSetor.Text = oRecCadPro.Fields([Ô]setor[Ô])
txtCodBarras = oRecCadPro.Fields([Ô]codbarra[Ô])
txtPCompra.Text = Format(oRecCadPro.Fields([Ô]precocomp[Ô]).value, [Ô]Currency[Ô]) [ô] Formatação necessária para exibir o valor de forma correta.
txtPVenda.Text = Format(oRecCadPro.Fields([Ô]precovend[Ô]).value, [Ô]Currency[Ô]) [ô] Formatação necessária para exibir o valor de forma correta.
Combo1.Text = oRecCadPro.Fields([Ô]embalagem[Ô])
txtUnEmbalagem.Text = oRecCadPro.Fields([Ô]unidades[Ô])
txtQtdMin.Text = oRecCadPro.Fields([Ô]qtdminima[Ô])
If Not IsNull(oRecCadPro.Fields([Ô]grupo[Ô])) Then [ô] Verifica se o campo não está nulo para evitar erros
txtGrupo.Text = oRecCadPro.Fields([Ô]grupo[Ô])
End If
txtLocalizacao.Text = oRecCadPro.Fields([Ô]sbgrupo[Ô])
txtSugestao.Text = oRecCadPro.Fields([Ô]sugestao[Ô])
txtDescricao.Text = oRecCadPro.Fields([Ô]nome2[Ô])
txtPDV.Text = oRecCadPro.Fields([Ô]Nome1[Ô])
If Not IsNull(oRecCadPro.Fields([Ô]grupo[Ô])) Then
txtGrupo.Text = oRecCadPro.Fields([Ô]grupo[Ô])
End If
If oRecCadPro.Fields([Ô]ativo[Ô]) = True Then
Check1.value = 1
End If
[ô] Para carregar a imagem do Equipamento cadastrado caso existe imagem
If Not IsNull(oRecCadPro.Fields([Ô]foto[Ô])) Then
If oRecCadPro.Fields([Ô]foto[Ô]) <> [Ô][Ô] Then
If Existe(atual & oRecCadPro.Fields([Ô]foto[Ô])) Then
imgEquipamento.Picture = LoadPicture(atual & oRecCadPro.Fields([Ô]foto[Ô]))
End If
Else
imgEquipamento.Picture = LoadPicture([Ô][Ô])
End If
Else
imgEquipamento.Picture = LoadPicture([Ô][Ô])
End If
Call fechaObjetoConnection(oConCadPro)
Call fechaObjetoRecordset(oRecCadPro)
Vamos de novo:
1 - Faça com que seu recordset seja uma variável disponÃvel em todo o form
2 - Faça uma rotina que carregue os dados do registro atual
3 - Em cada um dos botões de navegação, execute o método equivalente à função do mesmo(avança um, retrocede um, volta para o primeiro...)
4 - A rotina de [Ô]preencher[Ô] o recordset faça na inicialização do form (Form_Load)
1 - Faça com que seu recordset seja uma variável disponÃvel em todo o form
2 - Faça uma rotina que carregue os dados do registro atual
3 - Em cada um dos botões de navegação, execute o método equivalente à função do mesmo(avança um, retrocede um, volta para o primeiro...)
4 - A rotina de [Ô]preencher[Ô] o recordset faça na inicialização do form (Form_Load)
kerplunk confundiu mais ainda.
Mesmo assim valew pela ajuda.
Mesmo assim valew pela ajuda.
Mais simples que isso só se eu fazer o código pra você, mas meu objetivo não é este, quero que você aprenda. O que você não entendeu?
Olha colega sem querer me meter, eu aboli este esquema de teclas de navegação a algum tempo, isso porque eu fico imaginado se caso existirem 20.000 (vinte mil) registro no banco e eu queira encontrar apenas seria uma briga danada não acha? eu atualmente procedo da seguinte maneira coloco um textbox e abaixo do mesmo um grid, quando digito uma letra no textbox o grid vai exibindo os registros que começam com a mesma, e assim vou filtrando o que diminui muito minha consulta, a forma que você pretende usar acima era muito usada com DAO, com ADO também funciona porém você teria de abrir o banco de forma diferente, por exemplo.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675542(v=vs.85).aspx
o link acima mostra a maneira a se proceder.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675542(v=vs.85).aspx
o link acima mostra a maneira a se proceder.
Tópico encerrado , respostas não são mais permitidas