Função passando cliente e loja e data por parâmetro

Como criar uma função passando cliente e loja e data por parâmetro e fazer a consulta na SE1?

Tentei fazer assim, mas, não sei se está correto:

If !empty(mv_par08) .and. !empty(mv_par09) .and. !empty(mv_par10) cFiltroPRE := "% SE1.E1_CLIENTE BETWEEN '" +MV_PAR08+ "' AND '" +MV_PAR09+ "' AND SE1.E1_LOJA BETWEEN '" +MV_PAR10+ "' AND SE1.E1_DATA'" + "' %" EndIf

Quem puder ajudar desde já gradeço :3

Agnes, a clausula BETWEEN do SQL sempre espera dois valores que serão usados como intervalo para retornar os resultados.

Digamos que o seu MV_PAR08 tenha o conteúdo 000001 e o seu MV_PAR09 tenha o conteúdo 000099. Isso quer dizer que você deseja buscar todos os clientes que o código seja entre 000001 e 000099, em valores fixos sua query ficaria mais ou menos assim:


SE1.E1_CLIENTE BETWEEN '000001' AND '000099'

Já na busca por loja, digamos que o seu MV_PAR10 tenha o conteúdo 01.

Na query que você enviou por exemplo, na comparação com loja, você está buscando uma loja com um intervalo do conteúdo 01 até o conteúdo do campo E1_DATA:


SE1.E1_LOJA BETWEEN '01' AND SE1.E1_DATA

Isso pode resultar em problemas nos dados retornados pela sua query.

Caso o parâmetro de busca de loja seja só um, efetue a correção no seu código para que o mesmo fique assim:


cFiltroPRE := "% SE1.E1_CLIENTE BETWEEN '" +MV_PAR08+ "' AND '" +MV_PAR09+ "' AND SE1.E1_LOJA = '" +MV_PAR10+ "' %"

Caso exista um outro parâmetro (no caso o MV_PAR11) que seria o loja até, o seu código deve ficar assim:


cFiltroPRE := "% SE1.E1_CLIENTE BETWEEN '" +MV_PAR08+ "' AND '" +MV_PAR09+ "' AND SE1.E1_LOJA BETWEEN '" +MV_PAR10+ "' AND '" +MV_PAR11+ "' %"

Resumindo: Use BETWEEN apenas quando deseja buscar um intervalo entre dois valores. Caso contrário, basta usar o símbolo de igual (=).

Muito Obrigada! Irei modificar aqui :3