×
Ir ao conteúdo
  • Cadastre-se

socho

Membro Júnior
  • Posts

    8
  • Cadastrado em

  • Última visita

  • Qualificações

    0%

Reputação

0

Sobre socho

  • Data de Nascimento 18/12/1984 (37 anos)

Informações gerais

  • Cidade e Estado
    Joinville, Santa Catarina
  1. boa tarde estou com um problema no delphi, ao chamar o execute procedure do firebird, é o seguinte tenho que chamar esta procedure para calcular os valores das pecas de uma planilha excel para o banco. o execute procedure esta rodando normal o problema é que nao esta salvando nada no banco de dados. esta é o codigo da procedure CREATE PROCEDURE P_CALCULAR_PRECO_VENDA ( pcd_empresa char(3), pcd_filial char(4), pcd_peca char(14), pfl_simples char(1), pcd_tabsug char(2), pnr_recb char(6), pcd_tit char(6), pnr_nf char(9), pvl_peca numeric(11,5), ppc_icmse_peca numeric(11,5), ppc_ipi numeric(11,5), ppc_impsaid numeric(11,5), ppc_cofins_saida numeric(11,5), ppc_pis_saida numeric(11,5), ppc_mkp numeric(11,5), ppc_pis_entrada numeric(11,5), ppc_cofins_entrada numeric(11,5), ppc_acess numeric(11,5), ppc_frete numeric(11,5), ppc_seguro numeric(11,5), pcd_usu char(10), pvl_custo_antigo numeric(11,5), pcd_grupo char(3)) as declare variable vvl_custo numeric(11,5); declare variable vicms_entrada numeric(11,5); declare variable vcus_ipi numeric(11,5); declare variable vvl_frete numeric(11,5); declare variable vvl_seguro numeric(11,5); declare variable vvl_acess numeric(11,5); declare variable vpis_cofins_ent numeric(11,5); declare variable vvl_venda numeric(11,5); declare variable vmargem_lucro numeric(10,5); declare variable vimposto numeric(11,5); declare variable vcus_aquis numeric(11,5); declare variable vcliqcompra numeric(11,5); declare variable vmkp_indv numeric(11,5); declare variable vvl_ttmkp numeric(11,5); declare variable vlucro_peca numeric(10,5); declare variable vvl_base_sem_imp numeric(11,5); declare variable vpc_lucro numeric(10,5); declare variable vdif numeric(11,5); declare variable vcd_prec char(2); declare variable vcd_pecaux char(14); declare variable vvl_min numeric(11,5); declare variable vnr_casarr smallint; declare variable vfl_checar1 char(1); declare variable vfl_checar2 char(1); declare variable vtp_gprc smallint; declare variable vnr_seq char(3); declare variable vnr_seqaux smallint; declare variable vpc_margem_contr numeric(5,2); declare variable vpc_icms_estado numeric(5,2); declare variable vvl_icms_subst numeric(11,5); begin vpc_margem_contr=0; VPC_ICMS_ESTADO =0; vvl_icms_subst =0; SELECT a.PC_MARGEM_CONTRIBUICAO FROM tab_classif_fiscal_ipi a INNER JOIN TAB_PECA b ON(B.CD_PECA=:PCD_PECA) WHERE a.cd_classif_fiscal_ipi=b.cd_cf into :vpc_margem_contr; if (vpc_margem_contr is null) then vpc_margem_contr=0; if (:vpc_margem_contr>0) then begin Select a.PC_ICMS from TAB_OD a WHERE a.CD_EMPRESA=:pcd_empresa and a.CD_FILIAL =:PCD_FILIAL and a.tp_es ='E' and a.cd_uforg =(SELECT b.CD_UF FROM TAB_GER b where b.CD_EMPRESA=:PCD_EMPRESA AND B.CD_FILIAL =:PCD_FILIAL) and a.cd_ufdes =(SELECT b.CD_UF FROM TAB_GER b where b.CD_EMPRESA=:PCD_EMPRESA AND B.CD_FILIAL =:PCD_FILIAL) and a.tp_tit =2 into :VPC_ICMS_ESTADO; if (VPC_ICMS_ESTADO is null) then VPC_ICMS_ESTADO=0; end VVL_CUSTO = PVL_PECA; IF (PFL_SIMPLES = 'S') THEN BEGIN VICMS_ENTRADA =0; VPC_ICMS_ESTADO =0; END ELSE BEGIN VICMS_ENTRADA = CAST(((VVL_CUSTO * PPC_ICMSE_PECA)/100) AS NUMERIC(11,3)); END VCUS_IPI = CAST(((VVL_CUSTO * PPC_IPI)/100) AS NUMERIC(11,3)); VVL_FRETE = CAST(((((VVL_CUSTO + VCUS_IPI) * PPC_FRETE)/100)) AS NUMERIC(11,3)); VVL_SEGURO = CAST(((((VVL_CUSTO + VCUS_IPI) * PPC_SEGURO)/100)) AS NUMERIC(11,3)); VVL_ACESS = CAST(((((VVL_CUSTO + VCUS_IPI) * PPC_ACESS)/100)) AS NUMERIC(11,3)); vvl_icms_subst = Cast((((VVL_CUSTO + VCUS_IPI+VVL_FRETE)+((VVL_CUSTO + VCUS_IPI+VVL_FRETE)*vpc_margem_contr)/100))*(VPC_ICMS_ESTADO/100) AS NUMERIC(11,3)); if (:vpc_margem_contr>0) then vvl_icms_subst = Cast((vvl_icms_subst-VICMS_ENTRADA) AS NUMERIC(11,3)); VPIS_COFINS_ENT = CAST((((VVL_CUSTO * PPC_PIS_ENTRADA)/100) + ((VVL_CUSTO * PPC_COFINS_ENTRADA)/100)) AS NUMERIC(11,3)); VCUS_AQUIS = VVL_CUSTO + VCUS_IPI + VVL_FRETE + VVL_SEGURO + VVL_ACESS +vvl_icms_subst; VCLIQCOMPRA = VCUS_AQUIS - VICMS_ENTRADA - VPIS_COFINS_ENT; VMKP_INDV = CAST(((VCLIQCOMPRA/(1-(PPC_MKP/100))) - VCLIQCOMPRA) AS NUMERIC(11,3)); VVL_TTMKP = VCLIQCOMPRA + VMKP_INDV; FOR SELECT CD_PREC FROM TAB_PREC WHERE (CD_PREC <> :PCD_TABSUG) INTO :VCD_PREC DO BEGIN SELECT CD_PECA, PC_LUCRO FROM PECA_PRE WHERE(CD_EMPRESA = :PCD_EMPRESA)AND(CD_FILIAL = :PCD_FILIAL)AND (CD_PREC = :VCD_PREC)AND(CD_PECA = :PCD_PECA) INTO :VCD_PECAUX, :VPC_LUCRO; IF (VCD_PECAUX IS NULL) THEN VCD_PECAUX = ''; IF (VPC_LUCRO IS NULL) THEN VPC_LUCRO = 0; IF (VCD_PECAUX = '') THEN BEGIN SELECT PC_LUCRO FROM TAB_GPRC WHERE CD_GRUPO = :PCD_GRUPO INTO :VPC_LUCRO; END VLUCRO_PECA = CAST((VVL_TTMKP*(VPC_LUCRO/100))AS NUMERIC(11,3)); VVL_BASE_SEM_IMP = (VVL_TTMKP + VLUCRO_PECA); VVL_VENDA = CAST((VVL_BASE_SEM_IMP /(1 - ((PPC_IMPSAID + PPC_PIS_SAIDA + PPC_COFINS_SAIDA) / 100)))AS NUMERIC(11,3)); SELECT PC_LUCRO, VL_MIN, NR_CASARR, FL_CHECAR1, FL_CHECAR2 FROM TAB_GPRC WHERE CD_GRUPO = :PCD_GRUPO INTO :VMARGEM_LUCRO, :VVL_MIN, :VNR_CASARR, :VFL_CHECAR1, :VFL_CHECAR2; IF (VVL_VENDA > 1) THEN BEGIN IF (VNR_CASARR=0) THEN BEGIN VVL_VENDA = CAST(VVL_VENDA AS NUMERIC(5, 0)); END ELSE BEGIN IF (VNR_CASARR = 1) THEN BEGIN VVL_VENDA = CAST(VVL_VENDA AS NUMERIC(5, 1)); END ELSE BEGIN VVL_VENDA = CAST(VVL_VENDA AS NUMERIC(5, 2)); END END VIMPOSTO = CAST(VVL_VENDA*(PPC_PIS_SAIDA+PPC_COFINS_SAIDA+PPC_IMPSAID)/100 AS NUMERIC(11,3)); VVL_BASE_SEM_IMP = (VVL_VENDA - VIMPOSTO); VDIF = VVL_BASE_SEM_IMP - VVL_TTMKP; IF (VVL_TTMKP = 0) THEN BEGIN VMARGEM_LUCRO = 0; END ELSE BEGIN VMARGEM_LUCRO = CAST((VDIF/VVL_TTMKP)*100 AS NUMERIC(11,3)); END END IF (VVL_VENDA < VVL_MIN) THEN BEGIN VVL_VENDA = VVL_MIN; VIMPOSTO = CAST(VVL_VENDA*(PPC_PIS_SAIDA+PPC_COFINS_SAIDA+PPC_IMPSAID)/100 AS NUMERIC(11,3)); VVL_BASE_SEM_IMP = (VVL_VENDA - VIMPOSTO); VDIF = VVL_BASE_SEM_IMP - VVL_TTMKP; IF (VVL_TTMKP = 0) THEN BEGIN VMARGEM_LUCRO = 0; END ELSE BEGIN VMARGEM_LUCRO = CAST((VDIF/VVL_TTMKP)*100 AS NUMERIC(11,3)); END END SELECT CD_PECA FROM PECA_PRE WHERE CD_EMPRESA = :PCD_EMPRESA AND CD_FILIAL = :PCD_FILIAL AND CD_PREC = :VCD_PREC AND CD_PECA = :PCD_PECA INTO VCD_PECAUX; IF (VCD_PECAUX IS NULL) THEN BEGIN INSERT INTO PECA_PRE (CD_EMPRESA, CD_FILIAL, CD_PREC, CD_PECA, PC_LUCRO, VL_BASE, VL_MKP, CD_USU, DT_REGISTR) VALUES (:PCD_EMPRESA, :PCD_FILIAL, :VCD_PREC, :PCD_PECA, :VPC_LUCRO, :VVL_BASE_SEM_IMP, :VVL_TTMKP, :PCD_USU, CURRENT_DATE); END ELSE BEGIN UPDATE PECA_PRE SET VL_BASE = :VVL_BASE_SEM_IMP, PC_LUCRO = :VPC_LUCRO, VL_MKP = :VVL_TTMKP, CD_USU = :PCD_USU, DT_REGISTR = CURRENT_DATE/*, HR_REGISTR = CAST(CURRENT_TIME AS CHAR(8))*/ WHERE (CD_EMPRESA = :PCD_EMPRESA)AND(CD_FILIAL = :PCD_FILIAL)AND (CD_PREC = :VCD_PREC)AND(CD_PECA = :PCD_PECA); END IF (((PVL_PECA > PVL_CUSTO_ANTIGO) AND (VFL_CHECAR1 = 'S')) OR ((PVL_PECA < PVL_CUSTO_ANTIGO) AND (VFL_CHECAR2 = 'S')))then BEGIN IF (PNR_RECB <> '') THEN BEGIN VTP_GPRC = 2; END ELSE BEGIN VTP_GPRC = 4; END SELECT MAX(NR_SEQ) NR_SEQ FROM RECB_LIS WHERE CD_PECA = :PCD_PECA INTO :VNR_SEQ; IF (VNR_SEQ IS NULL) THEN BEGIN VNR_SEQ = '001'; END ELSE BEGIN VNR_SEQAUX = CAST(VNR_SEQ AS SMALLINT); VNR_SEQAUX = VNR_SEQAUX + 1; IF (VNR_SEQAUX < 10) THEN BEGIN VNR_SEQ = '00'||CAST(VNR_SEQAUX AS CHAR(1)); END ELSE BEGIN IF (VNR_SEQAUX < 100) THEN BEGIN VNR_SEQ = '0'||CAST(VNR_SEQAUX AS CHAR(2)); END ELSE BEGIN VNR_SEQ = CAST(VNR_SEQAUX AS CHAR(3)); END END END INSERT INTO RECB_LIS (CD_PECA, NR_SEQ, CD_EMPRESA, CD_FILIAL, DT_RECBTO, CD_TIT, VL_CUSTO, CD_PREC, NR_NF, NR_RECB, VL_BASE, PC_IPI, PC_ICMSE, TP_GPRC, CD_USU, DT_REGISTR) VALUES (:PCD_PECA, :VNR_SEQ, :PCD_EMPRESA, :PCD_FILIAL, CURRENT_DATE, :PCD_TIT, :PVL_PECA, :VCD_PREC, :PNR_NF, :PNR_RECB, :VVL_BASE_SEM_IMP, :PPC_IPI, :PPC_ICMSE_PECA, :VTP_GPRC, :PCD_USU, CURRENT_DATE); END END SELECT CD_PECA FROM PECA_DETALHE WHERE CD_EMPRESA = :PCD_EMPRESA AND CD_FILIAL = :PCD_FILIAL AND CD_PECA = :PCD_PECA INTO :VCD_PECAUX; IF (VCD_PECAUX IS NULL) THEN BEGIN INSERT INTO PECA_DETALHE (CD_EMPRESA, CD_FILIAL, CD_PECA, VL_CUSTO, VL_MKP, PC_ICMSE, PC_ACESS, PC_FRETE, PC_SEGURO, CD_USU, DT_REGISTR) VALUES (:PCD_EMPRESA, :PCD_FILIAL, :PCD_PECA, :PVL_PECA, :VVL_TTMKP, :PPC_ICMSE_PECA, :PPC_ACESS, :PPC_FRETE, :PPC_SEGURO, :PCD_USU, CURRENT_DATE); END ELSE BEGIN UPDATE PECA_DETALHE SET VL_CUSTO = :PVL_PECA, VL_MKP = :VVL_TTMKP, PC_ICMSE = :PPC_ICMSE_PECA, PC_ACESS = :PPC_ACESS, PC_FRETE = :PPC_FRETE, PC_SEGURO = :PPC_SEGURO WHERE CD_EMPRESA = :PCD_EMPRESA AND CD_FILIAL = :PCD_FILIAL AND CD_PECA = :PCD_PECA; END IF (:PPC_IPI > 0) THEN BEGIN UPDATE TAB_PECA SET PC_IPI = :PPC_IPI WHERE CD_PECA = :PCD_PECA; END end^ SET TERM ; ^ GRANT SELECT ON TAB_CLASSIF_FISCAL_IPI TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT,UPDATE ON TAB_PECA TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT ON TAB_OD TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT ON TAB_GER TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT ON TAB_PREC TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT,INSERT,UPDATE ON PECA_PRE TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT ON TAB_GPRC TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT,INSERT ON RECB_LIS TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT SELECT,INSERT,UPDATE ON PECA_DETALHE TO PROCEDURE P_CALCULAR_PRECO_VENDA; GRANT EXECUTE ON PROCEDURE P_CALCULAR_PRECO_VENDA TO SYSDBA; [B]e no delphi estou fazendo assim [/B] IBOaux.SQL.Clear; IBOaux.SQL.Add('EXECUTE PROCEDURE P_CALCULAR_PRECO_VENDA'); IBOaux.SQL.Add('(:PCD_EMPRESA, :PCD_FILIAL, :PCD_PECA, :PFL_SIMPLES,'); IBOaux.SQL.Add(':PCD_TABSUG, :PNR_RECB, :PCD_TIT, :PNR_NF, :PVL_PECA,'); IBOaux.SQL.Add(':PPC_ICMSE_PECA, :PPC_IPI, :PPC_IMPSAID, :PPC_COFINS_SAIDA,'); IBOaux.SQL.Add(':PPC_PIS_SAIDA, :PPC_MKP, :PPC_PIS_ENTRADA,'); IBOaux.SQL.Add(':PPC_COFINS_ENTRADA,:PPC_ACESS, :PPC_FRETE, :PPC_SEGURO, '); IBOaux.SQL.Add(':PCD_USU, :PVL_CUSTO_ANTIGO, :PCD_GRUPO)'); IBOaux.ParamByName('PCD_EMPRESA' ).AsString := CD_EMPRESA; IBOaux.ParamByName('PCD_FILIAL' ).AsString := CD_FILIAL; IBOaux.ParamByName('PCD_PECA' ).AsString := STRZ(ITEM,14); IBOaux.ParamByName('PFL_SIMPLES' ).AsString := FL_SIMPLES; IBOaux.ParamByName('PCD_TABSUG' ).AsString := CD_TABPSUG; IBOaux.ParamByName('PNR_RECB' ).AsString := ''; IBOaux.ParamByName('PCD_TIT' ).AsString := ''; IBOaux.ParamByName('PNR_NF' ).AsString := ''; IBOaux.ParamByName('PVL_PECA' ).AsFloat := StrToFloat(PRO_CUSTO); IBOaux.ParamByName('PPC_ICMSE_PECA' ).AsFloat := porcento; IBOaux.ParamByName('PPC_IPI' ).AsString := PC_IPI; IBOaux.ParamByName('PPC_IMPSAID' ).AsFloat := PC_IMPSAID; IBOaux.ParamByName('PPC_COFINS_SAIDA' ).AsFloat := 0; IBOaux.ParamByName('PPC_PIS_SAIDA' ).AsFloat := 0; IBOaux.ParamByName('PPC_MKP' ).AsFloat := PC_MKP; IBOaux.ParamByName('PPC_PIS_ENTRADA' ).AsFloat := PC_PIS_ENTRADA; IBOaux.ParamByName('PPC_COFINS_ENTRADA').AsFloat := PC_COFINS_ENTRADA; IBOaux.ParamByName('PPC_ACESS' ).AsFloat := 0; IBOaux.ParamByName('PPC_FRETE' ).AsFloat := 0; IBOaux.ParamByName('PPC_SEGURO' ).AsFloat := 0; IBOaux.ParamByName('PCD_USU' ).AsString := CD_USU; IBOaux.ParamByName('PVL_CUSTO_ANTIGO' ).AsInteger:= 0; IBOaux.ParamByName('PCD_GRUPO' ).AsString := grupo; IBOaux.ExecSQL; se alguem puder me ajudar eu agradeço sou novo na area:eek:
  2. bom dia estou com um problema no delphi que é o seguinte: tenho uma planilha com 190 registros cadastrados. mais quando mando executar o seguinte codigo: var excel, excelSheet, NomePlan: Variant; begin excel:=CreateOleObject('Excel.Application'); try excel.WorkBooks.Open(dbendereco.Text,0,True); //excelSheet := excel.Workbooks[1].WorkSheets['clientes']; NomePlan := ChangeFileExt(ExtractFileName(dbEndereco.Text),''); //ShowMessage(NomePlan); // MOSTRA O NOME DA PLANILHA excelSheet := excel.Workbooks[1].WorkSheets[NomePlan]; nlinhasex := excelSheet.Cells.SpecialCells(11).Row; // ShowMessage(IntToStr(nlinhasex)); excel.Quit except nlinhasex:=0; excel.Quit end; end; esta dando uma contagem de 10574 registros pois esta planilha é um teste onde copiei desta outra de 10574 registros e salvei em outra pasta com o mesmo nome. ai vem o problema quando executo o programa tenho dois botões importar planilha e outro abrir planilha, quando clica em abrir planilha mostra a planilha correta com 190 registros, mais quando clica em exportar ela marca 10574 registro e grava a outra planilha no lugar da de teste o que posso fazer para resolver isto:eek: se alguem puder ajudar
  3. procedure TForm1.Contarlinhas(Sender: TObject); var excel, excelSheet: Variant; begin excel:=CreateOleObject('Excel.Application'); try excel.WorkBooks.Open('endereco do arquivo',0,True); //Entre aspas coloca onde esta o xls excelSheet := excel.Workbooks[1].WorkSheets['plan1']; //Entre aspas coloca o nome da planilha a contar as linhas nlinhasex := excelSheet.Cells.SpecialCells(11).Row; excel.Quit except nlinhasex:=0; excel.Quit end; end; para quem estiver procurando muito como eu ai vai a dica. espero que ajude!
  4. ola pessoal, estou precisando de uma ajudinha em firebird 2.1, é o seguinte estou inserindo dados no firebird atraves do delphi de onde extraio os valores de um txt, só que tem um campo obrigatório cd_codigo e esta vazio! criei um genator *create generator autoincCon* e uma trigger para fazer o auto-incremento desse codigo só que esta retornando o valor 1, mas queria que retorna-se 000000000001, (12posicoes) alguem pode me ajudar abaixo o codigo da trigger. create trigger tabela_bi2 for tabela active before insert position 0 as begin if(new.cd_conmul is null) then new.cd_conmul = gen_id(autoinccon,1); end; obrigado!
  5. BOM DIA CLUBEIROS! Estou precisando ler arquivos do formato txt no delphi5, e nao estou conseguindo alguem pode me ajudar? com codigos ou sites com tutoriais ou informações, sou novo em Delphi e nao tenho ideia de como fazer. Obrigado!
  6. valeu RooT muito bom o seu tópico, estou cursando o segundo semestre de sistemas para internet e estava precisando muito aprender sobre Pilhas, Filas, Listas encadeadas na materia de estruturas de dados muito bom mesmo valeu:lol:
  7. bom o site www.caelum.com.br/ é muito bom tem muitas apostilas sobre java sou iniciante em programação java e aprendo muitos com as apostilas deles. Falou:cool:
  8. Bom dia a todos os membros e visitantes do Clube do Hardware! Estava programando um comando que busca uma tabela dentro do access e passa ela para o firebird 2.1. Sou novo por aqui, e estava desesperado com esse erro de !-- BOF ou EOF são verdadeiros, ou o registro atual foi excluido, no Delphi5, estava usando componentes ADO. consegui resolver esse problema inserindo o comando last. ai vai o codigo para quem estiver com o mesmo problema while not ADOQuery1.Eof do // faz o loop enquanto nao chegar ao ultimo registro begin IBOQuyaux.Close; IBOQuyaux.SQL.Clear; IBOQuyaux.SQL.Add('SELECT "Campo" FROM suaTabela WHERE "Condicao =:Parametro"'); IBOQuyaux.paramByName('Parametro').AsString:= ADOQuery1.FIELDBYNAME('codigo da tabela do access').AsString; IBOQuyaux.Open; if(length(cnpj) > 11)then begin tipoCon := '2'; cnpj := cnpj; end else if(Length(cnpj) < 11)then begin cnpj :=''; cpf :=''; tipoCon := '1'; end else tipoCon := '1'; IBOQuyaux.Close; IBOQuyaux.SQL.Clear; IBOQuyaux.SQL.Add('Comando insert'); IBOQuyaux.paramByName('parametro').AsString := suavariavel ; IBOQuyaux.ExecSQL; end; ADOQuery1.Next; // ao passar essa linha dava o erro! end; ADOQuery1.Last;// agora nao da mais o erro porque ele ve que esta no ultimo registro. espero ter ajudado !

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.