CassioFabre 1/11/2016, 12:26
Bom dia,
Primeiramente é de suma importância que tenha na tabela um campo de chave primária que diferenciará um registro de outro. Normalmente se utiliza um campo "codigo" (numérico, inteiro) para este fim, podendo ser auto numérico ou não. Particularmente, não gosto de utilizar campos auto numéricos, prefiro incluir os valores via código. Enfim, isso vai de cada um. Este campo tem que estar presente no seu formulário, com ele que você conseguirá passar registros de um para outro.
No evento
Ao Abrir do seu formulário, coloque o seguinte:
- Código:
If Dcount("codigo", "suaTabela") = 0 then
txtCodigo = 1
Else
txtCodigo = DMax("codigo", "suaTabela") + 1
End if
Este trecho fará com que ao abrir o formulário, o sistema verifique se há algum registro cadastrado na tabela, caso falso o campo código recebe o valor de 1, caso verdadeiro receberá o valor do ultimo código da tabela incrementado de 1.
Para cadastrar um registro na tabela, eu gosto de utilizar o recordset da seguinte maneira:
- Código:
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("suaTabela")
rs.AddNew
rs("campo1") = txtCampo1
rs("campo2") = txtCampo2
rs("campon") = txtCampoN
rs.Update
rs.Close
db.Close
Para editar um registro, basicamente utiliza-se a mesma rotina com uma pequena alteração no select:
- Código:
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM suaTabela WHERE codigo = " & txtCodigo & "")
rs.Edit
rs("campo1") = txtCampo1
rs("campo2") = txtCampo2
rs("campon") = txtCampoN
rs.Update
rs.Close
db.Close
Para navegar entre os registros, criei aqui agora essa função:
- Código:
Public Function navegaRegistros(direcao As String)
Dim db As Database
Dim rs As Recordset
Dim primeiroRegistro, ultimoRegistro As Integer
primeiroRegistro = DMin("codigo", "suaTabela")
ultimoRegistro = DMax("codigo", "suaTabela")
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM suaTabela where codigo = " & txtCodigo & "")
If direcao = "+" Then 'navega para registros posteriores
If txtCodigo = ultimoRegistro Then
MsgBox "Este é o último registro cadastrado", vbCritical, "Ultimo Registro"
Exit Function
End If
txtCodigo = txtCodigo + 1
ElseIf direcao = "-" Then 'navega para registros anteriores
If txtCodigo = primeiroRegistro Then
MsgBox "Este é o último registro cadastrado", vbCritical, "Ultimo Registro"
Exit Function
End If
txtCodigo = txtCodigo - 1
ElseIf direcao = "ultimo" Then 'navega para ultimo registro
txtCodigo = ultimoRegistro
ElseIf direcao = "primeiro" Then 'navega para primeiro registro
txtCodigo = primeiroRegistro
End If
Set rs = db.OpenRecordset("SELECT * FROM suaTabela where codigo = " & txtCodigo & "")
txtCampo1 = rs!campo1
txtCampo2 = rs!campo2
txtCampoN = rs!campon
End Function
No evento Ao Clicar do seus botões insira:
- Código:
Call navegaRegistros(direcao)
Substituindo "direcao" por "+" no botão que avança ao proximo registro, por "-" quando for anterior e assim sucessivamente.
Segue em anexo um exemplo com essas funções que descrevi aqui. É basico só pra se ter uma ideia, várias coisas que podem e devem ser alteradas. Qualquer coisa o fórum está aí.
Abraço.
- Anexos
- salvar.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (59 Kb) Baixado 84 vez(es)