MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Editar Registo

    Compartilhe

    Anderson Catarino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2017

    [Resolvido]Editar Registo

    Mensagem  Anderson Catarino em 14/12/2017, 12:35

    Bom dia.
    Eu tenho um formulário desvinculado com 8 colunas, sendo que essas colunas são preenchidas dia a dia.
    Eu tenho uma listbox que faço duplo click sobre o registo que quero acrescentar informação e depois faço gravar essa alteração.
    O que eu faço é eliminar o ficheiro por uma ordem de produção (é como se fosse a minha chave primaria) e depois adiciono os campos outra vez.

    Tipo isso:

    CurrentDb.Execute "DELETE * from Tabela1 WHERE op= '" & Me.op & "'"
    Dim db As DAO.Database
    Dim tb As DAO.Recordset
    Set db = CurrentDb
    Set tb = db.OpenRecordset("Tabela1")
    tb.AddNew
    tb!maquina = Me.maquina
    tb!denier = Me.denier
    tb!op = Me.op
    tb!data = Me.data
    tb!produto = Me.produto
    tb!cor = Me.cor
    tb!pontas = Me.pontas
    ....
    ....
    tb.Update
    tb.Close
    Set db = Nothing

    Funciona tudo certo excepto quando quero, digamos, alterar a ordem de produção, se eu alterar a ordem de produção ai ele já acrescenta outro registo. pois não vai fazer o Delete.

    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 332
    Registrado : 23/01/2017

    Re: [Resolvido]Editar Registo

    Mensagem  thiagomcosta em 14/12/2017, 18:49

    Ao invés de deletar e incluir novamente, tente fazer a modificação do registro, através do comando UPDATE:

    Código:
    'Considerando que todos os campos são formato texto para exemplo
    strSQL = ""UPDATE Tabela1 SET "
    strSQL = strSQL & "maquina = '" & Me.maquina & "', "
    strSQL = strSQL & "denier ='" & Me.denier & "', "
    strSQL = strSQL & "tb!op ='" & Me.op & "', "
    strSQL = strSQL & "tb!data ='" & Me.data & "', "
    strSQL = strSQL & "tb!produto ='" & Me.produto & "', "
    strSQL = strSQL & "tb!cor ='" & Me.cor & "', "
    strSQL = strSQL & "tb!pontas ='" & Me.pontas & "' "
    strSQL = strSQL & "WHERE op= '" & Me.op & "';"
    docmd.runSQL strSQL

    PS: Faltaram as vírgulas

    Anderson Catarino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2017

    Re: [Resolvido]Editar Registo

    Mensagem  Anderson Catarino em 15/12/2017, 10:49

    Boas thiagomcosta.
    Olha não consegui implementar a tua sugestão.
    O que estou a desenvolver foi criado um pouco em cima dos joelhos mais como teste.
    Eu tenho uma tabela com 137 campos, sendo que só um não esta como texto.
    Não percebi o que querias dizer com "PS: faltam as vírgulas".
    Vou te deixar a minha bd para dares uma vista de olhos se possível.

    No formulário1 faço duplo click num registo da listbox, depois faço adicionar e os campos passam a estar enabled = True, acrescento informação e depois gravar. depois ai começam a aparecer os erros.

    O Código está assim:

    ***************************************************************************************************
       Dim StrSQL As String
       Dim Cancel As Boolean
       
       If MsgBox("Deseja gravar alteração?", vbYesNo + vbInformation, "Novo") = vbYes Then

       
       StrSQL = "UPDATE Tabela1 SET "
       
       StrSQL = StrSQL & "maquina = '" & Me.maquina & "', "
       StrSQL = StrSQL & "denier ='" & Me.denier & "', "
       StrSQL = StrSQL & "tb!op ='" & Me.op & "', "
       StrSQL = StrSQL & "tb!data ='" & Me.data & "', "
       StrSQL = StrSQL & "tb!produto ='" & Me.produto & "', "
       StrSQL = StrSQL & "tb!cor ='" & Me.cor & "', "
       StrSQL = StrSQL & "tb!pontas ='" & Me.pontas & "' "
       StrSQL = StrSQL & "tb!tenacidade ='" & Me.tenacidade & "' "

       'DATA 1

       StrSQL = StrSQL & "tb!data1 ='" & Me.data1 & "' "
       StrSQL = StrSQL & "tb!amostra11 ='" & Me.amostra11 & "' "
       StrSQL = StrSQL & "tb!amostra21 ='" & Me.amostra21 & "' "
       StrSQL = StrSQL & "tb!amostra31 ='" & Me.amostra31 & "' "
       StrSQL = StrSQL & "tb!amostra41 ='" & Me.amostra41 & "' "
       StrSQL = StrSQL & "tb!amostra51 ='" & Me.amostra51 & "' "
       StrSQL = StrSQL & "tb!amostra61 ='" & Me.amostra61 & "' "
       StrSQL = StrSQL & "tb!f1 ='" & Me.f1 & "' "
       StrSQL = StrSQL & "tb!media1 ='" & Me.media1 & "' "
       StrSQL = StrSQL & "tb!xden1 ='" & Me.xden1 & "' " & _
       StrSQL = StrSQL & "tb!amplitude1 ='" & Me.amplitude1 & "' "
       StrSQL = StrSQL & "tb!rden1 ='" & Me.rden1 & "' "
       StrSQL = StrSQL & "tb!fr1 ='" & Me.fr1 & "' "
       StrSQL = StrSQL & "tb!along1 ='" & Me.along1 & "' "
       StrSQL = StrSQL & "tb!tenacidade1 ='" & Me.tenacidade1 & "' "
       StrSQL = StrSQL & "tb!rubrica1 ='" & Me.rubrica1 & "' "

       ' Depois vem DATA2 e todos os outros campos até DATA8

       StrSQL = StrSQL & "tb!obs ='" & Me.obs & "' "
       StrSQL = StrSQL & "WHERE op= '" & Me.op & "';"
       
       DoCmd.RunSQL StrSQL
         

       Else
       Cancel = True
       End If

      ***************************************************************************************************
    Anexos
    Media2 - Cópia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (355 Kb) Baixado 7 vez(es)
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 332
    Registrado : 23/01/2017

    Re: [Resolvido]Editar Registo

    Mensagem  thiagomcosta em 15/12/2017, 10:55

    Hoje não vou conseguir dar uma olhada.

    A principio, o que eu reparei no código é que não precisa colocar o tb!, pois a tabela já está sendo passada no inicio do comando SQL. Tente tirar os tb!

    Qualquer coisa este final de semana eu dou uma olhada no seu bd.

    Anderson Catarino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2017

    Re: [Resolvido]Editar Registo

    Mensagem  Anderson Catarino em 15/12/2017, 11:07

    Tirei mas não resultou.
    O erro que dá é em DoCmd.RunSQL StrSQL

    ******************************************************************
    Run-time error '3129':

    Instrução SQL invalida; Delete, Insert, Procedure, Select ou Update esperado.

    ******************************************************************

    Quando tiveres tempo vês me isso.
    Vou procurando soluções
    Obrigado

    Anderson Catarino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2017

    Re: [Resolvido]Editar Registo

    Mensagem  Anderson Catarino em 18/12/2017, 10:57

    up

    Anderson Catarino
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2017

    Re: [Resolvido]Editar Registo

    Mensagem  Anderson Catarino em 18/12/2017, 12:27

    Resolvido
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 332
    Registrado : 23/01/2017

    Re: [Resolvido]Editar Registo

    Mensagem  thiagomcosta em 19/12/2017, 10:51

    Que bom!

    Acabei de entrar aqui para ver o seu arquivo.
    Desculpe, mas não consegui parar nestes últimos dias. Preparativos para entrar de férias no final do ano e correria para deixar tudo em dia.

      Data/hora atual: 16/12/2018, 17:58