× Linguagem de Programação ADVPL

Perguntas Função para adicionar coluna browse

Mais
11 anos 7 meses atrás - 11 anos 7 meses atrás #13023 por gustavo13
Olá!

Estou tentando adicionar uma coluna de Estado do cliente na seleção de títulos do borderô a cobrar.
Não estou tendo sucesso, segue código. Ocorre o erro na função F060COL. Se alguém puder me auxiliar a localizar o erro. Agradeço desde já.

O erro é este
THREAD ERROR (Gustavo, TICXS) 17/04/2013 17:55:33
argument #0 error, expected C->N, function NEW on MSSELECT:NEW(MSSELECT.PRW) 02/10/2012 19:31:32 line : 250




#include "rwmake.ch"
#INCLUDE "PROTHEUS.CH"

Static aStru1 := {}

User function F060Trb()
aStru1 := PARAMIXB[1]
Aadd(aStru1,{"A1_EST","C",2,0})
Return aStru1

User Function F060COL()
Local aCpo := paramixb[1]
Local aRet := {}
Local nPosData := aScan(aStru1,{|x| x[1]=="A1_EST"})
aadd(aCpo, aStru1[nPosData])
Return aCpo

// este ponto de entrada tratará a inclusão do campo A1_EST na tela de seleção.

USER FUNCTION F060QRCP()
Local aStru := {}
Local cQuery := ""
Local nj := 0
Local cQryOri := PARAMIXB[1]
// query padrão do sistema
aStru := dbStruct()
cQuery := "SELECT "
For nj:= 1 to Len(aStru)
cQuery += aStru[nj,1]+", "
Next
cQuery += "SE1.R_E_C_N_O_ RECNO , A1_EST"
cQuery += " FROM "+ RetSqlName("SE1") + " SE1 "
cQuery += " INNER JOIN "+ RetSqlName('SA1') + " SA1 ON E1_CLIENTE = SA1.A1_COD "
cQuery += " WHERE E1_FILIAL Between '" + cFilDe + "' AND '"+ cFilAte + "'"
cQuery += " AND E1_NUMBOR = ' '"
cQuery += " AND E1_EMISSAO Between '" + DTOS(dEmisDe) + "' AND '" + DTOS(dEmisAte) + "'"
cQuery += " AND E1_CLIENTE between '" + cCliDe + "' AND '" + cCliAte + "'"
cQuery += " AND E1_VENCREA between '" + DTOS(dVencIni)+ "' AND '" + DTOS(dVencFim) + "'"
cQuery += " AND E1_MOEDA = "+ str(nmoeda)
cQuery += " AND E1_PREFIXO Between '" + cPrefDe + "' AND '" + cPrefAte + "'"
cQuery += " AND E1_NUM between '" + cNumDe + "' AND '" + cNumAte + "'"
cQuery += " AND ( E1_SALDO > 0 OR E1_OCORREN = '02' ) "
//Seleciona Tipos
If mv_par12 == 1
cQuery += " AND E1_TIPO IN " + FormatIn(cTipos,"/")
Endif
If !Empty(MVPROVIS) .Or. !Empty(MVRECANT) .Or. !Empty(MV_CRNEG) .Or. !Empty(MVENVBCOR)
cQuery += " AND E1_TIPO NOT IN " + FormatIn(MVPROVIS+"/"+MVRECANT+"/"+MV_CRNEG+"/"+MVENVBCOR,"/")
Endif
cQuery += " AND E1_SITUACA IN ('0','F','G') "
cQuery += " AND SE1.D_E_L_E_T_ <> '*' "
cQuery += " ORDER BY "+ SqlOrder(SE1->(IndexKey()))
Return cQuery
Ultima edição: 11 anos 7 meses atrás por gustavo13.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 7 meses atrás #13035 por gustavo13
Consegui ajustar.


Segue fonte:
#include "rwmake.ch"
#INCLUDE "PROTHEUS.CH"

User function F060Trb()
aStru := PARAMIXB[1]
Aadd(aStru,{"A1_EST","C",2,0})
Return aStru

User Function F060COL()
Local aCpo := paramixb[1]
Local aRet := {}
//Local nPosData := aScan(aStru,{|x| x[1]=="A1_EST"})
For i:= 1 to 9
aadd(aRet,aCpo)
Next
aadd(aRet, {"A1_EST","","Estado",""})
For i:= 10 to len(aCpo)
aadd(aRet,aCpo)
Next
Return aRet

// este ponto de entrada tratará a inclusão do campo A1_EST na tela de seleção.

USER FUNCTION F060QRCP()
Local aStru := {}
Local cQuery := ""
Local nj := 0
Local cQryOri := PARAMIXB[1]
// query padrão do sistema
aStru := dbStruct()
cQuery := "SELECT "
For nj:= 1 to Len(aStru)
cQuery += aStru[nj,1]+", "
Next
cQuery += "SE1.R_E_C_N_O_ RECNO , A1_EST"
cQuery += " FROM "+ RetSqlName("SE1") + " SE1 "
cQuery += " INNER JOIN "+ RetSqlName('SA1') + " SA1 ON E1_CLIENTE = SA1.A1_COD "
cQuery += " WHERE E1_FILIAL Between '" + cFilDe + "' AND '"+ cFilAte + "'"
cQuery += " AND E1_NUMBOR = ' '"
cQuery += " AND E1_EMISSAO Between '" + DTOS(dEmisDe) + "' AND '" + DTOS(dEmisAte) + "'"
cQuery += " AND E1_CLIENTE between '" + cCliDe + "' AND '" + cCliAte + "'"
cQuery += " AND E1_VENCREA between '" + DTOS(dVencIni)+ "' AND '" + DTOS(dVencFim) + "'"
cQuery += " AND E1_MOEDA = "+ str(nmoeda)
cQuery += " AND E1_PREFIXO Between '" + cPrefDe + "' AND '" + cPrefAte + "'"
cQuery += " AND E1_NUM between '" + cNumDe + "' AND '" + cNumAte + "'"
cQuery += " AND ( E1_SALDO > 0 OR E1_OCORREN = '02' ) "
//Seleciona Tipos
If mv_par12 == 1
cQuery += " AND E1_TIPO IN " + FormatIn(cTipos,"/")
Endif
If !Empty(MVPROVIS) .Or. !Empty(MVRECANT) .Or. !Empty(MV_CRNEG) .Or. !Empty(MVENVBCOR)
cQuery += " AND E1_TIPO NOT IN " + FormatIn(MVPROVIS+"/"+MVRECANT+"/"+MV_CRNEG+"/"+MVENVBCOR,"/")
Endif
cQuery += " AND E1_SITUACA IN ('0','F','G') "
cQuery += " AND SE1.D_E_L_E_T_ <> '*' "
cQuery += " ORDER BY "+ SqlOrder(SE1->(IndexKey()))

Return cQuery

Por favor Acessar ou Registrar para participar da conversa.

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