Jump to content
Fivewin Brasil

evertonlb

Membros
  • Posts

    733
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by evertonlb

  1. Obrigado aferra, mas ainda não deu certo.
  2. Boa tarde. Fiz uma pequena funçãozinha para fazer um backup dos DBF. Logo que executa ela dá um Error DOS 5, Acesso não permitido. Tirei todos os parâmetros de "somente leitura" tanto na pasta de destino quanto no arquivo em questão, mas continua dando o erro. Será que alguém tem alguma sugestão para solucionar este problema? cFileBackupKI := directory( _xPathBanc + "\*.MEM") * DBCloseAll() * if !empty( _xPathBackup ) * for x := 1 to len(cFileBackupKI) cFileName := cFileBackupKI[x, 1] // _xPathBanc + "\" + copy file ( alltrim( cFileName ) ) to ( alltrim( _xPathBackup ) ) next endif
  3. Foi só colocar no lugar de ADDResource o AddBmpFile. Valeu mesmo Theotokos... Obrigado Att. Everton
  4. Coloquei da seguinte maneira.. não deu erro, mas tambem não funcionou aCol_oXBrw111[4] := oXBrw111:aCols[4] oXBrw111:aCols[4]:AddResource("Imagens\16\accept.bmp" ) // Adiciona Imagem Resource para Bloqueado oXBrw111:aCols[4]:AddResource("Imagens\16\cancelamento.bmp" ) // Adiciona Imagem Resource para Não Bloqueado oXBrw111:aCols[4]:bBmpData := { || If( !empty( PES_REGI ), 1, 2 ) } // Verifica a Condição: se 1) Imagem 1 (Bloqueado), se 2) Imagem 2 (Não Bloqueado) oXBrw111:aCols[4]:nDataBmpAlign := 0 // .and. empty( PES_BAIX ) aCol_oXBrw111[4]:nWidth := 645 aCol_oXBrw111[4]:cHeader := "Nome do Cliente" aCol_oXBrw111[4]:lHIDE := .F. aCol_oXBrw111[4]:oHeaderFont := oFONT5PS aCol_oXBrw111[4]:oDataFont := oFONT6PS aCol_oXBrw111[4]:oFooterFont := oF_Form1_1 aCol_oXBrw111[4]:bClrHeader := {|| { 0, 16773863 } } aCol_oXBrw111[4]:bClrFooter := {|| { 0, 15790320 } } aCol_oXBrw111[4]:bClrStd := {|| { 0, 16777215 } } aCol_oXBrw111[4]:bClrSel := {|| { 16777215, 5525059 } } aCol_oXBrw111[4]:bClrSelFocus := {|| { 16777215, 16750899 } } Onde será que tá o erro? Att. Everton
  5. Amigos.. tenho um xBrowse que mostra os clientes cadastrados na loja. Como acontece em todas as lojas tem clientes que estão com registro no SPC. Claro que teno dentro do cadastro do cliente um campo para saber se ele esta ou não registrado. O que eu gostaria de fazer era colocar um BMP (uma bolinha) antes do nome para clientes que tem registro e um para quem não tem. Creio que seja possível. como poderia fazer? Att. Everton
  6. Todas as tentativas que fiz e que chamavam a função davam a mesma coisa... Entrava duas vezes. Ai resolvi colocando um contador dentro da função. Na primeira vez executa a função na segunda só dá um return .t. Não é o ideal, mas ao menos ta funcionando! Att. Everton
  7. Infosys2. Como funcionaria um gerador como esse que você quer fazer? Qual a vantagem de se ter um gerador? Peço por curiosidade mesmo! Att. Everton
  8. Ola Edutraini. Cara, eu tenho um código que imprime na argox... mas o lance de criar um "TXT" e mandar para a impressora é a mesma coisa ( eu acho! rsrsr ) segue o código Local cLetra, nHand, cLote Local cArqImp := "Argox.TXT" Local cPrinter := PrinterPortToName( "Argox214" ) local _dDtaImpr := right( strzero( year( date() ), 4, 0 ), 2 ) + strzero( month( date() ), 2, 0 ) * nHand:=fCreate(cArqImp) * * Controle de cabeçalho da impressora * fWrite(nHand, "L" + Chr(13)+Chr(10) ) fWrite(nHand, "m" + Chr(13)+Chr(10) ) fWrite(nHand, "e" + Chr(13)+Chr(10) ) fWrite(nHand, "K1701"+ Chr(13)+Chr(10) ) fWrite(nHand, "PC" + Chr(13)+Chr(10) ) fWrite(nHand, "D11" + Chr(13)+Chr(10) ) fWrite(nHand, "H14" + Chr(13)+Chr(10) ) fWrite(nHand, "z" + Chr(13)+Chr(10) ) * * Montagem da Etiqueta 01 * if !empty( Cod1 ) fWrite(nHand,"141100007000040" + left( ALLTRIM( cEmpresa ), 18 ) + CHR(13) + CHR(10) ) fWrite(nHand,"131100006500015" + STM1 + " " + _dDtaImpr + CHR(13) + CHR(10) ) fWrite(nHand,"1O2313504700060" + Cod1 + CHR(13) + CHR(10) ) fWrite(nHand,"121100004200020" + Des1 + CHR(13) + CHR(10) ) fWrite(nHand,"1X1200003700010L460004" + CHR(13) + CHR(10) ) fWrite(nHand,"121100003400050 PARA TROCAS, POR FAVOR" + CHR(13) + CHR(10) ) fWrite(nHand,"121100003000050NAO REMOVA ESTA ETIQUETA." + CHR(13) + CHR(10) ) fWrite(nHand,"1X1200002700010L460004" + CHR(13) + CHR(10) ) fWrite(nHand,"1O2306001000060" + Cod1 + CHR(13) + CHR(10) ) fWrite(nHand,"141100000500110R$ " + Avi1 + CHR(13) + CHR(10) ) fWrite(nHand,"121100000100020" + Des1 + CHR(13) + CHR(10) ) endif * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ * * SEGUNDA ETIQUETA * * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ if !empty( Cod2 ) fWrite(nHand,"141100007000530" + left( ALLTRIM( cEmpresa ), 18 ) + CHR(13) + CHR(10) ) fWrite(nHand,"131100006500530" + STM2 + " " + _dDtaImpr + CHR(13) + CHR(10) ) fWrite(nHand,"1O2313504700570" + Cod2 + CHR(13) + CHR(10) ) fWrite(nHand,"121100004200520" + Des2 + CHR(13) + CHR(10) ) fWrite(nHand,"1X1200003700510L460003" + CHR(13) + CHR(10) ) fWrite(nHand,"121100003400550 PARA TROCAS, POR FAVOR" + CHR(13) + CHR(10) ) fWrite(nHand,"121100003000550NAO REMOVA ESTA ETIQUETA." + CHR(13) + CHR(10) ) fWrite(nHand,"1X1200002700510L460003" + CHR(13) + CHR(10) ) fWrite(nHand,"1O2306001000570" + Cod2 + CHR(13) + CHR(10) ) fWrite(nHand,"141100000500600R$ " + Avi2 + CHR(13) + CHR(10) ) fWrite(nHand,"121100000100520" + Des2 + CHR(13) + CHR(10) ) endif * cPrintEt := "Argox214" cMsg := "" nResult := PrintFileRaw( cPrintEt, cArqImp, "Etiquetas - Estoque" ) Veja, nesse código eu já manda para a "Argox214" mas poderia usar PrinterSetup() cPrintEt := PrnGetName() Guardar esta variável num cadastro de estações e quando o cara manda a etiqueta já vai para a impressora pré definida.. Att. Everton
  9. Ah.. vou deixar o ESC mesmo!!!! Dane-se.. os caras que se acostumem!!! At. Everton
  10. Aferra.. Estou testando.. Tua sugestão é boa, poderia resolver, porém, a função não só marca a parcela, mas calcula juros, multa e se a parcela será paga antes do vencimento calcula um desconto... Obrigado pela dica!
  11. Olá pessoal. Estou com um pequeno probleminha num xBrowse. Tenho um browse que lista as contas a receber, tenho uma coluna onde clicando com o botão direito do mouse, marca as contas a receber e se clicando novamente desmarca a conta. Gostaria de fazer esta marcação com a barra de espaço, se conseguir fica mas prático para o usuário, pois navega com as setas e marca com a barra de espaço. Coloquei a seguinte linha oXBrw5:bKeyDown := { | nKey | IF( nKey = 27, MarcaParc( (_cNomArq)->TMP_VEND, (_cNomArq)->TMP_PARC, @nSomaNumParcelas, @nSomaValOriginal, @nSomaValJuros, Recno(), @nKey ), .F. ) } O que esta acontecendo é que pressionando UMA ÚNICA vez a barra de espaço ( nKey == 32 ) está entrando duas vezes na função. Na primeira vez marca a parcela e na segunda, já que a parcela está marcada, ele desmarca.... Só consegui fazer funcionar usando o ESC ( conforme esta no código acima ), mas colocando qualquer outra tecla o xBrowse manda duas vezes para a função MarcaParc. Como posso fazer para que entre uma única vez na função? Espero ter sido claro! Att. Everton
  12. Bom dia... o Valid xGet <> VariavelX acho que pode te ajudar... ou com um OnChange chamando uma função para verificar o conteúdo..
  13. Marco, veja qual a versão do teu xHb.. Eu uso o FW 6.12 e tenho xHb 0.99.71 Será que tu não tem uma versão diferente? Pelo que lembro a 00.99.71 vem junto com o FW 6.12 free. Att. Everton
  14. Cara.. vamos fazer isso funcionar sim... Veja, eu uso o MyMake para compilar. acho que muito, muito prático. o MyMake é uma ferramenta free do Vailton. http://www.vailton.com.br/index.php/downloads/viewcategory/4-ferramentas-de-desenvolvimento Infelizmente minha experiencia com o Build.bat, não passou do segundo dia! De qualquer maneira vou dar uma olhada no meu script do MyMake e ver se encontro alguma coisa relevante. Att. Everton
  15. Ola Marco Silva.. Uso as mesmas verões tuas. Vamos tentar resolver a bronca. Vou dar uma olhada no PDF.. Pera ai! Att. Everton
  16. De fato Kleyber.. Com DBF eu uso assim if onde == 1 // aqui eu vejo qual botão foi pressionado Go Top elseif onde == 2 DBSkip(-1) if BOF() go bottom endif elseif onde == 3 DBSkip(1) if EOF() go Top endif elseif onde == 4 Go Bottom endif Carrego as variáveis e dou um refresh. Isso é o ideal. No cadastro de clientes, por exemplo, navegar pelos registros não é usado, mesmo porque eu tenho um F2 que abre um browse com todos os clientes, ai o usuário acha quem ele quiser. Mas no cadastro de produtos a história é outra.. muitas vezes a pessoa que cadastra os itens, altera preços e faz outras correções nos produtos, precisa ver os últimos itens que foram cadastrados.. ai opta pelo menu de navegação que tenho no cadastro... Aqui sim preciso disponibilizar esta navegação Att. Everton
  17. Bom dia João... Então o vetor vai conter todo o conteúdo da tabela, não importando quantos registros eu tenha??? Att. Everton
  18. Bom dia Kleyber. Eu assumo os valores nas variáveis a dou um refresh nos gets.. Numa Dialog! Att. Everton
  19. Olha.. vou contar uma coisa. Eu estava com problema na hora de compilar. Uso o MyMake para compilar e demorava em média uns 4 minutos, mas se eu acessasse a CEF começava a demorar uns 8 minutos, quando não travava a compilação e eu tinha que resetar o note. Voltava então ao normal, coisa de 4 ou 5 minutos para compilar. Há alguns dias atras resolvi por fim a esta coisa e comecei a desinstalar tudo que tinha da Gas do meu note. Resultado.. Antes eu compilava em 4 ou 5 minutos e achava que estava bom.. hoje, depois de tudo desinstalado, o tempo de compilar caiu para 35 SEGUNDOS!!!!!! Um programinha que fiz para testar os comandos SQL leva uns 4 segundos para compilar!!! Att. Everton
  20. Boa tarde amigo.. Continuando com minhas duvidas no SQL, gostaria de saber como faço para passar de um registro para outro. Explico melhor. Tenho nas minhas janelas de cadastro botões que levam o usuário ao primeiro registro da tabela, para o próximo, para o anterior e para o último registro. Como eu uso comandos DBF o Gotop, dbSkip(+1), DbSkip(-1), Gobottom resolvem meu problema. Usando o SqlArray(), da SqlLib, peguei os dados da tabela... sei que usando o "where codigocliente = '12345678'" eu seleciono só um registro, mas como faço pra navegar pelos registros da tabela?? Att. Everton
  21. Faltava o commit e o refresh João.. Obrigado!
  22. Ola brother.. na SqlLib é SQLRefresh() Acabei de decobrir! Faltava duas coisas o Commit e o Refresh. Obrigado
  23. Bom dia pessoal... Obrigado a todos pelas dicas. Ta funcionando. To com uma dificuldade na atualização da tabela que só aparece o registro ( no WorkBench ) após fechar o programa ( que só tem um cadastro simples, por hora ) Mas vou ver o manual da SLQLIB. Att. Everton
×
×
  • Create New...