Página 1 de 1
Select mysql com case e if
Enviado: 23 Mar 2020 16:34
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
Select mysql com case e if
Enviado: 23 Mar 2020 18:27
por JoséQuintas
Erro Clipper/Harbour.
Tá passando o nome da variável e não o conteúdo.
ou
Código: Selecionar todos
"...WHERE RA_RESP=" + StringSql( c_Codigo )
FUNCTION StringSQL( cValue )
RETURN ['] + cValue + [']
Select mysql com case e if
Enviado: 23 Mar 2020 18:34
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"
Select mysql com case e if
Enviado: 23 Mar 2020 18:52
por asimoes
Eu utilizo BIND fica mais bonito
Select mysql com case e if
Enviado: 23 Mar 2020 19:06
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'
Select mysql com case e if
Enviado: 23 Mar 2020 22:06
por jcsprog
ola no sistema nao apresenta erro
vou realizar a alteracao na variavel ok
agraddecoa ajuda
Select mysql com case e if
Enviado: 23 Mar 2020 23:56
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"?
Select mysql com case e if
Enviado: 24 Mar 2020 23:37
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 )