Gonçalo Santos Posted January 29, 2024 at 11:47 AM Report Share #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 Link to comment Share on other sites More sharing options...
Solution Gonçalo Santos Posted January 29, 2024 at 12:24 PM Author Solution Report Share #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 Link to comment Share on other sites More sharing options...
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