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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 3092
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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 3092
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