Jump to content
Fivewin Brasil

henning

Membros
  • Posts

    231
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by henning

  1. Eu façõ diferente, pois podemos colocar até o dia 31, se no mês não tem 31 ele deixa com dia 30 ou 29 ou 28... If Month(dDataAnt) = 12 dVenc:= Ctod(Str(nNroDias)+'/'+'01/'+Str(Year(dVenc)+1)) dDataAnt:= dVenc Else dVenc:= Ctod(Str(nNroDias)+'/'+Str(Month(dDataAnt)+1)+'/'+Str(Year(dDataAnt))) n := 1 Do While(dVenc == Ctod(" / / ")) dVenc:= Ctod(Str(nNroDias-n)+'/'+Str(Month(dDataAnt)+1)+'/'+Str(Year(dDataAnt))) n := n+1 EndDo dDataAnt:=dVenc EndIf id=code>id=code>FWH 9.08 xHarbour 1.2.1, hbMake, ContexT, PellesC 6.00.4, DBF/CDX, MySql(Nativo).
  2. Com DBF/CDX ou DBF/NTX essa é a melhor forma de fazer isso, não sei se existe outra forma, vale a pena perder um pouco de tempo implementando isso, fica bem rápido.... Se fosse SQL era fácil fácil.... mas DBF/CDX ou DBF/NTX o ordWildSeek é a melhor maneira.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  3. Você cria um arquivo temporário e faz o uso do OrdWildSeek para procurar os registros que batem com o que vc quer, como no exemplo abaixo: cAuxBusca := "*"+AllTrim(Upper(ConverteOEM(cBusca)))+"*" If PRO->(OrdWildSeek( cAuxBusca, .f. )) cAuxCodigo := PRO->PRO_Codigo cAuxDesc := PRO->PRO_Desc nAuxPVenda := PRO->PRO_PVenda nAuxQuant := PRO->PRO_Quant nAuxPCusto := PRO->PRO_PCusto nAuxMargem := PRO->PRO_Margem cAuxRefer := PRO->PRO_Refer cAuxLocal := PRO->PRO_Local cAuxCodGRU := PRO->PRO_CodGru cAuxCodBar := PRO->PRO_CodBar cAuxObs := PRO->PRO_Obs cAuxUnid := PRO->PRO_Unid PRT->(DBAppend()) PRT->(_Field->PRO_Codigo := cAuxCodigo ) PRT->(_Field->PRO_Desc := cAuxDesc ) PRT->(_Field->PRO_PVenda := nAuxPVenda ) PRT->(_Field->PRO_Quant := nAuxQuant ) PRT->(_Field->PRO_PCusto := nAuxPCusto ) PRT->(_Field->PRO_Margem := nAuxMargem ) PRT->(_Field->PRO_Refer := cAuxRefer ) PRT->(_Field->PRO_Local := cAuxLocal ) PRT->(_Field->PRO_CodGru := cAuxCodGru ) PRT->(_Field->PRO_CodBar := cAuxCodBar ) PRT->(_Field->PRO_Obs := cAuxObs ) PRT->(_Field->PRO_AI := 'A' ) PRT->(_Field->PRO_Unid := cAuxUnid ) Do While PRO->(OrdWildSeek( cAuxBusca, .T. )) cAuxCodigo := PRO->PRO_Codigo cAuxDesc := PRO->PRO_Desc nAuxPVenda := PRO->PRO_PVenda nAuxQuant := PRO->PRO_Quant nAuxPCusto := PRO->PRO_PCusto nAuxMargem := PRO->PRO_Margem cAuxRefer := PRO->PRO_Refer cAuxLocal := PRO->PRO_Local cAuxCodGRU := PRO->PRO_CodGru cAuxCodBar := PRO->PRO_CodBar cAuxObs := PRO->PRO_Obs cAuxUnid := PRO->PRO_Unid If Len(AllTRim(cAuxCodigo)) > 0 PRT->(DBAppend()) PRT->(_Field->PRO_Codigo := cAuxCodigo ) PRT->(_Field->PRO_Desc := cAuxDesc ) PRT->(_Field->PRO_PVenda := nAuxPVenda ) PRT->(_Field->PRO_Quant := nAuxQuant ) PRT->(_Field->PRO_PCusto := nAuxPCusto ) PRT->(_Field->PRO_Margem := nAuxMargem ) PRT->(_Field->PRO_Refer := cAuxRefer ) PRT->(_Field->PRO_Local := cAuxLocal ) PRT->(_Field->PRO_CodGru := cAuxCodGru ) PRT->(_Field->PRO_CodBar := cAuxCodBar ) PRT->(_Field->PRO_Obs := cAuxObs ) PRT->(_Field->PRO_AI := 'A' ) PRT->(_Field->PRO_Unid := cAuxUnid ) EndIf EndDo EndIf PRT->(DBCommit()) PRT->(DBGoTop()) obrwBPRO:Refresh(.t.) id=code>id=code>FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  4. Segue um exemplo com OrdWildSeek **************************************************************************** Function Filtra_PRO(cBusca) ***************************************************************************** * Faz o Filtro para a busca de Produtos por Palavra Chave * Data de Início..: 10/03/2009 ****************************************************************************** Local cAuxBusca, cAuxCodigo, cAuxDesc, nAuxPVenda, nAuxPCusto, nAuxMargem Local cAuxRefer, cAuxLocal, cAuxCodGru, cAuxCodBar, cAuxOBS cAuxBusca := "*"+AllTrim(Upper(ConverteOEM(cBusca)))+"*" PRT->(DBSEtOrder(2)) PRT->(DBGoTop()) PRT->(DBZap()) Do While PRT->(!EOF()) PRT->(DBDelete()) PRT->(DBSkip()) EndDo PRT->(DBCommit()) PRO->(DBSetOrder(16)) PRO->(DBGoTop()) If PRO->(OrdWildSeek( cAuxBusca, .f. )) cAuxCodigo := PRO->PRO_Codigo cAuxDesc := PRO->PRO_Desc nAuxPVenda := PRO->PRO_PVenda nAuxQuant := PRO->PRO_Quant nAuxPCusto := PRO->PRO_PCusto nAuxMargem := PRO->PRO_Margem cAuxRefer := PRO->PRO_Refer cAuxLocal := PRO->PRO_Local cAuxCodGRU := PRO->PRO_CodGru cAuxCodBar := PRO->PRO_CodBar cAuxObs := PRO->PRO_Obs cAuxUnid := PRO->PRO_Unid PRT->(DBAppend()) PRT->(_Field->PRO_Codigo := cAuxCodigo ) PRT->(_Field->PRO_Desc := cAuxDesc ) PRT->(_Field->PRO_PVenda := nAuxPVenda ) PRT->(_Field->PRO_Quant := nAuxQuant ) PRT->(_Field->PRO_PCusto := nAuxPCusto ) PRT->(_Field->PRO_Margem := nAuxMargem ) PRT->(_Field->PRO_Refer := cAuxRefer ) PRT->(_Field->PRO_Local := cAuxLocal ) PRT->(_Field->PRO_CodGru := cAuxCodGru ) PRT->(_Field->PRO_CodBar := cAuxCodBar ) PRT->(_Field->PRO_Obs := cAuxObs ) PRT->(_Field->PRO_AI := 'A' ) PRT->(_Field->PRO_Unid := cAuxUnid ) Do While PRO->(OrdWildSeek( cAuxBusca, .T. )) cAuxCodigo := PRO->PRO_Codigo cAuxDesc := PRO->PRO_Desc nAuxPVenda := PRO->PRO_PVenda nAuxQuant := PRO->PRO_Quant nAuxPCusto := PRO->PRO_PCusto nAuxMargem := PRO->PRO_Margem cAuxRefer := PRO->PRO_Refer cAuxLocal := PRO->PRO_Local cAuxCodGRU := PRO->PRO_CodGru cAuxCodBar := PRO->PRO_CodBar cAuxObs := PRO->PRO_Obs cAuxUnid := PRO->PRO_Unid If Len(AllTRim(cAuxCodigo)) > 0 PRT->(DBAppend()) PRT->(_Field->PRO_Codigo := cAuxCodigo ) PRT->(_Field->PRO_Desc := cAuxDesc ) PRT->(_Field->PRO_PVenda := nAuxPVenda ) PRT->(_Field->PRO_Quant := nAuxQuant ) PRT->(_Field->PRO_PCusto := nAuxPCusto ) PRT->(_Field->PRO_Margem := nAuxMargem ) PRT->(_Field->PRO_Refer := cAuxRefer ) PRT->(_Field->PRO_Local := cAuxLocal ) PRT->(_Field->PRO_CodGru := cAuxCodGru ) PRT->(_Field->PRO_CodBar := cAuxCodBar ) PRT->(_Field->PRO_Obs := cAuxObs ) PRT->(_Field->PRO_AI := 'A' ) PRT->(_Field->PRO_Unid := cAuxUnid ) EndIf EndDo EndIf PRT->(DBCommit()) PRT->(DBGoTop()) obrwBPRO:Refresh(.t.) If oBrwBPRO:KeyCount() <> 0 oBRWBPRO:Enable() Else oBRWBPRO:disable() EndIF AOpcaoPROB1(nOpcao,@clbBusca) PRT->(DBGoTop()) oBrwBPRO:Refresh(.t.) oBusca_PRO:Refresh() Return Nil id=code>id=code>FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  5. Acredito que para Web devemos utilizar outra coisa, como por exemplo FLEX + PHP, mas para desktop o FiveWin supre perfeitamente, a única coisa que eu acho complicado no mundo xBase é a escassez de profissionais. Hoje temos muito poucos profissionais que trabalham com xBase em relação as outras linguagens tornando a mão de obra muito cara. FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  6. Com certeza mysql. FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  7. Lailton, não precisa de ODBC para usar o Mysql com xHArbour, o xHArbour já tem uma lib nativa para acesso ao mysql.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  8. Verifique se não tem nenhum DBF corrompido.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  9. O xharbour tem a função HB_SendMail que serve para o envio de emails.... HB_SendMail( cServer, nPort, cFrom, aTo, aCC, aBCC, cBody, cSubject, aFiles, cUser, cPass, cPopServer, nPriority, lRead, lTrace, lPopAuth, lNoAuth, nTimeOut, cReplyTo ) /* cServer -> Required. IP or domain name of the mail server nPort -> Optional. Port used my email server cFrom -> Required. Email address of the sender aTo -> Required. Character string or array of email addresses to send the email to aCC -> Optional. Character string or array of email adresses for CC (Carbon Copy) aBCC -> Optional. Character string or array of email adresses for BCC (Blind Carbon Copy) cBody -> Optional. The body message of the email as text, or the filename of the HTML message to send. cSubject -> Optional. Subject of the sending email aFiles -> Optional. Array of attachments to the email to send cUser -> Required. User name for the POP3 server cPass -> Required. Password for cUser cPopServer -> Required. Pop3 server name or address nPriority -> Optional. Email priority: 1=High, 3=Normal (Standard), 5=Low lRead -> Optional. If set to .T., a confirmation request is send. Standard setting is .F. lTrace -> Optional. If set to .T., a log file is created (sendmail.log). Standard setting is .F. lNoAuth -> Optional. Disable Autentication methods nTimeOut -> Optional. Number os ms to wait default 20000 (20s) cReplyTo -> Optional. */ FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  10. Pode usar o exemplo como base sem problemas... fiz esse exemplo justamente para mostrar as possibilidades do (x)Harbour... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  11. Em http://www.xharbourbr.com.br/xflex tem um exemplo usando o FLEX + xHarbour(nativo) + DBF... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  12. Viu a culpa não é do xHarbour.... heheheehe... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  13. Set Filter sempre vai ser lento, pq não utiliza: OrdScope, ou ainda cria um arquivo temporário, ou ainda o OrdWildSeek FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  14. Uma variável de string no xHarbour não tem os 64K de limite que tinha no Clipper. FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  15. citação:@João - Infelizmente não funcionou.... @ Vagner - Obrigado pela dica, é que o bicho foi crescendo e quando vi ficou essa zona.... hehehehee.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX Editado por - henning on 28/08/2009 09:44:36 id=quote>id=quote>Encontrei o problema, o problema estava com uma classe TGet modificada que tenho aqui.... obrigado a todos pela ajuda.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  16. @João - Infelizmente não funcionou.... @ Vagner - Obrigado pela dica, é que o bicho foi crescendo e quando vi ficou essa zona.... hehehehee.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX Editado por - henning on 28/08/2009 09:44:36
  17. Tem um dialog chamado o Dados_VB, que tem as teclas de atalho definidas, e tal.... e tenho em alguns gets outros atalhos que são somente para o get em questão, então utilizava da forma como está abaixo e funcionva 100% com a versão do FWH de Julho/2006, mas agora com a versão 9.07 quando estou no Get oCodPro e teclo F2 por exemplo executa 2 vezes o comando: obtnIncItem:Click()... Não sei o que pode ser alguém tem alguma luz ? oDados_VB:bKeyDown := { | nKey | If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodCli:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_CLI('DadosVB',oCodCli), oCodCli:SetFocus(),.t.}),''), If(nKey=VK_F7, Eval({ || Dados_CLI('Novo_Fora'),.t.}),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodVen:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_Ven('DadosVB',oCodVen), oCodVen:SetFocus(),.t.}),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodPro:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_Pro('DadosVB',oCodPro), oCodPro:SetFocus(),.t.}),''), If(nKey=VK_F4, oQuant:SetFocus(),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodBar:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_Pro('DadosVB',oCodPro), oCodPro:SetFocus(),.t.}),''),If(nKey=VK_F4, oQuant:SetFocus() ,''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oQuant:bKeyDown := { | nKey | If(nKey=VK_F4, IF(AMB_FocoCodBarVB=='S',oCodBar:SetFocus(),oCodPRO:SetFocus()),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  18. Tem um dialog chamado o Dados_VB, que tem as teclas de atalho definidas, e tal.... e tenho em alguns gets outros atalhos que são somente para o get em questão, então utilizava da forma como está abaixo e funcionva 100% com a versão do FWH de Julho/2006, mas agora com a versão 9.07 quando estou no Get oCodPro e teclo F2 por exemplo executa 2 vezes o comando: obtnIncItem:Click()... Não sei o que pode ser alguém tem alguma luz ? oDados_VB:bKeyDown := { | nKey | If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodCli:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_CLI('DadosVB',oCodCli), oCodCli:SetFocus(),.t.}),''), If(nKey=VK_F7, Eval({ || Dados_CLI('Novo_Fora'),.t.}),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodVen:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_Ven('DadosVB',oCodVen), oCodVen:SetFocus(),.t.}),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodPro:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_Pro('DadosVB',oCodPro), oCodPro:SetFocus(),.t.}),''), If(nKey=VK_F4, oQuant:SetFocus(),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oCodBar:bKeyDown := { | nKey | If(nKey=VK_F5, Eval({ || Busca_Pro('DadosVB',oCodPro), oCodPro:SetFocus(),.t.}),''),If(nKey=VK_F4, oQuant:SetFocus() ,''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } oQuant:bKeyDown := { | nKey | If(nKey=VK_F4, IF(AMB_FocoCodBarVB=='S',oCodBar:SetFocus(),oCodPRO:SetFocus()),''), If(nKey==VK_F3, If(obtnExcItem:lActive==.t.,obtnExcItem:Click(),) ,), If(nKey==VK_F9, If(obtnFinalizar:lActive==.t., obtnFinalizar:Click(),),), If(nKey==VK_F6, If(obtnOBS:lActive==.t., obtnObs:Click(),),), If(nKey==VK_F2, If(obtnIncItem:lActive==.t., obtnIncItem:Click(),),) } FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  19. Vou usar o lActive mesmo, é melhor do que ficar mexendo nas classes.... obrigado.... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  20. Respondendo a minha própria pergunta, como não achei nada, criei na própria classe mais uma propriedade chamada lEnabled, que quando inicia fica como .t., e quando é chamado o disable deixo ela como .f. , quando chama o enabled deixo como .t. e pronto.... resolvido... Editado por - henning on 28/05/2009 17:26:02
  21. Olá a todos, Alguém sabe como fazer para saber se um botão está ou não habilitado ? Ou seja saber se ele está como enable ou disable. Pergunto isso pois tenho um local onde dependendo da situação determinado botão fica como disable(), e nesse botão tenho uma tecla de atalho (F3 por exemplo que simula o click nesse botão), mas se o botão estiver desabilitado e a pessoa tecla o F3 o botão é clicado do mesmo jeito, tanto estando como Disable como Enable... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  22. Olá a todos, Alguém sabe como fazer para saber se um botão está ou não habilitado ? Ou seja saber se ele está como enable ou disable. Pergunto isso pois tenho um local onde dependendo da situação determinado botão fica como disable(), e nesse botão tenho uma tecla de atalho (F3 por exemplo que simula o click nesse botão), mas se o botão estiver desabilitado e a pessoa tecla o F3 o botão é clicado do mesmo jeito, tanto estando como Disable como Enable... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  23. Por exemplo: o nome de uma variável pode ter até 63 caracteres... o resto é ignorado.... como no clipper que era 10 se não me engano (faz tempo que não uso mais o clipper).... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  24. Pode fazer também acessando o firebird atraves do ODBC, segue abaixo um exemplo. // ODBC 32 bits access from FiveWin #include "FiveWin.ch" #include "Sql.ch" static oInformacio //----------------------------------------------------------------------------// function Main() Private oWindow set date to british set century on DEFINE WINDOW oWindow TITLE "Convesor de Dados - Henning Informática" SET MESSAGE OF oWindow TO "Aguarde convertendo dados........" DEFINE MSGITEM oInformacion OF oWindow:oMsgBar SIZE 50 ACTIVATE WINDOW oWindow ON INIT odbc() RETURN nil function odbc() local cSql local nStep local odbc := todbc():New('teste') Local ncount, nregistros, tdbodbc // ? odbc:cConnect tdbodbc := tdbodbc():new("fornecedor",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use FOR00 alias for FOR->(DBZap()) do While nCount <= nRegistros cCodFor := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CODIGO")) cFanta := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_FANTA")) cRazao := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_RAZAO")) cEnder := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_ENDER")) cNumero := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_NUMERO")) cTipo := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_TIPO")) cCep := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CEP")) cCidade := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CIDADE")) cUF := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_UF")) cCNPJ := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CNPJ")) cInsc := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_INSC")) cFone1 := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_FONE1")) cFone2 := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_FONE2")) cContato:= tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CONTATO")) cFAX := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_FAX")) cConta := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CONTA")) cBanco := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_BANCO")) cAgencia:= tdbodbc:fieldget(tdbodbc:fieldpos("FOR_AGENCIA")) cEmail := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_EMAIL")) cHomeP := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_HOMEP")) cCelular:= tdbodbc:fieldget(tdbodbc:fieldpos("FOR_CELULAR")) cBairro := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_BAIRRO")) cComple := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_COMPLEMENTO")) cOBS := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_OBS")) dDCad := Retorna_Data(tdbodbc:fieldget(tdbodbc:fieldpos("FOR_DCAD"))) cCodGRU := tdbodbc:fieldget(tdbodbc:fieldpos("FOR_GRUPO")) FOR->(DBAppend()) FOR->(_Field->FOR_Codigo := cCodFor ) FOR->(_Field->FOR_Fanta := cFanta ) FOR->(_Field->FOR_Razao := cRazao ) FOR->(_Field->FOR_Ender := cEnder ) FOR->(_Field->FOR_Numero := cNumero ) FOR->(_Field->FOR_Cep := cCEP ) FOR->(_Field->FOR_Cid := SubStr(cCidade,1,25)) FOR->(_Field->FOR_UF := cUF ) FOR->(_Field->FOR_CNPJ := cCNPJ ) FOR->(_Field->FOR_Insc := cInsc ) FOR->(_Field->FOR_Fone1 := cFone1 ) FOR->(_Field->FOR_Fone2 := cFone2 ) FOR->(_Field->FOR_Contat := cContato ) FOR->(_Field->FOR_FAX := cFAX ) FOR->(_Field->FOR_Conta := cConta ) FOR->(_Field->FOR_Banco := cBanco ) FOR->(_Field->FOR_Agenci := cAgencia) FOR->(_Field->FOR_Email := SubStr(cEmail,1,50)) FOR->(_Field->FOR_HomeP := SubStr(cHomeP,1,50)) FOR->(_Field->FOR_Celula := cCelular ) FOR->(_Field->FOR_Bairro := SubStr(cBairro,1,25)) FOR->(_Field->FOR_Comple := cComple ) FOR->(_Field->FOR_OBs := SubStr(cOBS,1,180)) FOR->(_Field->FOR_DCad := dDCad ) FOR->(_Field->FOR_CodGRU := cCodGRU ) tdbodbc:Skip() nCount:= nCount + 1 EndDo FOR->(DBCommit()) FOR->(DBCloseArea()) tdbodbc:end() tdbodbc := tdbodbc():new("GRUPOS",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use GRP00 alias grp GRP->(DBZap()) do While nCount <= nRegistros cCodGru := tdbodbc:fieldget(tdbodbc:fieldpos("GRU_CODIGO")) cDesc := tdbodbc:fieldget(tdbodbc:fieldpos("GRU_DESCRICAO")) GRP->(DBAppend()) GRP->(_Field->GRP_Codigo := cCodGRU ) GRP->(_Field->GRP_Desc := cDesc ) tdbodbc:Skip() nCount:= nCount + 1 EndDo GRP->(DBCommit()) GRP->(DBCloseArea()) tdbodbc:end() tdbodbc := tdbodbc():new("GRU_FORNEC",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use GRF00 alias grf GRF->(DBZap()) do While nCount <= nRegistros cCodGru := tdbodbc:fieldget(tdbodbc:fieldpos("GRU_CODIGO")) cDesc := tdbodbc:fieldget(tdbodbc:fieldpos("GRU_DESC")) GRF->(DBAppend()) GRF->(_Field->GRF_Codigo := cCodGRU ) GRF->(_Field->GRF_Desc := cDesc ) tdbodbc:Skip() nCount:= nCount + 1 EndDo GRF->(DBCommit()) GRF->(DBCloseArea()) tdbodbc:end() tdbodbc := tdbodbc():new("MOV_CONSU",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use MNC00 alias mnc MNC->(DBZap()) do While nCount <= nRegistros cCodPro := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_CODPRO")) cCodREQ := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_TIPO")) cOper := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_OPER")) dData := Retorna_Data(tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DATA"))) dDataD := Retorna_Data(tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DATAD"))) dDataE := Retorna_Data(tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DATAE"))) nQuant := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_QUANT")) cDoc := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DOC")) cDev := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DEVOLVIDO")) nCodInt := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_CODINT")) MNC->(DBAppend()) MNC->(_Field->MNC_CodPro := PadL(AllTrim(cCodPro),10)) MNC->(_Field->MNC_CodReq := cCodReq ) MNC->(_Field->MNC_CodDep := '000001' ) MNC->(_Field->MNC_Data := dData ) MNC->(_Field->MNC_DataD := dDataD ) MNC->(_Field->MNC_Quant := nQuant ) If AllTrim(cDev) == 'S' MNC->(_Field->MNC_QuantD := nQuant ) MNC->(_Field->MNC_Dev := 'S' ) Else MNC->(_Field->MNC_Dev := 'N' ) Endif MNC->(_Field->MNC_CodInt := nCodInt ) MNC->(_Field->MNC_Doc := cDoc ) tdbodbc:Skip() nCount:= nCount + 1 EndDo MNC->(DBCommit()) MNC->(DBCloseArea()) tdbodbc:end() tdbodbc := tdbodbc():new("MOV_ESTQ",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use MMC00 alias MMC MMC->(DBZap()) do While nCount <= nRegistros cCodPro := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_CODPRO")) cCodREQ := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_TIPO")) cOper := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_OPER")) dData := Retorna_Data(tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DATA"))) nValor := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_VALOR")) nQuant := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_QUANT")) cDoc := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_DOC")) nCodInt := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_CODINT")) cCodFor := tdbodbc:fieldget(tdbodbc:fieldpos("MOV_CODFOR")) MMC->(DBAppend()) MMC->(_Field->MMC_CodPRO := PadL(AllTrim(cCodPRO),10)) MMC->(_Field->MMC_CodREQ := cCodReq ) MMC->(_Field->MMC_CodDEP := '000001') MMC->(_Field->MMC_CodInt := nCodInt ) MMC->(_Field->MMC_Doc := cDoc ) MMC->(_Field->MMC_Oper := cOper ) MMC->(_Field->MMC_Quant := nQuant ) MMC->(_Field->MMC_Data := dData ) MMC->(_Field->MMC_Valor := nValor ) MMC->(_Field->MMC_CodFor := cCodFor ) tdbodbc:Skip() nCount:= nCount + 1 EndDo MMC->(DBCommit()) MMC->(DBCloseArea()) tdbodbc:end() tdbodbc := tdbodbc():new("PRODUTOS",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use PRO00 alias PRO PRO->(DBZap()) do While nCount <= nRegistros cCodigo := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_CODIGO")) cDesc := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_DESCRICAO")) cUnid := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_UNID")) cCodGRU := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_CODGRU")) cLocal := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_LOCAL")) nQuant := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_QUANT")) nMin := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_MIN")) nValor := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_VALOR")) cOBS := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_OBS")) cRefer := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_REFER")) cCodBar := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_CODBAR")) nEMAX := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_EMAX")) cConsu := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_CONSUMIVEL")) cCodFOR := tdbodbc:fieldget(tdbodbc:fieldpos("PRO_CODFOR")) PRO->(DBAppend()) PRO->(_Field->PRO_Codigo := PadL(AllTrim(cCodigo),10)) PRO->(_Field->PRO_Desc := cDesc ) PRO->(_Field->PRO_Unid := cUnid ) PRO->(_Field->PRO_CodGru := cCodGRU ) PRO->(_Field->PRO_Local := cLocal ) PRO->(_Field->PRO_Quant := nQuant ) PRO->(_Field->PRO_EMin := nMin ) PRO->(_Field->PRO_Valor := nValor ) PRO->(_Field->PRO_OBS := cOBS ) PRO->(_Field->PRO_Refer := cRefer ) PRO->(_Field->PRO_CodBar := cCodBar ) PRO->(_Field->PRO_EMAX := nEMax ) PRO->(_Field->PRO_AI := 'A' ) PRO->(_Field->PRO_Consu := cConsu ) PRO->(_Field->PRO_CodFOR := cCodFOR ) tdbodbc:Skip() nCount:= nCount + 1 EndDo PRO->(DBCommit()) PRO->(DBCloseArea()) tdbodbc:end() tdbodbc := tdbodbc():new("REQUISITANTE",odbc) nRegistros := tdbodbc:reccount() nCount:= 1 use REQ00 alias REQ REQ->(DBZap()) do While nCount <= nRegistros cCodigo := tdbodbc:fieldget(tdbodbc:fieldpos("REQ_CODIGO")) cNome := tdbodbc:fieldget(tdbodbc:fieldpos("REQ_DESCRICAO")) REQ->(DBAppend()) REQ->(_Field->REQ_Codigo := cCodigo) REQ->(_Field->REQ_Nome := cNome ) REQ->(_Field->REQ_CodDEP := '000001') tdbodbc:Skip() nCount:= nCount + 1 EndDo REQ->(DBCommit()) // REQ->(browse()) REQ->(DBCloseArea()) Use DEP00 alias DEP DEP->(DBZap()) DEP->(DBAppend()) DEP->(_Field->DEP_Codigo := '000001' ) DEP->(_Field->DEP_Desc := 'Departamento/Setor') DEP->(DBCommit()) DEP->(DBCloseArea()) DBCLoseAll() tdbodbc:end() odbc:end() RUN DEL *.CDX oWindow:End() return nil //----------------------------------------------------------------------------// Function Retorna_Data(cData) Return CTod(SubStr(cData,9,2)+'/'+SubStr(cData,6,2)+'/'+SubStr(cData,1,4)) FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
  25. citação: citação:Daria certo se fossem poucas pessoas (no máximo 5) que tenha os mesmos ou quase os mesmos pensamentos. Acredito que isso seria interessante, mas para algo novo para nós e uma coisa que acredito que num futuro próximo será muito bom e rentável são os sistemas online.... Tenho estudado bastante o FLEX+PHP, até fiz um sisteminha de fluxo de caixa bem "simprão" mais para testes mesmo que está disponível em http://www.hcaixa.com.br/hcaixa.html Se alguém se interessar por algo nesse sentido eu topo... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX Editado por - henning on 27/01/2009 10:14:09 id=quote>id=quote>Henning, gracas a Deus voce entrou!! Aleluia! kkkkkkkkkkkkk. Friend, ajuda ahi, estou finalizando meu sistema para comercio, e entrei na area de CONTAS A PAGAR E RECEBER. Nao manjo PUERRA NUNGUNA disto, voce pode me ajudar? Poderia me enviar algo? Um executavel com banco de dados, bem simples, do jeitinho maroto, que so voce sabe programar?? Tens as manhas?? É melhor pedir, do que roubar! Obrigado. Abracos. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe id=quote>id=quote>Mandei alguma coisa no seu email do Pop... FWH 2.7, xHarbour 0.99.61, hbMake, ContexT, PellesC 4.00.50, DBF/CDX
×
×
  • Create New...