MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

2 participantes

    [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID

    avatar
    onfire
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 17
    Registrado : 18/09/2016

    [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID Empty [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID

    Mensagem  onfire Ter 02 Nov 2021, 21:59

    Exmos
    No formulário continuo tenho um botão com este código que envia o ID para o formulário editar.

    Código:
    Private Sub Comando18_Click()
    'Abrir o formulário e assumir o ID do formulário continuo.
    DoCmd.OpenForm "Editar"
    Forms!Editar!TxtCod = Me.cli_id
    End Sub


    _______________________//________________________________________


    'No formulário Editar, como tenho o ID preenchido, vai carregar os dados relativos a esse ID (está desvinculado)

    Código:
    Private Sub Form_Load()
    Dim rs As DAO.Recordset
    Dim strSQL As String

    strSQL = "select cli_id, cli_nome, cli_cpf, cli_telefone, cli_email, cli_inativo, cli_data_cadastro, cli_apagado from " _
    & "tbl_clientes where cli_id=" & Forms!Frm_C_Movimentos!cli_id
    Set rs = CurrentDb.OpenRecordset(strSQL, , 4)

    'Este primeiro campo é assumido pelo envio pelo formuário continuo.
    'Me.Idola = rs!cli_id
    Me.TxtNome = rs!cli_nome
    Me.TxtCPF = rs!cli_cpf
    Me.TxtTel = rs!cli_telefone
    Me.TxtEmail = rs!cli_email
    Me.SlcInativo = rs!cli_inativo
    Me.TxtDataCad = rs!cli_data_cadastro
    Me.Slc_erase = rs!cli_apagado

    rs.Close
    Set rs = Nothing


    End Sub

    _________________//______________________

    Até aqui não tenho problemas, mas o problema acontece quando quero editar o valor.
    Ele edita sempre no cli_id = 1. Mas no código que apresento de seguida existe um erro que não consigo detectar.


    Código:
    Private Sub Bt_salvar_Click()
    Dim rs As DAO.Recordset

    'indicar a tabela onde vai gravar
    Set rs = CurrentDb.OpenRecordset("tbl_clientes")

    'Aqui abro o recordset em modo editar
    rs.Edit

    'este permite que o formulário recebe o ID atribuído automaticamente pela base de dados após a edição/gravação.
    Me.TxtCod = rs!cli_id
    rs!cli_nome = Me.TxtNome
    rs!cli_cpf = Me.TxtCPF
    rs!cli_telefone = Me.TxtTel
    rs!cli_email = Me.TxtEmail
    rs!cli_inativo = Me.SlcInativo
    rs!cli_data_cadastro = Me.TxtDataCad
    rs!cli_apagado = Me.Slc_erase
    rs.Update

    rs.Close
    Set rs = Nothing

    MsgBox "Alterado com sucesso", vbInformation, "Informação"


    End Sub


    Onde está o meu erro no código? O que me falta para ele assumir a localização do ID correto?
    Sempre que faço alterações ele assume sempre a alteração na primeira linha da tabela. Não faz sentido.
    Onde estou a errar?
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3329
    Registrado : 22/11/2016

    [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID Empty Re: [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID

    Mensagem  DamascenoJr. Ter 02 Nov 2021, 22:20

    Código:
    Set rs = CurrentDb.OpenRecordset("tbl_clientes")
    Acima, você abre a tabela mas não diz em que posição quer estar. Então o ponteiro que não é bobo nem nada, vai para onde se começa qualquer coisa, isto é, do início.

    Basta abrir a tabela indo com o ponteiro bem para onde você buscou os dados, ou seja, onde o cli_id é igual ao que está em tela.

    Código:
    Set rs = CurrentDb.OpenRecordset("select cli_id, cli_nome, cli_cpf, cli_telefone, cli_email, cli_inativo, cli_data_cadastro, cli_apagado from " _
                                                & "tbl_clientes where cli_id=" & Forms!Frm_C_Movimentos!cli_id)


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    onfire
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 17
    Registrado : 18/09/2016

    [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID Empty Resolvido

    Mensagem  onfire Ter 02 Nov 2021, 22:28

    Foi muito rápido.
    Incrível.
    Obrigadão.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3329
    Registrado : 22/11/2016

    [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID Empty Re: [Resolvido]RecordSet grava sempre na primeira posição da tabela ignorando o ID

    Mensagem  DamascenoJr. Ter 02 Nov 2021, 22:59

    Grande Nelio... ainda estou devendo o email. Shocked

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: Ter 30 Nov 2021, 00:12