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]Atualizar vários campos em simultaneo de um Registo

    Compartilhe
    avatar
    sardao
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 324
    Registrado : 12/03/2011

    [Resolvido]Atualizar vários campos em simultaneo de um Registo

    Mensagem  sardao em 2/3/2018, 18:54

    Boa tarde,

    Cada vez mais o sistema que criei na empresa tem vindo a crescer, da mesma forma que o numero de pessoas a mexer no mesmo.
    Desta forma, ha necessidade que as ligações constantes as tabelas, sejam menores, para que o sistema não tenha erros constantes, e desta forma apenas irá existir ligação as tabelas principais por pequenos segundos, para fazer atualizações nos registo, copia de dados, inserção de novos dados.

    Desta forma, tenho uma ideia para ser usada em VBA ou MySQl, mas nao sei como fazer.
    Sabendo apenas o ID que foi reservado para o novo registo (que ficará em branco até ser terminado no Frontend), como poderia atualizar o mesmo na sua totalidade?

    O unico comando que conheço só me deixa atualizar um campo de cada vez, e precisava de atualizar cerca de 20 campos de uma só vez.
    DoCmd.RunSQL "Update Tabela Set[Tabela]![Campo] = 1 where [Campo]='" & Me.CampoForm & "'"

    Alguem sabes como fazer?

    Cumprimentos,
    Pedro Costa
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1237
    Registrado : 05/02/2010

    Atualizar vários campos em simultaneo de um Registo

    Mensagem  good guy em 2/3/2018, 20:11

    Olá Sardao,

    Você deseja atualizar os 20 registos com o mesmo valor do campo do seu formulário do campo ID = 1 até 20 da tabela?Como é isso?
    avatar
    sardao
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 324
    Registrado : 12/03/2011

    Re: [Resolvido]Atualizar vários campos em simultaneo de um Registo

    Mensagem  sardao em 2/3/2018, 20:18

    Boa noite Good Guy,

    A questão não sao os 20 Registos, mas sim os 20 Campos.

    Exemplo:
    ID, Nome, Contato, Morada, Contribuinte.

    Acima estao 4 campos que preciso de atualizar de uma so vez e a unica forma que conheço é atualizar campo a campo, ou seja:

    DoCmd.RunSQL "Update Tabela Set[Tabela]![Nome] = 1 where [Nome]='" & "Pedro Costa" & "'"
    DoCmd.RunSQL "Update Tabela Set[Tabela]![Contato] = 1 where [Contato]='" & "91999999" & "'"
    DoCmd.RunSQL "Update Tabela Set[Tabela]![Morada] = 1 where [Morada]='" & "Av Liberdade" & "'"
    DoCmd.RunSQL "Update Tabela Set[Tabela]![Contribuinte] = 1 where [Contribuinte]='" & "11111111" & "'"


    Obrigado
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1237
    Registrado : 05/02/2010

    Atualizar vários campos em simultaneo de um Registo

    Mensagem  good guy em 2/3/2018, 21:56

    Código de um botão que fará as alterações.

    Código:


    Private Sub cmdAlterar_Click()

    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim Trans As Boolean
    Dim sNome, sEndereco As String
    Dim tNome, tEndereco As String

    On Error GoTo Erro

    Trans = False
    Set ws = DBEngine.Workspaces(0) 'Referir-se ao Workspace padrão
    Set db = CurrentDb 'Banco de Dados corrente
    Set rs = db.OpenRecordset("Teste", dbOpenDynaset)    'Verificar sempre na propriedade do formulário qual é o tipo de acesso
    ws.BeginTrans
    Trans = True

    'Aqui entra os seus campos que deseja alterar
    sNome = Dlookup("Nome","NomedaTabela","ID= 1")
    sEndereco =Dlookup("Endereco","NomedaTabela,"ID = 1")
    ....

    'Aqui entra os novos campos que vão alterá-los
    tNome = Forms!NomedoForms!Nome
    tEndereco = Forms!NomedoForms!Endereco
    .....

    rs.MoveFirst    'Garantir que iniciará no primeiro registro

    Do Until rs.EOF   'Faça enquanto não chegar ao final da Tabela
    rs.Fields("Nome") = sNome Then
    rs.Fields("Endereco") = sEndereco Then
    ....
    rs.Edit   'Abre para alterações
    rs.Fields("Nome") = tNome
    rs.Fields("Endereco") = tEndereco
    .....
    rs.Update
    rs.MoveNext 'Mover para o próximo registro
    Loop

    If MsgBox("Salvar alterações?", vbQuestion + vbYesNo, "Salvar") = vbYes Then
    ws.CommitTrans 'Salva alterações
    Me.Requery
    Else
    ws.Rollback 'Desfaz alterações
    End If

    Sair:
    rs.Close
    Set db = Nothing
    Set ws = Nothing
    Exit Sub

    Erro:
    MsgBox "Erro"
    If Trans = True Then
    Exit Sub
    End If

    Resume Sair
    End Sub


    Última edição por good guy em 2/3/2018, 23:29, editado 2 vez(es)
    avatar
    sardao
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 324
    Registrado : 12/03/2011

    Re: [Resolvido]Atualizar vários campos em simultaneo de um Registo

    Mensagem  sardao em 2/3/2018, 23:15

    Boa noite Good Guy,

    Desde já muito obrigado pela ajuda.
    Hoje já não conseguirei testar o código, mas Segunda-feira irei testar lá no trabalho.
    Alguma questão voltarei a reabrir o tema.

    Cumprimentos,
    Pedro Costa
    avatar
    sardao
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 324
    Registrado : 12/03/2011

    Re: [Resolvido]Atualizar vários campos em simultaneo de um Registo

    Mensagem  sardao em 5/3/2018, 17:30

    Boas Good Guy,

    Consegui por o codigo a funcionar, com algumas alterações mas está lá! Very Happy
    Desde já obrigado.

    Agora estou cum uma duvida, para que serve o seguinte codigo?

    Dim Trans As Boolean
    trans = true
    trans = false
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1237
    Registrado : 05/02/2010

    Atualizar vários campos em simultaneo de um Registo

    Mensagem  good guy em 6/3/2018, 18:18

    Olá sardao,

    Trans significa transação, isto é, o processo de abertura e encerramento das alterações no recordset ou tabela. Esta transação é do tipo boleano (início/fim) ou melhor, (verdadeiro/falso).

    Se quiser aprender mais adquira os meus dois livros DOMINE O ACCESS VBA e TÉCNICAS ESPECIAIS DE ACCESS VBA e você vai aprender isto e muito mais.

    Editora Livrorama(DOMINE ...):
    [Você precisa estar registrado e conectado para ver este link.]

    Editora Ciência Moderna(TÉCNICAS...):
    [Você precisa estar registrado e conectado para ver este link.]


    Um grande abraço.

    "O temor do Senhor(respeito pela Palavra de Deus, leitura e obediência) é o princípio do conhecimento" (Prov. 1.7)
    Disse Jesus: "E conhecereis a Verdade e a Verdade vos libertará". (Jo 8.32)
    Disse Jesus: “Eu sou a luz do mundo; aquele que me segue, não andará em trevas, mas terá a luz da vida.” (Jo. 8.12)

      Data/hora atual: 18/11/2018, 19:11