Consulta com filtro inicial

Meus Caros

Ainda estou iniciando no Universo Scriptcase e conhecendo seus recursos, e ja peco a ajuda de voces.
Montei um exemplo que certamente vai me ajudar a entender melhor o Scriptcase:

Considerando duas tabelas

[1] Contas_Bancarias … * é o campo HABILITADO S/N

cod * conta descricao
001 S 111-1 bco brasil
237 N 222-2 bradesco
341 S 333-3 itau

[2] Movimentacao …

data. cod T valor. historico
15/07 001 C 300,00 recebimento nf 1
16/07 001 D -100,00 pagamento nf 11
10/01 237 C 555,00 recebimento nf 2
11/01 237 D -555,00 pagamento nf 12
29/06 341 C 250,00 recebimento nf 3
01/07 341 D -250,00 pagamento nf 13

se eu fizer uma consulta a partir da tabela Movimentacao, e pedir para somar o valor e apresentar o resumo, terei

cod saldo


001 200,00
237 0,00
341 0,00

e se clicar em cada banco, verei a movimentacao deles …
mas reparem que o banco 237 esta com HABILITADO = N (conta encerrada, por exemplo)

sabendo que precisarei consultar a tabela Contas_Bancaria, como fazer para que o resumo traga apenas as contas habilitadas na Consulta que utiliza apenas a tabela Movimentacao?

Aproveitando: usando a mesma aplicacao, tem como eu estipular uma data qualquer para visualizar o saldo ? Ja viria com a data de hoje, mas o usuario poderia fazer a alteracao e a soma obedecer este criterio.
Por exemplo, se eu digitasse 30/06 teria que vir apenas
341 250,00
237 0,00 (este na verdade, nao viria, porque a conta 237 nao esta habilitada)

Grato pelo auxilio

Manuel

Sobre essa pergunta, no sql vc vai fazer " WHERE habilitado = ‘S’ "

Já sobre essa pergunta, na opção Condição do Filtro, você pode escolher lá qual a condição que vem primeiro. Selecione a opção “Hoje” como a primeira opção.

Espero ter ajudado.

Att.

Crie um novo campo e no onRecord coloque
{valorok} = ({tipo} == ‘N’) ? 0 : {valor};
e faça soma pelo campo valorok

Ou simplesmente pegue o que você tem e coloquei no SQL
WHERE tipo <> ‘N’

Rodrigo e Thyago

  1. Grato pelo auxilio, mas o SQL ficara errado se colocar apenas
    WHERE habilitado = ‘S’ "

    isto porque o campo “habilitado” esta na tabela Contas_Bancarias, e a consulta esta utilizando a tabela Movimentacao


2) Sobre o novo campo no onRecord … este campo seria a soma do campo valor where conta = {conta}, é isto ?
veja se estou certo
SELECT SUM valor FROM MOVIMENTACAO WHERE CONTA = {conta};

Abracos

1 Curtida

Coloque no SQL
WHERE cod in (select cod from Contas_Bancarias where habilitado = ‘S’ )

Ou faça um join juntando as duas tabelas.

Meus Caros

Montei o teste … com os mesmos valores … e no SQL

SELECT
Id_Controle,
Codigo_Conta,
Data_Lancamento,
Tipo_Lancamento,
Valor,
Historico
FROM
Movimentacao
WHERE
Codigo_Conta in (SELECT Codigo_Conta FROM Contas_Bancarias WHERE Habilitado = ‘S’)

Antes de colocar o WHERE… ele criava a consulta, tinha a quebra por conta, exibia as tres contas, etc.

Assim que coloquei o WHERE e pedi para gerar a aplicacao, deu o erro “Faltou marcar campos que devem fazer parte da Consulta”

Onde errei ?

1 Curtida

Provavelmente você colocou um sql com erro e isso “zerou” a aplicação.
Volte um backup em aplicação restaurar aplicação (pode ser com outro nome para ver se volta como estava)
Faça esse select no SqlYog e teste antes de colocar na consulta e verifique se está ok.