SQL DESPRESANDO CONDICAO
Possuo o seguinte sql:
SQL = [Ô]SELECT DISTINCT A.ID_FAZENDA, A.NOME_FAZENDA, [Ô] & _
[Ô] (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_MAQUINARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_INSUMOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_FUNCIONARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_FUNCIONARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_MAQUINARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) as ABASTECIMENTO, [Ô] & _
[Ô] (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA) as MANUTENCAO_MAQUINARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(CT.AREA2),0) From CAD_TALHOES CT where C.COD_FAZENDA = A.ID_FAZENDA) as AREA, [Ô] & _
[Ô] (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO=[ô]Sim[ô] and B.COD_FAZENDA = A.ID_FAZENDA) as PAGAMENTOS , [Ô] & _
[Ô] (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA)[Ô] & _
[Ô]+ (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO=[ô]Sim[ô] and B.COD_FAZENDA = A.ID_FAZENDA) AS CUSTO_GERAL , [Ô] & _
[Ô] (Select Coalesce(Sum(PC.PREVISTO),0) From PLANO_COLHEITA PC where C.COD_FAZENDA = A.ID_FAZENDA) AS PREVISTO,[Ô] & _
[Ô] (Select Coalesce(Sum(PC1.REALIZADO),0) From PLANO_COLHEITA PC1 where C.COD_FAZENDA = A.ID_FAZENDA) AS REALIZADO [Ô] & _
[Ô] FROM ((CAD_FAZENDA A LEFT JOIN REGISTRO_APLICACOES B ON B.COD_FAZENDA = A.ID_FAZENDA)[Ô] & _
[Ô] LEFT JOIN RAST_MOVIMENTACAO C ON C.COD_FAZENDA=A.ID_FAZENDA)[Ô] & _
[Ô] WHERE A.ID_FAZENDA=[Ô] & Identificador_fazenda & _
[Ô] AND B.COD_TALHAO>=[Ô] & txtTalhaoInicial.Text & [Ô]AND B.COD_TALHAO<=[Ô] & txtTalhaoFinal.Text
Ao adionar a condição:
SQL = SQL & [Ô] AND B.DATA_INICIAL>= [ô][Ô] & Format(txtDataInicial.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
slq = SQL & [Ô] AND B.DATA_INICIAL<=[ô][Ô] & Format(txtDataFinal.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] [Ô]
Não adianta nada, seja filtrando por uma data ou não o resultado final é sempre o mesmo
SQL = [Ô]SELECT DISTINCT A.ID_FAZENDA, A.NOME_FAZENDA, [Ô] & _
[Ô] (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_MAQUINARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_INSUMOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA) as VALOR_TOTAL_FUNCIONARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_FUNCIONARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA) as COLHEITA_MAQUINARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) as ABASTECIMENTO, [Ô] & _
[Ô] (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA) as MANUTENCAO_MAQUINARIOS, [Ô] & _
[Ô] (Select Coalesce(Sum(CT.AREA2),0) From CAD_TALHOES CT where C.COD_FAZENDA = A.ID_FAZENDA) as AREA, [Ô] & _
[Ô] (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO=[ô]Sim[ô] and B.COD_FAZENDA = A.ID_FAZENDA) as PAGAMENTOS , [Ô] & _
[Ô] (Select Coalesce(Sum(RAM.VALORT_MAQUINARIOS),0) From REGISTRO_APLICACOES_MAQUINARIO RAM where B.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(RAI.VALOR_TOTAL),0) From REGISTRO_APLICACOES_INSUMO RAI where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RAF.VALORT_FUNCIONARIOS),0) From REGISTRO_APLICACOES_FUNC RAF where B.COD_FAZENDA = A.ID_FAZENDA)+ (Select Coalesce(Sum(RMC.VALOR_TOTAL),0) From RAST_MOV_COLHEITA RMC where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(RMM.VALOR_TOTAL),0) From RAST_MOVIMENTACAO_MAQUINARIO RMM where C.COD_FAZENDA = A.ID_FAZENDA)+(Select Coalesce(Sum(AB.VALOR_TOTAL),0) From ABASTECIMENTO AB where C.COD_FAZENDA = A.ID_FAZENDA) + (Select Coalesce(Sum(ME.VALOR),0) From MANUTENCAO_EQUIPAMENTOS ME where C.COD_FAZENDA = A.ID_FAZENDA)[Ô] & _
[Ô]+ (Select Coalesce(sum(FP.VALOR_TOTAL),0) From FIN_PAGAMENTOS FP LEFT JOIN FIN_PLANO_CONTAS FPC ON FP.COD_PLANO_CONTAS=FPC.ID_PLANO_CONTAS WHERE FPC.CUSTO=[ô]Sim[ô] and B.COD_FAZENDA = A.ID_FAZENDA) AS CUSTO_GERAL , [Ô] & _
[Ô] (Select Coalesce(Sum(PC.PREVISTO),0) From PLANO_COLHEITA PC where C.COD_FAZENDA = A.ID_FAZENDA) AS PREVISTO,[Ô] & _
[Ô] (Select Coalesce(Sum(PC1.REALIZADO),0) From PLANO_COLHEITA PC1 where C.COD_FAZENDA = A.ID_FAZENDA) AS REALIZADO [Ô] & _
[Ô] FROM ((CAD_FAZENDA A LEFT JOIN REGISTRO_APLICACOES B ON B.COD_FAZENDA = A.ID_FAZENDA)[Ô] & _
[Ô] LEFT JOIN RAST_MOVIMENTACAO C ON C.COD_FAZENDA=A.ID_FAZENDA)[Ô] & _
[Ô] WHERE A.ID_FAZENDA=[Ô] & Identificador_fazenda & _
[Ô] AND B.COD_TALHAO>=[Ô] & txtTalhaoInicial.Text & [Ô]AND B.COD_TALHAO<=[Ô] & txtTalhaoFinal.Text
Ao adionar a condição:
SQL = SQL & [Ô] AND B.DATA_INICIAL>= [ô][Ô] & Format(txtDataInicial.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
slq = SQL & [Ô] AND B.DATA_INICIAL<=[ô][Ô] & Format(txtDataFinal.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] [Ô]
Não adianta nada, seja filtrando por uma data ou não o resultado final é sempre o mesmo
Pequeno esse seu sql
Cara, se puder, poste a estrutura das tabelas e o resultado que vc quer, fica mais fácil pra te ajudar.
Cara, se puder, poste a estrutura das tabelas e o resultado que vc quer, fica mais fácil pra te ajudar.
Esta sql é para um relatorio de custo total da fazenda/empresa. Para postar a estrutura teria que postar praticamento todo o meu bd aqui.rs....
Mas o problema esta só na condição para filtrar por data que não esta sendo obedecida.
Mas o problema esta só na condição para filtrar por data que não esta sendo obedecida.
amigo qual banco de dados que usa se for oracle tem duas maneiras de usar isso vai depender do seu campo data se é com horas ou trunc.
ou
Ah voce pode dar um trunc no campo data exemplo
Se for oracle vai te ajudar bastante mas se for outra fale ae que vejo para você flw
SQL = SQL & [Ô] AND B.DATA_INICIAL>= To_Date( [ô][Ô] & txtDataInicial.Text & [Ô], [ô]yyyy-mm-dd[ô]) [Ô]
sql = SQL & [Ô] AND B.DATA_INICIAL<= To_Date([ô][Ô] & txtDataFinal.Text & [Ô][ô], [ô]yyyy-mm-dd[ô]) [Ô]
ou
SQL = SQL & [Ô] AND B.DATA_INICIAL>= To_Char( [ô][Ô] & txtDataInicial.Text & [Ô], [ô]yyyy-mm-dd[ô]) [Ô]
slq = SQL & [Ô] AND B.DATA_INICIAL<= To_Char([ô][Ô] & txtDataFinal.Text & [Ô][ô], [ô]yyyy-mm-dd[ô]) [Ô]3
Ah voce pode dar um trunc no campo data exemplo
Trunc(B.DATA_INICIAL) = [Ô][Ô]
Trunc(B.DATA_INICIAL) = [Ô][Ô]
Se for oracle vai te ajudar bastante mas se for outra fale ae que vejo para você flw
tente assim
SQL = SQL & [Ô] AND (B.DATA_INICIAL BETWEEN [ô][Ô] & Format(txtDataInicial.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(txtDataFinal.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô])[Ô]
SQL = SQL & [Ô] AND (B.DATA_INICIAL BETWEEN [ô][Ô] & Format(txtDataInicial.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(txtDataFinal.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô])[Ô]
Eu uso o firebird.
Marcelo eu ja tentei assim e não obtive exito.
Marcelo eu ja tentei assim e não obtive exito.
amigo tenta ae ve se te ajuda Ja ouviu falar do cast
flw
SELECT CODIGO FROM FORNECEDORES WHERE DATA >= CAST(: DATA AS DATE)
where data = cast([ô]2000/01/31[ô] as date)
ou seja
where data = cast([ô]AAAA/MM/DD[ô] as date)
flw
Tópico encerrado , respostas não são mais permitidas