SELECT COM CASE

LUIZCOMINO 22/11/2010 11:42:04
#357963
Bom dia Amigos , estou tentando jogar uma consulta sql dentro de um datagrid, só que retorna o seguinte erro: [Ô]Method [ô]open[ô] of object [ô]_Recordset[ô] failed[Ô], quando eu faço a consulta direto no sql server funciona perfeitamente, segue a consulta

Sql = [Ô]Select id,CASE WHEN (gadcomp=1) then [ô]sim[ô] else [ô]nao[ô] end AS result from TB_CadGad[Ô]

set datagrid1.datasource=banco


aproveitando como usar o IF na consulta, tentei fazer mas nem no sql server deu cero,fiz assim:

SELECT IF (gadcomp=1,[ô]sim[ô],[ô]nao[ô]) AS result FROM TB_CadGad

valeu pessoal!
JONATHANSTECKER 22/11/2010 11:43:44
#357964
Você já abriu a Conexão?
LUIZCOMINO 22/11/2010 11:54:52
#357965
já sim, tanto que se tirar o [Ô]CASE WHEN (gadcomp=1) then [ô]sim[ô] else [ô]nao[ô] end AS result[Ô] ela funciona normalmente.
XXXANGELSXXX 22/11/2010 14:37:19
#357972
Amigo, quando eu tenho varias consultas eu faço o seguinte..

   
Sub PreencherGrid()
Set MyRs = New ADODB.Recordset
StrSql = [Ô]select a.idmov,a.movclicodigo,b.pessnome,d.contdescricaocontato,a.movdataregistro,a.movhoraregistro,c.usernome,a.movstatusrecepcao,a.movobservacoes,e.locdescricao,f.classdescricao[Ô]
StrSql = StrSql & [Ô] from movimentoocorrencias a,cadpessoas b,cadusuarios c,cadpessoascontato d,cadlocaisocorrencia e,cadclassificacaoocorrencias f[Ô]
StrSql = StrSql & [Ô] where a.movclicodigo=b.pesscodigo and a.movidcolaborador=c.userid and a.movclicodigo=d.pesscodigo and a.movlocalocorrencia=e.id and a.movclassificacao=f.id and d.contprincipal=1[Ô]
If ChData.Value = Checked Then StrSql = StrSql & [Ô] and a.movdataregistro between [ô][Ô] & Format$(txtIni.Value, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] And [ô][Ô] & Format$(txtFim.Value, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
If txtIdUser.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movidcolaborador=[ô][Ô] & txtIdUser.Text & [Ô][ô][Ô]
If txtIdOcorr.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movocorrencia=[ô][Ô] & txtIdOcorr.Text & [Ô][ô][Ô]
If txtIdCli.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movclicodigo=[ô][Ô] & txtIdCli.Text & [Ô][ô][Ô]
If txtIdLocal.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movlocalocorrencia=[ô][Ô] & txtIdLocal.Text & [Ô][ô][Ô]
If txtIdClass.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movclassificacao=[ô][Ô] & txtIdClass.Text & [Ô][ô][Ô]
If txtIdFilial.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movfilial=[ô][Ô] & txtIdFilial.Text & [Ô][ô][Ô]
If txtIdForma.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movformarealizacao=[ô][Ô] & txtIdForma.Text & [Ô][ô][Ô]
If txtStatus.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.movstatusrecepcao=[ô][Ô] & txtStatus.Text & [Ô][ô][Ô]
If txtNumeroOcorr.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.idmov=[ô][Ô] & txtNumeroOcorr.Text & [Ô][ô][Ô]
StrSql = StrSql & [Ô] order by a.movdataregistro,a.movhoraregistro[Ô]
MyRs.Open (StrSql), Conexao, adOpenStatic, adLockReadOnly
Call FormataGrid


Nesse caso acima estou preenchendo um msflexgrid, eu concaterno com IF , se o campo tiver diferente de zero, eu coloco o and e o valor da busca.

LUIZCOMINO 22/11/2010 16:48:45
#357982
Olá pessoal valeu pelas respostas, mas eu preciso desse select apenas para aparecer no datagrid assim , se o campo gadcomp=1 then preencha a coluna do grid com Sim se não Preencha com Não.
Mas pesquisei bastante e alguns dizem que essas palavras reservadas do vb que está gerando o erro, então tem que mudar a sintaxe, se algum conseguir primeiro que eu ficarei muito grato.
obrigado!
MARCELO.TREZE 22/11/2010 17:14:53
#357985
Resposta escolhida
eu acho que o iif resolve, tente ai

Sql = [Ô]Select id,IIf(gadcomp=1, [ô]sim[ô] ,[ô]nao[ô]) AS result from TB_CadGad[Ô]


MARCELO.TREZE 22/11/2010 17:19:43
#357986
detalahe é IIF com dois [ô]i's[Ô] e não apenas IF
LUIZCOMINO 22/11/2010 17:42:04
#357987
Perfeito cara muito Obrigado mesmo!, mas por que eu tenho que usar 2 i no IIF, e outra coisa, você sabe o motivo de não funcionar no vb a consulta com Case?
SACOFRITO 22/11/2010 17:45:40
#357988
O porque dos 2 i[ô]s eu nao sei, mas para dar a expressao em uma unica linha essa é a sintaxe,,
Uso isso pra tratar erros de campo nulo ou objeto vazio

iif(isnull(campo), [Ô]1[Ô], [Ô]0[Ô])
;p
MARCELO.TREZE 22/11/2010 17:56:10
#357989
não exitse diferença entre as duas IIF e IF

porém dentro de uma query vc tem de usar o IIF
MARCELO.TREZE 22/11/2010 17:58:43
#357990
ah na realidade não é o vb que administra o CASE e sim o banco de dados, e pelo que me parece o CASE não funciona com ACCESS
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas