Jump to content
Fivewin Brasil

sistem

Membros
  • Posts

    561
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by sistem

  1. altera oS use já colocando os alias na abertura da tabela para: USE (cTabela) SHARED NEW ALIAS (cAlias) VIA "SQLRDD" dai vou preparar aqui o exemplo
  2. oribeiro, não vejo erro no seu código veja assim: USE (cTabela) SHARED NEW ALIAS (cAlias) VIA "SQLRDD" cAlias->(DBSETORDER("NomeDoIndice")) ex: Esti->(DBSETORDER("Esti1")) hoje a noite irei criar um exemplo com base no seu. com 3 tabelas e seus relacionamentos... dai vc ver
  3. cnavarro, oBrw:KeyNo não trabalhou como esperado... acredito que seja por conta do SQLRDD.... oBrw:KeyNo retorna sempre 0
  4. Rochinha obrigado pelo esclarecimento
  5. Function SR_OrdkeyNo() Local nItem:= 0, nRecno:= Recno(), nKey:= 0 DbGotop() DbEval({|| nItem++,Iif(Recno() == nRecno, nKey:= nItem,nil) },,{|| Empty(nKey) } ) If(Empty(nKey),nKey:= nItem,nil) DbGoto(nRecno) Return nKey http://forums.fivetechsupport.com/viewtopic.php?f=3&t=18670&start=0 precisei criar um coluna numerando os itens do pedido e pesquisando no forum internacional encontrei a função acima (pcordonet merece um prêmio).. irei ver o comportamento em tabelas grande numero de registro.
  6. Amigos essa informação abaixo procede? Nos campos cEAN e cEANTrib devem ser preenchidos os códigos GTIN-8, GTIN-12, GTIN-13 ou GTIN-14 (antigos códigos EAN, UPC e DUN-14) de acordo com o produto. Para produtos que não possuem código de barras com GTIN, deve ser informado o literal “SEM GTIN”. Nos demais casos, deve-se preencher com GTIN contido na embalagem com código de barras. no caso tenho cliente que tem código de barra sem cadastro no GTIN, dai vou ter que pôr um checkbox no casdastro de produtos com a informaçao SEM GTIN, mas gostaria de saber se eh isso mesmo que consta no texto acima Resolvido
  7. oribeiro olhei o código e deu vontade de sair correndo (tipo forrest gump) brincadeira como disse o emotta um pequeno exemplo (pensei que o relatório fosse menor)
  8. Oscar, mostra o código de um relatório aqui (seu prg do relatório inteiro)
  9. order libs echo $(HBDIR)\lib\rtl.lib + >> b32.bc echo $(HBDIR)\lib\vm.lib + >> b32.bc echo $(HBDIR)\lib\gtgui.lib + >> b32.bc echo $(HBDIR)\lib\lang.lib + >> b32.bc echo $(HBDIR)\lib\macro.lib + >> b32.bc echo $(HBDIR)\lib\rdd.lib + >> b32.bc echo $(HBDIR)\lib\dbfntx.lib + >> b32.bc echo $(HBDIR)\lib\dbfcdx.lib + >> b32.bc echo $(HBDIR)\lib\dbffpt.lib + >> b32.bc echo $(HBDIR)\lib\hbsix.lib + >> b32.bc echo $(HBDIR)\lib\debug.lib + >> b32.bc echo $(HBDIR)\lib\common.lib + >> b32.bc echo $(HBDIR)\lib\pp.lib + >> b32.bc echo $(HBDIR)\lib\pcrepos.lib + >> b32.bc echo $(HBDIR)\lib\ct.lib + >> b32.bc echo $(HBDIR)\lib\zlib.lib + >> b32.bc echo $(HBDIR)\lib\hbzip.lib + >> b32.bc echo $(HBDIR)\lib\libmisc.lib + >> b32.bc echo $(HBDIR)\lib\tip.lib + >> b32.bc echo $(HBDIR)\lib\png.lib + >> b32.bc echo $(HBDIR)\lib\hbcomm.lib + >> b32.bc echo $(HBDIR)\lib\cw32.lib + >> b32.bc echo $(HBDIR)\lib\import32.lib + >> b32.bc echo $(HBDIR)\lib\codepage.lib + >> b32.bc echo $(SQLRDD)\lib\sql.lib + >> b32.bc echo $(SQLRDD)\lib\libmysql.lib + >> b32.bc echo $(SQLRDD)\lib\oci.lib + >> b32.bc echo $(FWDIR)\multisql\qscanner\lib\twain.lib + >> b32.bc echo $(BCDIR)\lib\psdk\msimg32.lib + >> b32.bc echo $(BCDIR)\lib\psdk\psapi.lib + >> b32.bc echo $(BCDIR)\lib\psdk\gdiplus.lib + >> b32.bc echo $(BCDIR)\lib\psdk\shell32.lib + >> b32.bc echo $(BCDIR)\lib\psdk\iphlpapi.lib, >> b32.bc minha inicialização: #include "fivewin.ch" #include "Image.ch" #include "xbrowse.ch" #include "ord.ch" #include "sqlrdd.ch" #include "mysql.ch" #include "directry.ch" REQUEST SQLRDD REQUEST SR_MYSQL EXTERNAL OrdKeyCount, OrdKeyGoTo, OrdKeyNo EXTERNAL DBPACK, DBZAP #define HKEY_LOCAL_MACHINE 2147483650 #define HKEY_CURRENT_USER 2147483649 REQUEST HB_LANG_PT REQUEST HB_CODEPAGE_PT850 REQUEST DBFCDX, DBFFPT, DTOS FUNCTION Main( lParStart ) RDDSETDEFAULT( "DBFCDX" ) SET SCORE OFF SET DATE brit SET CONFIRM ON SET DELETED ON SET EXCLUSIVE OFF SET CENTURY ON SET EPOCH TO 1950 SET DATE FORMAT "dd/mm/yyyy" SET multiple ON HB_LANGSELECT( "PT" ) HB_SETCODEPAGE( "PT850" ) FWSetLanguage(4) SR_UseDeleteds( .F. ) // NÃO MANTER REGISTROS DELETADOS NAS TABELAS = .f. SR_SetBaseLang( 2 ) // portugues SR_Msg( 2 ) // portugues SR_SetGoTopOnScope( .F. ) // NÃO EXECUTA O DBGOTOP() AUTOMATICO NOS ORDSCOPE SR_SetFastOpen( .T. ) // ABRE AS TABELAS EM MODO COMPARTILHADO // SR_MaxRowCache( 10 ) // Quantidade máxima de linhas mantidas em cache em tabelas do SQLRDD. O Default é 1000. // SR_FetchSize( 10 ) // // SR_AllInCache(.t.) // TRAZ TODOS OS REGISTRO NA ABERTURA DA TABELA // SR_SETSYNTHETICINDEX(.F.) // vale o que for configurado pela função SR_SetSyntheticIndexMinimun(). // SR_SETSYNTHETICINDEXMINIMUN(10) // Quant.mínima de colunas na chave de índice para criá-lo como Sintético. Os valores aceitos são entre 0 e 10. SetHandleCount( 150 ) ... .. . veja se ajuda
  10. mysql na maioria dos clientes com windows e mariadb no linux debian em alguns clientes no exemplo abaixo com base no que o senhor disse, causaria problema em seu programa? dbSelectAreaSql("Prod") Prod->(OrdSetFocus("Prod1")) Prod->(dbSetRelation( "Pres", {|| Prod->Fam_Prod+Prod->Cod_Prod} )) dbSelectAreaSql("Pedm") Pedm->(OrdSetFocus("Pedm2")) dbSetRelation( "Clie", {|| Pedm->Cli_Pedm} ) dbSetRelation( "Agen", {|| Pedm->Age_Pedm} ) dbSetRelation( "Tran", {|| Pedm->Tra_Pedm} ) dbSetRelation( "Cond", {|| Pedm->Con_Pedm} ) dbSetRelation( "Natu", {|| Pedm->Nat_Pedm} ) dbSetRelation( "Vend", {|| Pedm->Ven_Pedm} ) dbSetRelation( "Caxa", {|| Pedm->Cax_Pedm} ) dbSetRelation( "Cent", {|| Pedm->Cen_Pedm} ) dbSetRelation( "Ctcx", {|| Pedm->Cen_Pedm+Pedm->Ctc_Pedm} ) aqui não ocorre ... estranho os erros que acontece ai no seu programa minha configuracao ? FWVERSION+" "+Version()+CRLF+hb_compiler()+CRLF+SR_GetConnectionInfo(, SQL_DBMS_NAME )+; Alltrim(SR_GetConnectionInfo(, SQL_DBMS_VER ))+" "+SR_Version()
  11. a tela do amigo Ladinilson como fez? vc usou splitter e ficou a traseira da moto num quadro e dianteira em outro quadro ? curiosidade, achei bem legal
  12. amigo não tenho esse problema. isso não acontece comigo.
  13. nesse link tem um programa para clinica(vi nas fotos) e vai com os fontes. https://produto.mercadolivre.com.br/MLB-968688219-pacote-xbase-2018-clipper-e-harbour-sql-e-interface-graf-_JM parece que é feito em MiniGUI
  14. sistem

    Dll externa

    ola teria algum documento sobre a DLL? poderia dar um pista do que se trata essa dll
  15. Amigo eu faço assim, confirme com os amigos do forum como eles fazem... faço uma fatura para muitas duplicatas ex: Function LoadDuplicatas( oNFe, TotalLiq, TotFinac, dData, nNotaUn ) Local oItem, cString := "", nItem := 0, nfracao:=0, nValorTit:=0, x1, lEnt:=.t. For x1=1 to Val(Cond->Par_Cond) nfracao=TotFinac-(Int(TotFinac/Val(Cond->Par_Cond))*Val(Cond->Par_Cond)) If Val(Cond->Par_Cond) > 1 If x1=1 nValorTit := Int(TotFinac/Val(Cond->Par_Cond))+nFracao Else nValorTit := Int(TotFinac/Val(Cond->Par_Cond)) Endif ElseIf Val(Cond->Par_Cond) = 1 nValorTit := TotFinac/Val(Cond->Par_Cond) Endif oItem := TVoNfeCobr() WITH OBJECT oItem If lEnt :nFat := Strzero(nNotaUn,6) :vOrig := TotFinac //TotalLiq :vLiq := TotFinac //TotalLiq lEnt:=.f. Endif :nDup := Strzero(nNotaUn,6)+Left(Pedm->Ser_Pedm,1)+StrZero(x1,2)+StrZero(Val(Cond->Par_Cond),2) // No.Duplicata :dVenc := dData+Val(Subs(Cond->Pra_Cond,(x1*5)-4,4)) // Dat.vencimento :vDup := nValorTit // Val.Duplicata END oNFe:AddItem( oItem ) Next Return(nil) veja o código acima a variavel lEnt faz o controle da tag <fat> ser lida uma unica vez no loop o xml deferia ficar +ou- assim: 1000, reais o valor da nota, com duas duplicata de 500,00 reais por exemplo <fat> <nFat>422</nFat> // aqui o numero da nota <vOrig>1000.00</vOrig> <vLiq>1000.00</vLiq> </fat> <dup> <nDup>422</nDup> // aqui vc poderia fazer assim 4220102 = numero da nota 422 + primeira parcela 01 de duas parcelas 02 = 4220102 <dVenc>2018-07-31</dVenc> <vDup>500.00</vDup> </dup> <dup> <nDup>422</nDup> // 4220202 = no.nota segunda parcela de duas obs: isso eh soh um exemplo <dVenc>2018-08-07</dVenc> <vDup>500.00</vDup> </dup>
  16. tem essas informações no site: FAQ Como funciona a API? Para entender como o sistema funciona, é necessario entender seus componentes. O sistema é composto pelos seguintes componentes: um banco de dados; uma fila; processos que recuperam informações da Receita Federal. Ao realizar a consulta de um CNPJ através da API, é primeiro verificado se este existe no banco de dados. Em caso positivo, estes dados são retornados. Em caso negativo, a requisição é encaminhada para uma fila de onde alguns processos recuperam sua requisição e realizam a consulta no site da Receita Federal. Assim que a consulta é realizada com sucesso os dados são atualizados no banco de dados local e sua requisição é respondida. De onde os dados são obtidos? Os dados são obtidos diretamente da Receita Federal de acordo com as consultas realizadas através da API. Um banco de dados é mantido para responder as consultas rapidamente. Os dados da API são recentes? Para cada consulta é possível verificar há quanto tempo atrás os dados foram recuperados da Receita Federal através do campo "ultima_autualizacao". Mesmo sem nenhuma requisição para a API, os CNPJs que estão na base de dados são atualizados constantementes, dos mais antigos para os mais novos. Assim, a base de dados se mantem relativamente atualizada: atualmente os CNPJs mais antigos foram consultados até 60 dias atrás. Vale lembrar que dados de empresas não mudam constantemente. Ao consultar um CNPJ junto à Receita Federal cuja resposta indica que o cadastro é inexistente, esta informação também estará na base de dados. Para estes casos, o CNPJ ficará no banco de dados por até 90 dias e não será consultado novamente de acordo com o processo indicado anteriormente. Qualquer requisição para o estes CNPJs irá retornar que o CNPJ foi rejeitado pela Receita Federal. Se você tem a informação sobre alguma mudança nos dados de um CNPJ e gostaria que esta informação estivesse refletida nos dados de retorno da API, é preciso fazer uma requisição utilizando a API Comercial, informando a defasagem máxima dos dados. O mesmo vale para os CNPJs rejeitados pela Receita Federal citados acima.
  17. não alterei nada alem dos paths. irei ver o motivo e retorno.
  18. kapiaba, tem um exe lá... ao abrir tem uma tela com header e footer, tipo tela de pedido
  19. teste isso: Function GetCNPJ(cCnpj) Local oServerWS, cUrl, aArray, x1, erro cUrl := "https://www.receitaws.com.br/v1/cnpj/"+cCnpj Try oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.6.0' ) Catch erro ? erro:Description return nil End oServerWS:open('GET', cUrl, .f.) oServerWS:setRequestHeader("Content-Type", "text/xml; charset=utf-8") oServerWS:send() If oServerWS:Status != 200 MsgStop(Alltrim(STR(oServerWS:Status))+" - "+oServerWS:StatusText , "Erro") Return nil Endif While oServerWS:readyState != 4 oServerWS:WaitForResponse(1000) End x1 := hb_jsondecode( oServerWS:responseText, @aArray ) If aArray == nil MsgStop("Erro ao retornar os dados. Tente novamente.") Return nil Endif If aArray['status'] != 'OK' MsgStop(aArray['message'], "Erro") Return nil Endif MsgInfo("NOME: "+Alltrim(aArray['nome'])+CRLF+; "FANTASIA: "+Alltrim(aArray['fantasia'])+CRLF+; "ENDEREÇO: "+Alltrim(aArray['logradouro'])+", "+Alltrim(aArray['numero'])+" "+Alltrim(aArray['complemento'])+CRLF+; "BAIRRO: "+Alltrim(aArray['bairro'])+" CEP: "+Alltrim(aArray['cep'])+CRLF+; "CIDADE: "+Alltrim(aArray['municipio'])+"-"+Alltrim(aArray['uf'])+CRLF+; "TELEFONE: "+Alltrim(aArray['telefone'])+CRLF+CRLF+; "NATUREZA JURÍDICA: "+Alltrim(aArray['natureza_juridica'])+CRLF+; "TIPO: "+Alltrim(aArray['tipo'])+CRLF+; "SITUAÇÃO: "+Alltrim(aArray['situacao'])+CRLF+; "DATA SITUAÇÃO: "+Alltrim(aArray['data_situacao'])+CRLF+; "ULTIMA ATUALIZAÇÃO: "+Alltrim(aArray['ultima_atualizacao']), "CNPJ CONSULTA") Return nil
  20. tela de pedido bem legal http://forums.fivetechsupport.com/viewtopic.php?f=3&t=32993&p=194327&hilit=fivewin+free#p194327
  21. Gilmer a variável retorna um valor logico alert(::cModeloDoc) exibi => .F. com isso da erro... já arrumei aqui removendo essas linhas
  22. IF Empty(oItem:CST_Cofins) .and. ::cModeloDoc=="65" Return axArray ENDIF ::cModeloDoc retorna .F.
  23. oribeiro, aqui nao trava por este motivo não tenho ideia, uso da mesma maneira que vc. tentei ate fazer travar aqui(test) e nao consegui
×
×
  • Create New...