COMO EU FACO ESSE IFF NO WHERE
Tenho o seguinte SQL:
coloquei um checkbox (chkEntrada)
tenho um campo chamando ENTRADA do tipo moeda na tabela PEDIDOS
preciso que quando eu marcar o checkbox (chkentrada.value = checked) entao ele me mostre todas os pedidos que possuem a entrada diferente de [Ô]R$ 0,00[Ô] e quando o check for desmarcado, ele me mostra todos os pedidos
como eu faço isso na mesma linha da SQL ??
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE COD_PEDIDO > 0 [Ô] & TIPO & [Ô] [Ô] & tipo_Cartao & [Ô] [Ô] & var_TipoPgto & [Ô] ORDER BY [Ô] & INDICE
coloquei um checkbox (chkEntrada)
tenho um campo chamando ENTRADA do tipo moeda na tabela PEDIDOS
preciso que quando eu marcar o checkbox (chkentrada.value = checked) entao ele me mostre todas os pedidos que possuem a entrada diferente de [Ô]R$ 0,00[Ô] e quando o check for desmarcado, ele me mostra todos os pedidos
como eu faço isso na mesma linha da SQL ??
no final de todas as [Ô]condicoes[Ô] do seu where vc adiciona
deve funcionar =)
só nao entendi direito essa query sua..
esses & TIPO
suponho que o valor de tipo seja algo [Ô]AND tipo = algumacoisa[Ô]
correto?
IIf(chKentrada.Checked=True,[Ô]AND ENTRADA <> 0.00[Ô],[Ô][Ô])
deve funcionar =)
só nao entendi direito essa query sua..
esses & TIPO
suponho que o valor de tipo seja algo [Ô]AND tipo = algumacoisa[Ô]
correto?
Para nao confudir eu coloquei assim:
e tá dando erro!
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE IIf(chkEntrada.value = checked, ENTRADA <> [ô]0.00[ô],[ô][ô] AND COD_PEDIDO > 0 )[Ô]
e tá dando erro!
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE IIf(chkEntrada.value = checked, ENTRADA <> [ô]0.00[ô],[Ô] AND COD_PEDIDO > 0[Ô] )[Ô]
tente agora
tente agora
ou
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE IIf(chkEntrada.value = checked, [Ô]ENTRADA <> [ô]0.00[ô][Ô],[Ô] AND COD_PEDIDO > 0[Ô] )
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE IIf(chkEntrada.value = checked, [Ô]ENTRADA <> [ô]0.00[ô][Ô],[Ô] AND COD_PEDIDO > 0[Ô] )
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total [Ô] & _
[Ô]FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE [Ô] & _
[Ô]WHERE COD_PEDIDO > 0 [Ô]
If chkEntrada.value = checked Then SQL = SQL & [Ô] AND ENTRADA<>0 [Ô]
SQL = SQL & [Ô]ORDER BY [Ô] & indice
[Ô]FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE [Ô] & _
[Ô]WHERE COD_PEDIDO > 0 [Ô]
If chkEntrada.value = checked Then SQL = SQL & [Ô] AND ENTRADA<>0 [Ô]
SQL = SQL & [Ô]ORDER BY [Ô] & indice
O problema é que o check é um objeto fora da query, então seria assim
veja se funciona
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE [Ô] & IIf(chkEntrada.value = 1, [Ô]COD_PEDIDO > 0 AND ENTRADA <> [ô]0.00[ô][Ô],[Ô]COD_PEDIDO > 0[Ô])
veja se funciona
Citação::
O problema é que o check é um objeto fora da query, então seria assim
SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE [Ô] & IIf(chkEntrada.value = 1, [Ô]COD_PEDIDO > 0 AND ENTRADA <> [ô]0.00[ô][Ô],[Ô]COD_PEDIDO > 0[Ô])
veja se funciona
quando está desmarcado o chkentrada ele nao dar erro.
quando está marcado ele dar o seguinte erro:
Tipo de dados incompartivel na expressão de critério
entao o erro tá em COD_PEDIDO > 0 AND ENTRADA <> [ô]0.00[ô]
OBS: o campo ENTRADA é do tipo moeda
esqueci que sua query está usando join
então seria algo assim
COD_PEDIDO > 0 AND CLIENTES.ENTRADA <> [ô]0.00[ô]
ou
COD_PEDIDO > 0 AND PEDIDOS.ENTRADA <> [ô]0.00[ô]
não sei em qual tabela está o campo entrada
então seria algo assim
COD_PEDIDO > 0 AND CLIENTES.ENTRADA <> [ô]0.00[ô]
ou
COD_PEDIDO > 0 AND PEDIDOS.ENTRADA <> [ô]0.00[ô]
não sei em qual tabela está o campo entrada
Concaterna separado
if chkentrada.value = 1 then SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE COD_PEDIDO > 0 AND ENTRADA <> [ô]0.00[ô][Ô]
if chkentrada.value = 1 then SQL = [Ô]SELECT CLIENTE.*, PEDIDOS.*, PEDIDOS.COD_PEDIDO AS var_CodPed, PEDIDOS.TOTAL AS var_Total FROM CLIENTE INNER JOIN PEDIDOS ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE COD_PEDIDO > 0 AND ENTRADA <> [ô]0.00[ô][Ô]
Citação::
esqueci que sua query está usando join
então seria algo assim
COD_PEDIDO > 0 AND CLIENTES.ENTRADA <> [ô]0.00[ô]
ou
COD_PEDIDO > 0 AND PEDIDOS.ENTRADA <> [ô]0.00[ô]
não sei em qual tabela está o campo entrada
já tinha tentado isso
WHERE [Ô] & IIf(chkEntrada.Value = 1, [Ô]COD_PEDIDO > 0 AND PEDIDOS.ENTRADA <> [ô]0.00[ô][Ô], [Ô]COD_PEDIDO > 0[Ô])
mas dar o mesmo erro
Tópico encerrado , respostas não são mais permitidas