Perguntas Rertornar Soma de uma query em uma variavel

Mais
7 anos 6 meses atrás - 7 anos 6 meses atrás #31192 por simoes
Boa tarde

Galera alguém pode me dar uma ajuda??

Fiz essa função e preciso retornar o resultado de uma soma feita por uma query para uma variavel
ate ai beleza, só que na hora que eu vou testar na primeira vez é me apresentado a seguinte mensgem "variable does not exist cSoma"
se eu informar outro cliente ai aparece outra mensagem "Alias already in use: cSoma"

Resumindo na primeira vez o sistema fala que a variavel não existe e na segunda ele fala que a variavel ta em uso, mas se não existe como ta em uso :dry:
Alguem pode me dar uma força?

#include 'protheus.ch'
#include 'rwmake.ch'
#include 'topconn.ch'

user function LimFunMes()

local cQry := ""
local nLimite := GetMv("MV_LIMFUN") //parametro que contem limite de credito,esse limite não é o que esta no cadastro do cliente.
local dFim := M->C5_EMISSAO
local dPri := FirstDate(dFim) //recebe o primeiro dia do mês
local nTot := 0
local cCodCli := M->C5_CLIENTE
local cLojaCli:= M->C5_LOJACLI
local cNomCli := POSICIONE("SA1",1,XFILIAL("SA1")+M->C5_CLIENTE + C5_LOJACLI,"A1_NOME")
local cFuncio := POSICIONE("SA1",1,XFILIAL("SA1")+M->C5_CLIENTE + C5_LOJACLI,"A1_FUNCION")

if(cFuncio == 'S') //se for funcionario

cQry := " SELECT "
cQry += " SUM(F2_VALMERC) AS VLR_TOTAL" // preciso retornar VLR_TOTAL em na variavel nTot
cQry += " FROM "
cQry += " " +RetSQLName('SF2')+" SF2 "
cQry += " WHERE "
cQry += " F2_CLIENTE = '"+ cCodCli +"' "
cQry +=" AND F2_LOJA = '"+ cLojaCli+"' "
cQry += " AND F2_EMISSAO >= '"+ dToS(dPri)+"' "
cQry += " AND F2_EMISSAO <= '"+ dToS(dFim)+"' "
cQry += " AND SF2.D_E_L_E_T_ = ' '"
cQry += ChangeQuery(cQry)

TcQuery cQry NEW ALIAS 'cSoma'

DbSelectArea('cSoma')
nTot := (cSoma)-> VLR_TOTAL
cSoma->(DbCloseArea())


if(nTot >= nLimite)
MsgInfo("Funcionario "+altrim(cNomCli)+" excedeu limite de R$ "+alltrim(nLimite)+" neste mês!","Aviso")
endif
endif
return ""
Ultima edição: 7 anos 6 meses atrás por simoes.

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 meses atrás #31193 por kanaamlrr
tente dessa forma:
#include 'protheus.ch'
#include 'rwmake.ch'
#include 'topconn.ch'

user function LimFunMes()

local cQry := ""
local nLimite := GetMv("MV_LIMFUN") //parametro que contem limite de credito,esse limite não é o que esta no cadastro do cliente.
local dFim	:= M->C5_EMISSAO
local dPri	:= FirstDate(dFim) //recebe o primeiro dia do mês
local nTot	:= 0
local cCodCli := M->C5_CLIENTE
local cLojaCli:= M->C5_LOJACLI
local cNomCli := POSICIONE("SA1",1,XFILIAL("SA1")+M->C5_CLIENTE + C5_LOJACLI,"A1_NOME")
local cFuncio := POSICIONE("SA1",1,XFILIAL("SA1")+M->C5_CLIENTE + C5_LOJACLI,"A1_FUNCION")
Local cSoma   := GetNextAlias()

if(cFuncio == 'S') //se for funcionario

cQry := " SELECT "
cQry += "	SUM(F2_VALMERC) AS VLR_TOTAL" // preciso retornar VLR_TOTAL em na variavel nTot
cQry += " FROM "
cQry += " " +RetSQLName('SF2')+" SF2 "
cQry += " WHERE "
cQry += "	F2_CLIENTE = '"+ cCodCli +"' "
cQry +="	AND F2_LOJA = '"+ cLojaCli+"' "
cQry += "	AND F2_EMISSAO >= '"+ dToS(dPri)+"' "
cQry += "	AND F2_EMISSAO <= '"+ dToS(dFim)+"' "
cQry += " AND SF2.D_E_L_E_T_ = ' '"
cQry += ChangeQuery(cQry)

TcQuery cQry NEW ALIAS cSoma

DbSelectArea(cSoma)
nTot := (cSoma)-> VLR_TOTAL
cSoma->(DbCloseArea())


if(nTot >= nLimite)
MsgInfo("Funcionario "+altrim(cNomCli)+" excedeu limite de R$ "+alltrim(nLimite)+" neste mês!","Aviso")
endif
endif
return ""

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 meses atrás - 7 anos 6 meses atrás #31233 por simoes
Bom dia,

Não deu certo não, depois que executo é me apresentado a seguinte mensagem "Alias does not exist SCGN000002".
Ultima edição: 7 anos 6 meses atrás por simoes. Razão: Informação estava errada.

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 meses atrás #31235 por kanaamlrr
Troque o trecho
TcQuery cQry NEW ALIAS cSoma

DbSelectArea(cSoma)

Por
PlsQuery(cQry,cSoma)

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 meses atrás #31237 por simoes
Quando faço a substituição volta ao erro anterior "variable does not exist cSoma""

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 6 meses atrás #31238 por kanaamlrr
#include 'protheus.ch'
#include 'rwmake.ch'
#include 'topconn.ch'

user function LimFunMes()

local cQry := ""
local nLimite := GetMv("MV_LIMFUN") //parametro que contem limite de credito,esse limite não é o que esta no cadastro do cliente.
local dFim	:= M->C5_EMISSAO
local dPri	:= FirstDate(dFim) //recebe o primeiro dia do mês
local nTot	:= 0
local cCodCli := M->C5_CLIENTE
local cLojaCli:= M->C5_LOJACLI
local cNomCli := POSICIONE("SA1",1,XFILIAL("SA1")+M->C5_CLIENTE + C5_LOJACLI,"A1_NOME")
local cFuncio := POSICIONE("SA1",1,XFILIAL("SA1")+M->C5_CLIENTE + C5_LOJACLI,"A1_FUNCION")
Local cSoma   := GetNextAlias()

if(cFuncio == 'S') //se for funcionario

cQry := " SELECT "
cQry += "	SUM(F2_VALMERC) AS VLR_TOTAL" // preciso retornar VLR_TOTAL em na variavel nTot
cQry += " FROM "
cQry += " " +RetSQLName('SF2')+" SF2 "
cQry += " WHERE "
cQry += "	F2_CLIENTE = '"+ cCodCli +"' "
cQry +="	AND F2_LOJA = '"+ cLojaCli+"' "
cQry += "	AND F2_EMISSAO >= '"+ dToS(dPri)+"' "
cQry += "	AND F2_EMISSAO <= '"+ dToS(dFim)+"' "
cQry += " AND SF2.D_E_L_E_T_ = ' '"
cQry += ChangeQuery(cQry)

PlsQuery(cQry,cSoma)

nTot := (cSoma)->VLR_TOTAL
cSoma->(DbCloseArea())


if(nTot >= nLimite)
MsgInfo("Funcionario "+altrim(cNomCli)+" excedeu limite de R$ "+alltrim(nLimite)+" neste mês!","Aviso")
endif
endif
return ""

Se der erro, verifique em qual linha que o erro é apresentado e coloque aqui..

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.118 segundos
Joomla templates by a4joomla