Gonçalo Santos Posted January 29, 2024 at 11:47 AM Report #632678 Posted January 29, 2024 at 11:47 AM Bom dia a todos Espero que se encontrem bem Preciso da vossa ajuda se for possível Tenho esta tecla de Atualização de Artigos para Corporate onde faz a seguinte validação: Se o código existe na ST, guarda a referência Se existir o código na BC, guarda a referência Quando chego ao if de validações, não passa porque vai sempre a zero Podem ajudar pfvr? Abaixo o código: Citação *Importar dados XLS m_file=Getfile("XLS","Ficheiro","Escolher",0,"Seleccione o Ficheiro a Importar") If Type("m_file")<>"C" Or Not File(m_file) Messagebox("Ficheiro Não Encontrado") Endif ** Cursor para as referencias inválidas Create Cursor INVREF (Ref Varchar(30)) * Altera as decimais que são utilizadas por defeito na aplicação Set Point To "." *Criar Cursor Create Cursor Artgs (Ref Varchar(18),Codigo Varchar(40), pvp1 numeric(8,3),RefFornecedor Varchar(20), tipodesc varchar(60), pbruto numeric(8,3), url varchar(100), usr4 varchar(20), usr5 varchar(120), usr6 varchar(30)) Append From (m_file) Xls Select Artgs Mostrameisto("Artgs") Regua(0, Reccount("Artgs"), "A Atualizar Artigos") Scan Regua(1, Recno("Artgs"), "A Atualizar artigo de Ref: " + Alltrim(Upper(Artgs.Ref))) *Obtenção de Ref através de Código de Barras com ficheiro Excel local codigo m.codigo=GetUmValorNumerico("ST","st.ref","ST.codigo='"+Artgs.Codigo+"'") *Verifica se Existe o Código de Barras do Excel na Tabela de Códigos de Barras Alternativo e fica com referência em variável local codigoAlternativo m.codigoAlternativo=GetUmValorNumerico("BC", "BC.ref","bc.codigo='"+Artgs.Codigo+"'") msg(m.codigoAlternativo) *IF para validar existência de Referência através de CodBarras para atualização local m.RefRegistar if m.codigoAlternativo=" " and m.codigo=" " m.RefRegistar="0" else if m.codigo=Artgs.ref m.RefRegistar=Artgs.ref ELSE if m.codigoAlternativo<>"" m.RefRegistar=m.codigoAlternativo endif endif endif msg(m.RefRegistar) IF m.RefRegistar<>"0" TEXT to msel textmerge noshow UPDATE st SET epv1 = <<Artgs.pvp1>>, pv1 = <<Artgs.pvp1>> * 200.482, forref = '<<Artgs.RefFornecedor>>', tipodesc = '<<Artgs.tipodesc>>', pbruto = '<<Artgs.pbruto>>', url = '<<Artgs.url>>',usr4 = CASE WHEN usr4 IS NULL OR usr4 = '' THEN '<<Artgs.usr4>>' ELSE usr4 END, usr5 = CASE WHEN usr5 IS NULL OR usr5 = '' THEN '<<Artgs.usr5>>' ELSE usr5 END, usr6 = CASE WHEN usr6 IS NULL OR usr6 = '' THEN '<<Artgs.usr6>>' ELSE usr6 END, impfuelpos = 1 where ref='<<m.RefRegistar>>' ENDTEXT u_sqlexec(msel,'') *Wait Window "A atualizar..." Timeout 1 Else select INVREF append blank replace INVREF.ref with Alltrim(Artgs.Ref) Endif sst.refresh() sst.refrescar() Endscan Regua(2) Mensagem("Importação Terminada", "DIRECTA") Mostrameisto("INVREF") Fecha("Artgs") Fecha("INVREF") Set Point To se_pointer
Solution Gonçalo Santos Posted January 29, 2024 at 12:24 PM Author Solution Report #632679 Posted January 29, 2024 at 12:24 PM Resolvi assim substituindo o IF por case: *Importar dados XLS m_file=Getfile("XLS","Ficheiro","Escolher",0,"Seleccione o Ficheiro a Importar") If Type("m_file")<>"C" Or Not File(m_file) Messagebox("Ficheiro Não Encontrado") Endif ** Cursor para as referencias inválidas Create Cursor INVREF (Ref Varchar(30)) * Altera as decimais que são utilizadas por defeito na aplicação Set Point To "." *Criar Cursor Create Cursor Artgs (Ref Varchar(18),Codigo Varchar(40), pvp1 numeric(8,3),RefFornecedor Varchar(20), tipodesc varchar(60), pbruto numeric(8,3), url varchar(100), usr4 varchar(20), usr5 varchar(120), usr6 varchar(30)) Append From (m_file) Xls Select Artgs Mostrameisto("Artgs") Regua(0, Reccount("Artgs"), "A Atualizar Artigos") Scan Regua(1, Recno("Artgs"), "A Atualizar artigo de Ref: " + Alltrim(Upper(Artgs.Ref))) *Obtenção de Ref através de Código de Barras com ficheiro Excel local codigo m.codigo=GetUmValorNumerico("ST","st.ref","ST.codigo='"+Artgs.Codigo+"'") *Verifica se Existe o Código de Barras do Excel na Tabela de Códigos de Barras Alternativo e fica com referência em variável local codigoAlternativo m.codigoAlternativo=GetUmValorNumerico("BC", "BC.ref","bc.codigo='"+Artgs.Codigo+"'") *IF para validar existência de Referência através de CodBarras para atualização local m.RefRegistar DO CASE CASE EMPTY(Alltrim(m.codigoAlternativo)) and EMPTY(ALLTRIM(m.codigo)) m.RefRegistar="0" CASE NOT EMPTY(ALLTRIM(m.codigo)) m.RefRegistar=Artgs.ref CASE NOT EMPTY(ALLTRIM(m.codigoAlternativo)) m.RefRegistar=m.codigoAlternativo ENDCASE IF m.RefRegistar<>"0" TEXT to msel textmerge noshow UPDATE st SET epv1 = <<Artgs.pvp1>>, pv1 = <<Artgs.pvp1>> * 200.482, forref = '<<Artgs.RefFornecedor>>', tipodesc = '<<Artgs.tipodesc>>', pbruto = '<<Artgs.pbruto>>', url = '<<Artgs.url>>',usr4 = CASE WHEN usr4 IS NULL OR usr4 = '' THEN '<<Artgs.usr4>>' ELSE usr4 END, usr5 = CASE WHEN usr5 IS NULL OR usr5 = '' THEN '<<Artgs.usr5>>' ELSE usr5 END, usr6 = CASE WHEN usr6 IS NULL OR usr6 = '' THEN '<<Artgs.usr6>>' ELSE usr6 END, impfuelpos = 1 where ref='<<m.RefRegistar>>' ENDTEXT u_sqlexec(msel,'') *Wait Window "A atualizar..." Timeout 1 Else select INVREF append blank replace INVREF.ref with Alltrim(Artgs.Ref) Endif sst.refresh() sst.refrescar() Endscan Regua(2) Mensagem("Importação Terminada", "DIRECTA") Mostrameisto("INVREF") Fecha("Artgs") Fecha("INVREF") Set Point To se_pointer Se tiverem outra solução melhor, pfvr, digam
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now