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

    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.
    avatar
    philipp.moreira
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 250
    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: Seg 25 Set 2017, 17:52