Select mysql com case e if

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

jcsprog
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 27 Abr 2005 12:04
Localização: sao paulo - jd.brasil

Select mysql com case e if

Mensagem por jcsprog »

ola amigos tenho aplicao em mysql com harbour x miniqui
mas ao gerar o select em anexo que esta funcionando no browse dentro da aplicação não encontra

c_codigo:="0000000101"

oQuery := oServer:Query( "Select FILIACAO,NOME_RESP,FONE1_RESP,FONE2_RESP,PRIO_RESP,RESP_CRIA"
oQuery+=" CASE PRIO_RESP WHEN 1 THEN 'Alta'"
oQuery+=" WHEN 2 THEN 'Media'"
oQuery+=" WHEN 3 THEN 'Baixa'"
oQuery+=" END AS PRIOR,"
oQuery+=" IF(RESP_CRIA=1,'Sim','Não') IS RESPON"
oQuery+=" From escola.tab_resp WHERE RA_RESP="+'c_codigo')

agradeço a ajuda
Anexos
image.jpg
jcsprog
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Select mysql com case e if

Mensagem por JoséQuintas »

Erro Clipper/Harbour.
Tá passando o nome da variável e não o conteúdo.

Código: Selecionar todos

"... WHERE RA_RESP=" + ['] + c_Codigo + [']
ou

Código: Selecionar todos

"...WHERE RA_RESP=" + StringSql( c_Codigo )

FUNCTION StringSQL( cValue )
   RETURN ['] + cValue + [']
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3109
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Select mysql com case e if

Mensagem por alxsts »

Olá!

Sua mensagem não está clara... está retornando algum erro?

Analisando o conteúdo postado, creio que sim. É só comparar as duas consultas. Creio que se você ajustar a que está em foramto texto para ficar igual à da janela do ResultSet, vai dar certo. Veja:

Código: Selecionar todos

oQuery := oServer:Query( "Select FILIACAO,NOME_RESP,FONE1_RESP,FONE2_RESP,PRIO_RESP,RESP_CRIA   ==> Falta uma vírgula ao final desta linha"

Código: Selecionar todos

oQuery+=" IF(RESP_CRIA=1,'Sim','Não') IS RESPON"   ==> Aqui, ao invés de "IS", é "AS"
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Select mysql com case e if

Mensagem por asimoes »

Eu utilizo BIND fica mais bonito
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Select mysql com case e if

Mensagem por JoséQuintas »

Também reparei na digitação errada, mas acho que foi no post.

O problema mesmo é que ele tá passando o nome da variável.

WHERE RA_RESP='c_codigo'

ao invés de

WHERE RA_RESP='0000001'
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
jcsprog
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 27 Abr 2005 12:04
Localização: sao paulo - jd.brasil

Select mysql com case e if

Mensagem por jcsprog »

ola no sistema nao apresenta erro

vou realizar a alteracao na variavel ok

agraddecoa ajuda
jcsprog
alxsts
Colaborador
Colaborador
Mensagens: 3109
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Select mysql com case e if

Mensagem por alxsts »

Olá!
JoséQuintas escreveu:O problema mesmo é que ele tá passando o nome da variável.
Também acho...
asimoes escreveu:Eu utilizo BIND fica mais bonito
O que chama de "bind"?
[]´s
Alexandre Santos (AlxSts)
jcsprog
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 27 Abr 2005 12:04
Localização: sao paulo - jd.brasil

Select mysql com case e if

Mensagem por jcsprog »

Ola

realizei as mudanças e o erro agora e este
Principe.prg(1054) Error E0020 Incomplete statement or unbalanced delimiters
Principe.prg(1060) Error E0030 Syntax error "syntax error at ')'"
2 errors

VARIAVEL ===>>> R_RA:="0000000101" IGUAL A DO BROWSE DO MYSQL

oQuery := oServer:Query("Select FILIACAO,NOME_RESP,FONE1_RESP,FONE2_RESP,PRIO_RESP,RESP_CRIA, CASE tab_resp.PRIO_RESP" LINHA -> 1054
oQuery+=" WHEN 1 THEN 'Alta'"
oQuery+=" WHEN 2 THEN 'Media'"
oQuery+=" WHEN 3 THEN 'Baixa'"
oQuery+=" END AS PRIOR,"
oQuery+=" IF(RESP_CRIA=1,'Sim','Não') AS pode,"
oQuery+=" From escola.tab_resp WHERE tab_resp.RA_RESP="+[']+R_RA+[']) LINHA ->1060

==========================================================================================
Utilizo este select e funciona más ai tenho que atualizar , gostaria de fazer direto
oQuery := oServer:Query( "Select FILIACAO,NOME_RESP,FONE1_RESP,FONE2_RESP,PRIO_RESP,RESP_CRIA From escola.tab_resp WHERE
tab_resp.RA_RESP='"+R_RA+"'")

if oQuery:LastRec() > 0
nCounter++
oRow := oQuery:GetRow(i)
do case
case oRow:fieldGet(5) = "1"
a_prio:="Alta"
case oRow:fieldGet(5) = "2"
a_prio:="Media"
case oRow:fieldGet(5) = "3"
a_prio:="Baixa"
endcase
a_Resp:=if(oRow:fieldGet(6)="1","Sim","Não")

aadd(a_rray,{oRow:fieldGet(1),oRow:fieldGet(2),oRow:fieldGet(3),oRow:fieldGet(4),a_prio,a_Resp})
oQuery:Skip(1)

Aluno_1.G_Parente.SetArray( a_rray )
jcsprog
Responder