SQL DESPRESANDO CONDICAO

PAULOHSV 24/09/2010 15:48:05
#353781
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
MSMJUDAS 24/09/2010 15:54:14
#353783
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.
PAULOHSV 27/09/2010 08:19:17
#353908
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.
THIGO 27/09/2010 09:06:05
#353910
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.

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
MARCELO.TREZE 27/09/2010 09:46:05
#353913
tente assim

SQL = SQL & [Ô] AND (B.DATA_INICIAL BETWEEN [ô][Ô] & Format(txtDataInicial.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(txtDataFinal.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô])[Ô]

PAULOHSV 27/09/2010 10:48:59
#353916
Eu uso o firebird.

Marcelo eu ja tentei assim e não obtive exito.

THIGO 27/09/2010 11:38:34
#353922
amigo tenta ae ve se te ajuda Ja ouviu falar do cast

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