× Linguagem de Programação ADVPL

Perguntas Insert na tabela SEV erro

Mais
12 anos 4 meses atrás #2418 por paulobeto
Olá pessoal,

Estou estou tentando dar um insert na tabela SEV e esta dando (Erro Type mismatch on +) na hora d inserir os dados. Veja como está a cQuery insert onde acontece o erro, eu não consegui identificar onde esta o erro.

cQuery := "insert into "+ RetSqlName("SEV") +" (ev_prefixo, ev_num, ev_parcela, ev_clifor, ev_loja, ev_tipo, ev_valor, ev_naturez, ev_recpag, ev_perc, ev_rateicc, ev_ident, R_E_C_N_O_) "
cQuery += "values ('"+_cPrefixo+"','"+_cNumNf+"','"+_cParcela+"','"+_cFornece+"','"+_cLoja+"','"+_cTipo+"',"+_nValorRat+",'"+_cNaturez+"','P',"+_nPercRat+",'1','1', (select max(r_e_c_n_o_)+1 recno from " + RetSqlName("SEV") + " where d_e_l_e_t_ <> '*')) "
TCSQLExec(cQuery)

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás #2421 por plopez
Respondido por plopez no tópico Re: Insert na tabela SEV erro
Caro colega tente manter o padrao dos campos em amiusculo principalmente o campo R_E_C_N_O_ E D_E_L_E_T_ e notei que apos inserir +1 no R_E_C_N_O_ voce inseriu "de" acredito que seria "FROM"

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás #2426 por lalberto
Respondido por lalberto no tópico Re: Insert na tabela SEV erro
Brother só uma dúvida, porque esta tentando dar insert via sql, não seria melhor usar a programação advpl mesmo ?

If RecLock("SEV",.t.)
SEV->EV_FILIAL := xFilial("SEV")
etc etc
MsUnlock()
Endif

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás - 12 anos 4 meses atrás #2429 por alyson
Respondido por alyson no tópico Re: Insert na tabela SEV erro
cara faria diferente tem comando sql tem muita aspa no advpl meio confuso tudo em uma linha facil de dar erro faria como abaixo só não tenho certeza se a parte da max(r_e_c_n_o_)+1 recno ficaria dessa maneira no sql...

Local cAlias := getNextAlias()

BeginSQL Alias cAlias
select max(r_e_c_n_o_)+1 recno %Table:SEV% SEV
WHERE %xFilial:SEV% AND SEV.D_E_L_E_T_ <> '*'
EndSQL


SEV->(DbSetOrder(1))
IF !SC4->(DbSeek(xFilial("SEV")+ define o indice de ordenacao) )

IF RecLock("SC4", .T.) = .T. // VALIDA A INSERCAO OU GERA EXCESSAO
SEV->ev_prefixo := _cPrefixo
SEV->ev_num:= _cNumNf
SEV->ev_parcela := _cParcela
...
...
...
SEV->R_E_C_N_O := cAlias->(recno)
MsUnlock()
ELSE
alert("Ocorreu falha ao gravar o registro ") //EXCESSAO
ENDIF
Ultima edição: 12 anos 4 meses atrás por alyson.

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás #2437 por Andre.Esteves
Respondido por Andre.Esteves no tópico Re: Insert na tabela SEV erro
Do jeito que vc colocou se o retorno do select tiver mais de uma linha vai dar chave duplicada de recno.
use a funcao row_number

ROW_NUMBER() over(order by "coloque a order da sua consulta") + (select max(r_e_c_n_o_) from " + RetSqlName("SEV"))

Por favor Acessar ou Registrar para participar da conversa.

Mais
12 anos 4 meses atrás #2473 por paulobeto
Respondido por paulobeto no tópico Re: Insert na tabela SEV erro
Ae pessoal,

Obrigado consegui resolver o problema. Estava dando erro nas variáveis AllTrim(Str(_nPercRat))+","+AllTrim(Str(_nValorRat)). Se observar elas são numéricas eu não estava transformando elas em String na hora de dar o insert. Hehe

Obrigado a todos pela a força.

Por favor Acessar ou Registrar para participar da conversa.

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