SELECT COM CASE
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!
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!
Você já abriu a Conexão?
já sim, tanto que se tirar o [Ô]CASE WHEN (gadcomp=1) then [ô]sim[ô] else [ô]nao[ô] end AS result[Ô] ela funciona normalmente.
Amigo, quando eu tenho varias consultas eu faço o seguinte..
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.
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.
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!
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!
eu acho que o iif resolve, tente ai
Sql = [Ô]Select id,IIf(gadcomp=1, [ô]sim[ô] ,[ô]nao[ô]) AS result from TB_CadGad[Ô]
detalahe é IIF com dois [ô]i's[Ô] e não apenas IF
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?
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
Uso isso pra tratar erros de campo nulo ou objeto vazio
iif(isnull(campo), [Ô]1[Ô], [Ô]0[Ô])
;p
não exitse diferença entre as duas IIF e IF
porém dentro de uma query vc tem de usar o IIF
porém dentro de uma query vc tem de usar o IIF
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
Tópico encerrado , respostas não são mais permitidas