- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Insert na tabela SEV erro
×
Linguagem de Programação ADVPL
Perguntas Insert na tabela SEV erro
- paulobeto
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 49
- Obrigados Recebidos: 0
12 anos 4 meses atrás #2418
por paulobeto
Insert na tabela SEV erro foi criado 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)
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.
- plopez
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 4 meses atrás #2426
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
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
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.
- alyson
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 118
- Obrigados Recebidos: 1
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
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.
- Andre.Esteves
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 31
- Obrigados Recebidos: 0
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"))
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.
- paulobeto
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 49
- Obrigados Recebidos: 0
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.
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Insert na tabela SEV erro
Tempo para a criação da página:0.138 segundos