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]Atualização de campo baseado em outro

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty [Resolvido]Atualização de campo baseado em outro

    Mensagem  vileman 10/2/2014, 02:40

    Boa noite a todos.

    Tenho um formulário de nome "F15_Documentos" com os campos: "IDComarca" e "IDOrgaoMP" (Origem: Tabela: T15_Documentos. Ambos Tipo número. inteiro longo).
    O 1º campo tem origem na tabela T08_ComarcasMP, e o 2º campo tem origem na Tabela T07_OrgaosMP.
    Na tabela T07_OrgaosMP que por sua vez tem o nome do município onde está localizado o Órgão MP.
    Preciso do seguinte como tem vários órgãos MP em diferentes cidades que por sua vez está baseado no campo "IDComarca", quando eu selecionasse no campo "IDComarca" ele mostraria apenas os órgãos da comarca correspondente. * OBS: Comarca nesse caso é o nome do município.

    Exemplo: No campo "IDComarca" seleciono o código da Comarca de Olinda (Código 2 da tabela T08_ComarcasMP), então quando o foco fosse para o campo "IDOrgaoMP" seria mostrado apenas os órgãos que estão localizados nessa Comarca (município) baseado no campo "cidade" (Tabela T07_OrgaosMP) correspondente ao campo "NomeMunicipio" (T08_ComarcasMP).

    Obrigado a todos.

    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 11/2/2014, 21:12

    Olá,

    Sugestão seria colocar no evento ao receber foco da sua 2ª combo que busca dado na T07:

    Dim sSQL As String
    sSQL = "SELECT SeuCampo FROM SuaTabela WHERE SeuCampo =" & Me.SuaPrimeiraCombo
    Me.SuaSegundaCombo.RowSource = sSQL


    SuaTabela = T07_OrgaosMP
    SeuCampo = Campo que tem o dado compatível com a da comarca existente na 1ª ComboBox
    SuaPrimeiraCombo = Sua 1ª ComboBox que busca dados na T08
    SuaSegundaCombo = Sua 2ª ComboBox que busca dados na T07
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 12/2/2014, 20:05

    Olá,

    Fiz como sugerido e ficou assim:

    Private Sub ComboOrgao_GotFocus() 'Evento ao receber Foco na 2ª combobox
    Dim sSQL As String
    sSQL = "SELECT NomeMunicipio FROM T07_OrgaosMP WHERE NomeMunicipio =" & Me.ComboComarca
    Me.ComboOrgao.RowSource = sSQL
    End Sub

    Quando fiz os testes no Formulário, depois de digitar o código 2 (referente a Comarca Olinda) e o foco ir para a 2ª combobox não apareceu nada, aoo clicar na mesma aparece a mensagem "Inserir valor do parâmetro" e abaixo o nome do campo "NomeMunicipio" com local para digitar. Ao digitar "olinda" (para testar, apesar do erro), aparece uma mensagem de erro:"Essa expressão foi digitada de forma incorreta ou é complexa demais para ser analisada..."

    Lembrando que:

    1ª combobox = ComboComarca
    2ª combobox = ComboOrgao
    T08_ComarcasMP = "NomeMunicipio" Campo que tem o dado compatível com a da comarca existente na 1ª ComboBox
    T07_OrgaosMP = "Cidade" campo coincidente com o de cima


    Será que fiz da forma correta?

    Obrigado, aguardo instruções.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 12/2/2014, 20:11

    Se considerar que o tipo de dado é Número, então deveria ter funcionado.

    Qual tipo de dado é do NomeMunicipio e ComboComarca ?

    Editado:
    Olhando o que reportou, deveria ser assim:

    sSQL = "SELECT Cidade FROM T07_OrgaosMP WHERE Cidade =" & Me.ComboComarca

    Não ? Cool 
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 13/2/2014, 00:33

    Os campos "IDComarca" e "IDOrgaoMP" são tipo Número. Inteiro longo.
    Os campos "Cidade" e "NomeMunicipio" são tipo Texto
    as 2 combos são do tipo Número, pois na caixa de texto está assim:

    Nome: ComboComarca (1ª combo)
    Fonte de controle: IDComarca

    Nome: ComboOrgao (2ª combo)
    Fonte de controle: IDOrgaoMP


    Coloquei da forma que recomentou:
    sSQL = "SELECT Cidade FROM T07_OrgaosMP WHERE Cidade =" & Me.ComboComarca

    Deu a mensagem de erro: "Tipo de dados incompatível na expressão de critério", aliás, eu já havia testado dessa forma antes, apenas esqueci de comentar.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 13/2/2014, 01:08

    sSQL = "SELECT IDOrgaoMP, Cidade FROM T07_OrgaosMP WHERE IDOrgaoMP =" & Me.ComboComarca

    Tente assim e na largura das colunas coloque:

    0cm;5cm

    0cm para ocultar IDOrgaoMP
    4cm para mostrar as cidades, podendo aumentar ou diminuir a largura aqui.


    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 13/2/2014, 02:00

    Funcionou parcialmente, pois ficou assim:

    1) Não deu nenhum tipo de erro
    2) ao clicar na 2ª combo aparece o nome do campo "Cidade", mas não mostra nenhum registro
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 13/2/2014, 10:45

    Olá,

    Então tá quase.

    Pode postar uma amostra só dessa parte, porque agora deve ser detalhe e descobrir melhor vendo.

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 13/2/2014, 13:46

    Segue o arquivo em anexo.

    PS: ao clicar no combo "ComboComarca" está aparecendo uma mensagem de erro no procedimento de evento que antes não estava.
    Anexos
    [Resolvido]Atualização de campo baseado em outro AttachmentVileman_FMA.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (116 Kb) Baixado 15 vez(es)
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 13/2/2014, 14:07

    Oi Vileman,

    O campo IDOrgaoMPPE não consta na T07.

    Para dar certo precisamos identificar um campo na T08 que coincida na T07 e não consegui ver isto, perto de onde cheguei foi observar o campo NomeMunicipio com Cidade, mas o ideal que fosse numeral tipo chave primária para chave estrangeira.

    NomeMunicipio coincidindo com Cidade dá pra responder na SQL, no entanto o processo ficará com falhas devido referenciar por texto e uma mudança ou duplicação de nome e a exatidão foi-se.



    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 13/2/2014, 15:16

    Oi, Dilson

    Desculpe, o nome do campo é realmente IDOrgaoMPPE, mas nas minhas postagens anteriores coloquei como IDOrgaoMP.

    Poderia se criar na Tabela T07 um campo tipo número como "IDMunicipio" e nesse campo digitar todos os códigos correspondentes das cidade que estão na tabela T08 e a partir disso fazer a vinculação? o que acha ?

    Exemplo:

    T08 - CodMunicipio = 2 - NomeMunicipio = Olinda
    T07 - IDMunicipio   = 2 (todos os órgaos que tem no campo "Cidade" como Olinda)

    Apenas eu não saberia como fazer essa vinculação.

    PS: Se puder pode fazer de outra forma também.


    Última edição por vileman em 13/2/2014, 15:17, editado 1 vez(es) (Motivo da edição : Complemento do tópico)
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 13/2/2014, 16:59

    Isso mesmo Vileman.

    Pode-se criar o campo IDMunicipio e preencher com os dados de CodMunicipio.

    Editado:
    A dica de técnica que passei não funcionou aqui. Vou pensar em outra maneira, de toda maneira a criação do IDMunicipio é uma boa e dá até pra relacionar de maneira temporária NomeMunicipio com Cidade e ir em NomeMunicipio clicar no sinal de mais (+) na linha do registro e preencher a chave estrangeira.

    A noite te trago uma solução melhor, tenho que ir agora ao trabalho.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 13/2/2014, 19:00

    Valeu, Dilson, fico no aguardo.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 15/2/2014, 21:54

    Olá, obrigado pela paciência em esperar, é que esses dias meus dias foram bem corridos.

    Aqui a solução:

    Eu escrevi um algoritmo para que preencha a chave primária da T08 nos registros da T07:

    No apertar de um botão:

    On Error GoTo TratareiErro
    Dim Rs As DAO.Recordset
    Dim ChaveBuscada As Long
    Dim BuscaDaChave As String
    Dim Contador As Long
    Dim ContaMove As Long
    Set Rs = CurrentDb.OpenRecordset("T07_OrgaosMP")
    Contador = Rs.RecordCount
    SysCmd acSysCmdInitMeter, "Aguarde a finalização...", Contador
         For ContaMove = 1 To Contador
             SysCmd acSysCmdUpdateMeter, ContaMove
             BuscaDaChave = Rs("Cidade")
             ChaveBuscada = Nz(DLookup("CodMunicipio", "T08_ComarcasMP", _
                                       "NomeMunicipio='" & BuscaDaChave & "'"))
             Rs.Edit
             Rs("IDMunicipio") = ChaveBuscada
             Rs.Update
             Rs.MoveNext

         Next ContaMove

    Rs.Close
    SysCmd acSysCmdRemoveMeter
    Exit_TratareiErro:
    Exit Sub
    TratareiErro:
    MsgBox "Aconteceu falha neste processamento." _
          & vbCrLf & "Trata-se do erro n°: " & Err.Number _
          & vbCrLf & "Descrição: " _
          & Err.Description, vbInformation, "Erro inesperado"
    Exit Sub


    Antes de rodar este código faça as seguintes renomeações de registro do campo Cidade da T07:
    Belém de São Franciso Para Belém de São Francisco
    Itaqutinga Para Itaquitinga
    Exu Para Exú
    Calçados Para Calçado
    Machado Para Machados
    Moreilândia Para Moreilandia
    Palmerina Para Palmeirina
    São José do Egito Para São Jose do Egito
    São Vicente Férrer Para São Vicente Ferrer
    Sertania Para Sertânia

    Crie o campo IDMunicipio na T07

    Se quiser rodar o código sem renomear também pode, no entanto a chave estrangeira será preenchida com zero, depois você pode filtrar e preencher manualmente as chaves primárias nas estrangeiras.

    A sua SQL ficou assim:

    Dim sSQL As String
           sSQL = "SELECT IDMunicipio, NomeOrgao" _
                  & " FROM T07_OrgaosMP WHERE IDMunicipio =" & Me.ComboComarca
    Me.ComboOrgao.RowSource = sSQL


    Implemente e retorne para marcar o resolvido ou continuar a discussão.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 15/2/2014, 23:03

    Dílson, boa noite

    Valeu pela força, simplesmente ficou perfeito.

    Obrigado e muita Paz.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 15/2/2014, 23:12

    Falow Vileman, obrigado pelo feedback.

    Abraço!
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 19/2/2014, 00:11

    Boa noite, Dílson

    Sem querer abusar de sua boa vontade, a rotina está funcionando perfeitamente, só que faltou um detalhe que naquele dia me passou despercebido:

    quando no evento "Ao receber o foco" onde está a instrução SQL, a 2ª combobox recebe o foco e escolho o órgão pelo IDMunicipio, ele grava no campo "IDOrgaoMPPE" o mesmo código do IDMunicipio, quando preciso que grave o código do órgão correspondente, observei isso após fazer testes com mais de um órgão com o mesmo município.

    Exemplo: O município de Olinda ou qualquer outro pode ter mais de um órgão localizado no mesmo município, então ao escolher o órgão pelo município preciso que na tabela no campo "IDOrgaoMPPE" seja gravado o código do órgão, mesmo que exista apenas um órgão em determinado município.

    IDComarca = 2 (Olinda) - 1ª combobox, aparece os órgãos na 2ª combobox:

    Cod. - Nome do órgão
    15 - 1ª Promotoria de Justiça de Olinda - IDMunicipio = 2
    16 - 2ª Promotoria de Justiça de Olinda - IDMunicipio = 2

    foi escolhido a 2ª opção, então grava o código 16 no campo IDOrgaoMPPE, e no campo "IDComarca" fica gravado o código 2 (Olinda)

    Porisso estou reabrindo este tópico, não sei se abri da forma correta.

    Obrigado.

    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 19/2/2014, 18:01

    Olá Vileman,

    Fez bem continuar a discussão por aqui pelo fato que a questão colocada é ajuste do que foi proposto e não implantação de uma nova funcionalidade.

    Use o asteristico no lugar dos dois campos referidos no SELECT:

    SELECT * ... que deverá funcionar sem mexer em mais nada.


    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 20/2/2014, 23:37

    Boa noite, Dílson

    Fiz como orientado e ficou assim a linha de comando:

    sSQL = "SELECT *, NomeOrgao" & " FROM T07_OrgaosMP WHERE IDMunicipio =" & Me.ComboComarca

    Quando testei no formulário, aconteceu o seguinte:

    1) após escolher o município na 1ª combobox = 2 (Olinda)
    2) no evento "ao receber foco" ao clicar na 2ª combobox ficou aparecendo assim logo abaixo:
    NomeOrgao CodOrgMP
    Promotoria ..... 3
    Promotoria ..... 4
    Promotoria ..... 5
    Promotoria ..... 92

    Mostra essa listagem que tem os órgãos com o IDMunicipio = 2 (4 órgãos), mas inverte a ordem colocando 1º o campo "NomeOrgao" e depois o "CodOrgMP". E quando clico em uma das 4 opções aparece a mensagem: "O valor que você inseriu não é válido para este campo. Por exemplo, talvez você tenha inserido texto em um campo numérico ou um número maior que o permitido pela definição de tamanho do campo.".
    Olhei em propriedades da 2ª combobox e está assim: Número de colunas = 2, "Largura das colunas" = 1cm;12cm, e em "Origem da linha" = T07_OrgaosMP

    Devo ter invertido também alguma coisa ou o comando está errado?



    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Dilson 21/2/2014, 00:24

    Assim:

    sSQL = "SELECT * FROM T07_OrgaosMP WHERE IDMunicipio =" & Me.ComboComarca
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Atualização de campo baseado em outro Empty Atualização de campo baseado em outro

    Mensagem  vileman 21/2/2014, 02:37

    Valeu mais uma vez Dílson, funcionou perfeitamente.

    Obrigado e muita Paz.

    Conteúdo patrocinado


    [Resolvido]Atualização de campo baseado em outro Empty Re: [Resolvido]Atualização de campo baseado em outro

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 20:49