MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Dlookup concatenado

    Compartilhe

    JoaoFelix
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 16/11/2016

    Dlookup concatenado

    Mensagem  JoaoFelix em Qua 23 Nov 2016, 01:15

    Boas pessoal.
    Estou num form a cadastrar produtos(na tbl produtos) e alguns dos campos são:API,DOSEFORM, PRODUCTCODE..
    Preciso que o campo PRODUCTCODE seja concatenação do CODAPI(TABELA API) com o CODDOSEFORM(TABELA DOSEFORM).


    Tabela API:
    CODAPI API
    1000 AZTREONAN
    1001 IDURSULFASE


    TABELA DOSEFORM:
    CODDOSEFORM DOSEFORM
    10 CAPS
    11 VIAL
    12 AMP




    Assim, se eu cadastrar um prod com API=AZTREONAN com doseform=AMP, preciso que o Campo ´PRODUCTCODE´ fique :100012.

    Tentei esse código (para testar se ele devolvia 1000) no event procedure ao clicar no save do formulário mas dá erro de sintaxe

    CurrentDb.Execute "UPDATE PRODUCTS SET PRODUCTCODE=Dlookup(“CODAPI”,”API”,”API=’AZTREONAN'”)".


    Se alguem me puder ajudar fico eternamente agradecido.
    Obrigado a todos, abraço.

    philipp.moreira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 05/02/2016

    Re: Dlookup concatenado

    Mensagem  philipp.moreira em Qua 23 Nov 2016, 02:46

    João,

    creio que os campos API e DOSEFORM da tabela Produtos, sejam, chave estrangeira (Foreign Key), correto? Armazenando o código da API e do DOSFORM, desta forma, por que, não cria somente uma consulta de atualização:


    Código:
     UPDATE Products SET Productcode =  API & DOSEFORM .

    E através do VBA chama a consulta criada:

    Código:
     CurrentDB.Execute "ConsultaUpDate"

    Observação: Aqui estou presumindo que o campo Productcode é um campo do tipo texto e desta forma vai aceitar a concatenação sem maiores problemas, agora se o campo é do tipo numérico a concatenação não vai funcionar, pois não estaríamos tratando de valores do tipo texto e sim numéricos.

    PS.:
    Creio que seu código esteja gerando erro pois está chamando o Dlookup dentro da string de comando SQL a ser executado. Poderia tentar desta forma:
    Código:
    CurrentDb.Execute "UPDATE PRODUCTS SET PRODUCTCODE= " & Dlookup(“CODAPI”,”API”,”API=’AZTREONAN'”) & " WHERE {Sua condição}" .

    E neste código tenho duas observações:
    1) Você setaria o campo Productcode somente com o código da API e a concatenação do código do DOSFORM ?
    2) Caso não inclua uma condição WHERE no seu UPDATE todos os registros da sua tabela Produtos será atualizados somente com o código da API AZTREONAM.

    JoaoFelix
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 16/11/2016

    Re: Dlookup concatenado

    Mensagem  JoaoFelix em Qua 23 Nov 2016, 09:49

    Obrigado pela rápida resposta Phillip.
    O campo PRODUCTCODE(da tabela products) é numérico.
    Eu preciso que ao escolher API(texto) e DOSEFORM(texto), ele vá á tabela API, e seleccione o CODAPI(NUMERO) correspondente e que vá á tabela DOSEFORM seleccionar o CODDOSEFORM(numero), concatene esses 2 numeros e armazena no campo PRODUCTCODE da tabela products.


    "E neste código tenho duas observações:
    1) Você setaria o campo Productcode somente com o código da API e a concatenação do código do DOSFORM ?
    2) Caso não inclua uma condição WHERE no seu UPDATE todos os registros da sua tabela Produtos será atualizados somente com o código da API AZTREONAM. "

    R: o campo PRODUCTCODE é uma concatenação de CODAPI e CODDOSEFORM. Como na tabela API e na tabela DOSEFORM os campos CODAPI e CODDOSEFORM são chaves primárias, o campo ProduCTCODE irá ser unico para cada produto criado.

    Cumprimentos e obrigado mais uma vez.

      Data/hora atual: Sab 03 Dez 2016, 19:37