- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Tela de cadastro enchoice com 2 tabelas
×
Linguagem de Programação ADVPL
Perguntas Tela de cadastro enchoice com 2 tabelas
- flaviodocarmo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26736
por flaviodocarmo
Tela de cadastro enchoice com 2 tabelas foi criado por flaviodocarmo
Bom dia Senhores!
Alguem pode me ajudar com as seguintes duvidas:
1)Meu programa esta com o seguinte erro (em anexo a tela) na hora de gravar do acols na tabela. Justamente nos campos de quantidade e valor. Como resolvo?
2)Resolvi este erro ignorando os campos de quantidade e valor (Mas gostaria q mostrasse). Mas não gostaria q minha msgetdados mostrasse o campo codigo(Contador da getdados nao marca direito mas grava na tabela com numero certo) mas ele aparece na getdados. Como tiro o zd_cod da msgetdados?
Agradeço a Atenção.
Flávio Oliveira
31-93516397
Alguem pode me ajudar com as seguintes duvidas:
1)Meu programa esta com o seguinte erro (em anexo a tela) na hora de gravar do acols na tabela. Justamente nos campos de quantidade e valor. Como resolvo?
2)Resolvi este erro ignorando os campos de quantidade e valor (Mas gostaria q mostrasse). Mas não gostaria q minha msgetdados mostrasse o campo codigo(Contador da getdados nao marca direito mas grava na tabela com numero certo) mas ele aparece na getdados. Como tiro o zd_cod da msgetdados?
Agradeço a Atenção.
Flávio Oliveira
31-93516397
Por favor Acessar ou Registrar para participar da conversa.
- saulorv
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 28
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26737
por saulorv
Respondido por saulorv no tópico Tela de cadastro enchoice com 2 tabelas
Flávio o campo esta recebendo um tipo de dado errado. Ex: Campo caractere recebendo número. Campo numérico recebendo caractere.
Utilize VAL()
Realiza a conversão de uma informação do tipo caractere em numérica.
Sintaxe: VAL(cValor)
ou Utilize STR()
Realiza a conversão de uma informação do tipo numérico em uma string, adicionando espaços à direita.
Sintaxe: STR(nValor)
Quanto ao segundo problema pode mandar o pedaço do código que trata disto? Obrigado.
Utilize VAL()
Realiza a conversão de uma informação do tipo caractere em numérica.
Sintaxe: VAL(cValor)
ou Utilize STR()
Realiza a conversão de uma informação do tipo numérico em uma string, adicionando espaços à direita.
Sintaxe: STR(nValor)
Quanto ao segundo problema pode mandar o pedaço do código que trata disto? Obrigado.
Por favor Acessar ou Registrar para participar da conversa.
- flaviodocarmo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26740
por flaviodocarmo
Respondido por flaviodocarmo no tópico Tela de cadastro enchoice com 2 tabelas
Obrigado pela resposta saulo.O erro acontece quando vou gravar o q tem no msgetdados.
1)Saulo ja tentei com val, alltrim e transform no acols(nos comentarios do codigo abaixo), segue abaixo:
Quando chega no campo de quantidade e valor e onde esta o erro na tela.
If (!aCols[1,Len(aHeader) + 1])
If RecLock("SZD",.T.)
Replace SZD->ZD_Filial With xFilial("SZD"),;
SZD->ZD_CODITEM With aCols[1,1],;
SZD->ZD_ITEM With aCols[1,2],;
SZD->ZD_QUANT With Transform(aCols[1,3],"@E 999999999.99"),;
SZD->ZD_UNIT With Transform(aCols[1,4],"@E 999999999.99"),;
SZD->ZD_VLRTOT With Transform(aCols[1,5],"@E 999999999.99")
SZD->ZD_CODORC With cCodigo
msunlock()
/*
Ja tentei isso tudo
SZD->ZD_QUANT With alltrim(Val(Transform(aCols[1,3],"@E 999999999.99"))),;
SZD->ZD_UNIT With alltrim(Val(Transform(aCols[1,4],"@E 999999999.99"))),;
SZD->ZD_VLRTOT With alltrim(Val(Transform(aCols[1,5],"@E 999999999.99"))),;
SZD->ZD_CODORC With cCodigo
SZD->ZD_QUANT With aCols[1,3],;
SZD->ZD_UNIT With aCols[1,4],;
SZD->ZD_VLRTOT With aCols[1,5],;
SZD->ZD_CODORC With cCodigo
*/
EndIf
EndIf
O segundo pedaço tentei isolar o campo zd_cod (So coloquei o campo "ZD_CODITEM/ZD_ITEM") mas nao adiantou segue abaixo:
dbSelectArea("SX3")
dbSeek("SZD")
aHeader:={}
Do While (!Eof()) .And. (SX3->X3_Arquivo == "SZD")
If AllTrim(SX3->X3_CAMPO) $ "ZD_CODITEM/ZD_ITEM"
//"ZD_CODITEM/ZD_ITEM/ZD_QUANT/ZD_UNIT/ZD_VLRTOT"
//"ZD_CODITEM/ZD_ITEM"
If X3Uso(SX3->X3_Usado) .And. (cNivel >= SX3->X3nAuxvel)
aAdd(aHeader,{AllTrim(SX3->X3_Titulo), SX3->X3_Campo, SX3->X3_Picture, SX3->X3_Tamanho, SX3->X3_Decimal, SX3->X3_Valid, SX3->X3_Usado, SX3->X3_Tipo, SX3->X3_Arquivo, SX3->X3_Context})
EndIf
EndIf
Agradeço
flavio
1)Saulo ja tentei com val, alltrim e transform no acols(nos comentarios do codigo abaixo), segue abaixo:
Quando chega no campo de quantidade e valor e onde esta o erro na tela.
If (!aCols[1,Len(aHeader) + 1])
If RecLock("SZD",.T.)
Replace SZD->ZD_Filial With xFilial("SZD"),;
SZD->ZD_CODITEM With aCols[1,1],;
SZD->ZD_ITEM With aCols[1,2],;
SZD->ZD_QUANT With Transform(aCols[1,3],"@E 999999999.99"),;
SZD->ZD_UNIT With Transform(aCols[1,4],"@E 999999999.99"),;
SZD->ZD_VLRTOT With Transform(aCols[1,5],"@E 999999999.99")
SZD->ZD_CODORC With cCodigo
msunlock()
/*
Ja tentei isso tudo
SZD->ZD_QUANT With alltrim(Val(Transform(aCols[1,3],"@E 999999999.99"))),;
SZD->ZD_UNIT With alltrim(Val(Transform(aCols[1,4],"@E 999999999.99"))),;
SZD->ZD_VLRTOT With alltrim(Val(Transform(aCols[1,5],"@E 999999999.99"))),;
SZD->ZD_CODORC With cCodigo
SZD->ZD_QUANT With aCols[1,3],;
SZD->ZD_UNIT With aCols[1,4],;
SZD->ZD_VLRTOT With aCols[1,5],;
SZD->ZD_CODORC With cCodigo
*/
EndIf
EndIf
O segundo pedaço tentei isolar o campo zd_cod (So coloquei o campo "ZD_CODITEM/ZD_ITEM") mas nao adiantou segue abaixo:
dbSelectArea("SX3")
dbSeek("SZD")
aHeader:={}
Do While (!Eof()) .And. (SX3->X3_Arquivo == "SZD")
If AllTrim(SX3->X3_CAMPO) $ "ZD_CODITEM/ZD_ITEM"
//"ZD_CODITEM/ZD_ITEM/ZD_QUANT/ZD_UNIT/ZD_VLRTOT"
//"ZD_CODITEM/ZD_ITEM"
If X3Uso(SX3->X3_Usado) .And. (cNivel >= SX3->X3nAuxvel)
aAdd(aHeader,{AllTrim(SX3->X3_Titulo), SX3->X3_Campo, SX3->X3_Picture, SX3->X3_Tamanho, SX3->X3_Decimal, SX3->X3_Valid, SX3->X3_Usado, SX3->X3_Tipo, SX3->X3_Arquivo, SX3->X3_Context})
EndIf
EndIf
Agradeço
flavio
Por favor Acessar ou Registrar para participar da conversa.
- flaviodocarmo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26741
por flaviodocarmo
Respondido por flaviodocarmo no tópico Tela de cadastro enchoice com 2 tabelas
Saulo, so assim com esses campos q o programa funciona:
If (!aCols[1,Len(aHeader) + 1])
If RecLock("SZD",.T.)
Replace SZD->ZD_Filial With xFilial("SZD"),;
SZD->ZD_CODITEM With aCols[1,1],;
SZD->ZD_ITEM With aCols[1,2],;
SZD->ZD_CODORC With cCodigo,;
SZD->ZD_COD With cCod
MsUnLock()
If (!aCols[1,Len(aHeader) + 1])
If RecLock("SZD",.T.)
Replace SZD->ZD_Filial With xFilial("SZD"),;
SZD->ZD_CODITEM With aCols[1,1],;
SZD->ZD_ITEM With aCols[1,2],;
SZD->ZD_CODORC With cCodigo,;
SZD->ZD_COD With cCod
MsUnLock()
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
9 anos 10 meses atrás #26746
por kanaamlrr
Respondido por kanaamlrr no tópico Tela de cadastro enchoice com 2 tabelas
Flávio, verifique a criação dos campos de valores se ela está correta no seu dicionário e qual o tipo definido para esses campos.
Ai então realize a tratativa dos valores que virão do aCols.
Como você está utilizando o aHeaders baseado no X3, não vejo problemas de incompatibilidade.
Se possível, tente excluir os 2 campos do dicionário e criá-los novamente.
Pode ter ocorrido algum problema nessa criação.
Outro ponto é que você não deve utilizar AllTrim ou Transform na gravação do campo numérico.
Abraço!
Ai então realize a tratativa dos valores que virão do aCols.
Como você está utilizando o aHeaders baseado no X3, não vejo problemas de incompatibilidade.
Se possível, tente excluir os 2 campos do dicionário e criá-los novamente.
Pode ter ocorrido algum problema nessa criação.
Outro ponto é que você não deve utilizar AllTrim ou Transform na gravação do campo numérico.
Abraço!
Por favor Acessar ou Registrar para participar da conversa.
- flaviodocarmo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26747
por flaviodocarmo
Respondido por flaviodocarmo no tópico Tela de cadastro enchoice com 2 tabelas
Muito Obrigado Kanaam !!!
So deu certo porque criei outra tabela(SZB) e criei os campos de novo e coloquei zb_quant como val. Segue abaixo:
If (!aCols[1,Len(aHeader) + 1])
If RecLock("SZB",.T.)
Replace SZB->ZB_Filial With xFilial("SZB"),;
SZB->ZB_CODITEM With aCols[1,1],;
SZB->ZB_ITEM With aCols[1,2],;
SZB->ZB_QUANT With val(aCols[1,3]),;
SZB->ZB_UNIT With aCols[1,4],;
SZB->ZB_VLRTOT With aCols[1,5],;
SZB->ZB_CODORC With cCodigo,;
SZB->ZB_COD With cCod
MsUnLock()
So deu certo porque criei outra tabela(SZB) e criei os campos de novo e coloquei zb_quant como val. Segue abaixo:
If (!aCols[1,Len(aHeader) + 1])
If RecLock("SZB",.T.)
Replace SZB->ZB_Filial With xFilial("SZB"),;
SZB->ZB_CODITEM With aCols[1,1],;
SZB->ZB_ITEM With aCols[1,2],;
SZB->ZB_QUANT With val(aCols[1,3]),;
SZB->ZB_UNIT With aCols[1,4],;
SZB->ZB_VLRTOT With aCols[1,5],;
SZB->ZB_CODORC With cCodigo,;
SZB->ZB_COD With cCod
MsUnLock()
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Tela de cadastro enchoice com 2 tabelas
Tempo para a criação da página:0.123 segundos