Jump to content
Fivewin Brasil

pauloaraujo

Membros
  • Posts

    3,110
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by pauloaraujo

  1. Bom, Parece que hoje chegamos a algum lugar. Temos um sistema muito grande em que utilizei macro a dar com o pau, tendo várias funções genéricas, onde não se sabe em que variável ou objeto está o foco. No clipper isso se resolve com o READVAR(). Só que o Linares não criou o equivalente. O erro meu e do João era fazer a comparação do número do handle do objeto no VALID. Neste caso ele retorna o número do GET seguinte, inclusive dando pau se o próximo objeto for um Button. Bastou criar um ON CHANGE que a "coisa" aclarou. Em FW, até agora, "acho" que o único jeito se substituir o querido READVAR() é comparar o handle do diálogo com o objeto em foco. Só que isso pode gerar um código imenso, mas fazer o que, né?? Pô, linares, quebra essa, vai... Imagine 200 produtos, além de ter uma função para o VALID e outra para o ON CHANGE FUNCTION MINHAFUNCAO() oCtl :=oDlg:oCtlFocus() DO CASE CASE (oCtl:hWnd = oProdu01:hWnd) // estou no get do 1º produto ....... CASE (oCtl:hWnd = oProdu02:hWnd) // estou no get do 2º produto ....... id=code>id=code>
  2. citação:OK Paulo foi pro seu e-mail. []'s id=quote>id=quote>Rogério, Notei as seguintes diferenças: 1º) Não coloquei o pipe final (|) nos registros 10, 40 e 90 2º) No final do registro 30, em vez de ||| coloque ||0,00| 3º) Não fornecer dados se eles não forem obrigatórios, como é o caso dos registros 50 e 60 50|1||||||||||||||| 60||||
  3. citação:Olá Yury estou com o mesmo problema que vc teve: o arquivo é pre-validado , mas não passa na transmissão, há o erro 1002. como você resolveu isso? []'s Formiga id=quote>id=quote>Oi Me passe o arquivo por E-mail para dar uma olhada.
  4. citação:Mas alguem saber dizer em que pé está? Fivewin 2.7 + XHarbour Build 0.99.60 + WorkShop + vLib + SqlLib + MySQL 5.0.27 + xDev Studio E-mail: Leandroptu@success.inf.br Msn: leandroptu@ada.com.br Paracatu/MG Vamos Aderir:"Retorne avisando se a dica funcionou" id=quote>id=quote>Leandro, tudo bem?? Infelizmente ACHO que este ano não haverá o encontro nos moldes anteriores. Comuniquei o pessoal em AGOSTO de que, por problemas particulares, não teria condições de ser um dos organizadores. Coincidentemente, o Zé Carlos também se manifestou da mesma forma, por motivos profissionais. Agora, nada impede de que haja o encontro informal proposto pelo João (Kapiaba) e eu apoio e estou a disposição para ajudar. Só não sei se meu fígado aguenta (hehe) Abraços
  5. citação:Oi Paulo, O que eu quis dizer foi que o índice temporario só deveria ser criado num arquivo tambem temporario, pois ai não haveria o risco de perder a integridade dos índices normalmente usados pelo arquivo. Antigamente no clipper puro havia essa recomendação que me lembro ter lido em alguns livros, talvez isso não valha mais para o xharbour. Se for assim voce está certo, sua opção é a melhor mesmo! Um abraço! Boa noite! FW 2.5/CLIPPER 5.3b, BLINKER 7 Belzonte - Minas Gerais id=quote>id=quote>Não, Tião Não há necessidade de ser em um BD auxiliar. A partir do momento que você cria o índice temporário, os registros visualizados serão somente os do índice criado, sem qualquer problemas com os de linha, DESDE QUE VOCÊ NÃO FAÇA QUALQUER INCLUSÃO OU ALTERAÇÃO. Ou seja, após fechar o índice temporário e abrir os de "linha", todas as inclusões / alterações feitas por outros usuários, entre as operações, são visíveis normalmente. Pode testar. Toda a parte de relatórios e consultas dos meus sistemas são feitas há anos desta forma, sem problemas. A velocidade é incrível diante dos filtros que crio e do tamanho dos BDs. Lembrando que isso serve somente para consultas e relatórios com BD`s e filtros grandes, devendo fechar e deletar o índice temporário no final da operação, bem como REABRIR OS ÃNDICES DE LINHA. Um abraço Editado por - pauloaraujo on 30/09/2008 22:21:32
  6. citação:Basicamente voce teria este log apenas para uso do sistema com o ID do usuario logado, não importa se trava ou não, qualquer informação que que for incluida ou alterada, voce registra para este usuário. Oliveira, Sérgio A. PERSONAL Comp. e Sitemas.id=green> id=quote>id=quote>Sérgio, Essa tua foto tá demais... Tô igualzinho... (KKKKKKKKKKKKKKKKKKK)
  7. citação:Boa tarde! Essa última idéia ai do Paulo Araujo so ele estiver indexando no arquivo temporario, se for o arquivo de pedidos mesmo o qual é usado por todos os usuários não é legal não, voce dançaria todos os indices desse arquivo. O melhor mesmo é o copy to ou o append from Bye FW 2.5/CLIPPER 5.3b, BLINKER 7 Belzonte - Minas Gerais id=quote>id=quote>Tião, Mas é um índice temporário mesmo, destinado a estatísticas. Ou seja, 1) Criar o índice de preferência no drive C da máquina local 2) Mostrar a pesquisa 3) Deletar o índice temporário 4) Abrir os indices de linha Dependendo do período do filtro, uma pesquisa num banco de dados com 500.000.000 demora menos de 5 segundos. Um abraço Editado por - pauloaraujo on 30/09/2008 16:18:47
  8. Ale, beleza?? Vou aproveitar o tópico para pedir desculpas por não ser um dos organizadores este ano. Estou com problemas pessoais, que não vem ao caso. Acredito que seja na mesma época, ou seja, no final de novembro ou início de dezembro. O Gilmer está cuidando da logística e o Evandro da grade. No que for possível, estou dentro. Um abração citação:Gilmer, tem a previsão do dia q vai se realizar o Encontro ??? aleseribeli@hotmail.com Em Boa Vista/RR até 19/09 depois pqna temporada em Cubatão/SPid=red> id=quote>id=quote>
  9. Gente, Se for contar tudo dá um livro. Essa parece de loira: Há um bom tempo, uma cliente me liga reclamando que o nosso sistema estava impedindo de se cadastrar um cliente, dando a mensagem: Inscrição Estadual Inválida. Após obter o CNPJ do dito cujo e parar tudo o que estava fazendo, consultei o Sintegra e constatei que realmente a Inscrição Estadual era válida e era do estado do Paraná. Revisei a parte de programação e não achei nenhum erro. Liguei para a cliente e deu-se o seguinte diálogo: Eu: - Você digitou corretamente a UF do cliente ??? Ela: - Digitei sim, a empresa é do Paraná. Eu: - Não é possível, testei aquí e cadastrou normalmente. Olhe novamente e me diga a UF Ela: (já sem paciência) - Está corretíssimo, está PAid=red>, de Paraná Quase peguei um avião e fui socar a cabeça dela na parede. Francamente..... Abraços
  10. citação: citação:Leandro ....Uma Tabela quer dizer um DBF ou uma TABELA SQL ? FWh8.05 + xHB 1.1.0-CVS + BBC 5.5.1 + xDev v0.65 id=quote>id=quote>Desculpe, Tabela DBF! Fivewin 2.7 + XHarbour Build 0.99.60 + WorkShop + vLib + SqlLib + MySQL 5.0.27 + xDev Studio E-mail: Leandroptu@success.inf.br Msn: leandroptu@ada.com.br Paracatu/MG Vamos Aderir:"Retorne avisando se a dica funcionou" id=quote>id=quote>Leandro, É como o Ico mostrow() para as 2 situações. Se você conseguir abrir com exclusividade, é porque ninguém está usando o BD (exclusivo ou não). Por outro lado, se você tentou abrir de forma compartilhada e NETERR() retornou .T., é porque o BD está travado por algum outro usuário.
  11. citação:Estou utilizando FWH 7.01 e os exemplos não foram compatíveis. A unica saída que encontrei de imediato foi utilizar a função DIRECTORY() e verificar se existe algum arquivo na pasta. Caso a pasta esteja vazia, considero que a mesma não existe e então uso lMkDir("&cDRIVE\SISCOM\PASTA...") para criá-la. Se alguém souber outro jeito, por favor, posta aí pra gente. Obrigado pela colaborações. Editado por - jfaguiar on 29/07/2008 14:12:32 id=quote>id=quote> ARQTESTE="&cDRIVE\SISCOM\PASTA\TESTE.TXT" TESTE=FOPEN(ARQTESTE) WERRO=FERROR() IF WERRO=3 lMkDir("&cDRIVE\SISCOM\PASTA") ENDIF FCLOSE(TESTE) id=code>id=code> Editado por - pauloaraujo on 29/07/2008 14:22:46
  12. citação:Ola, Estou fazendo a geração de remessa do arquivo das notas modelo 1, Portaria CAT 102/07. O arquivo gerado passa no validador, sem erros, mas ao enviar para testes, da o erro 1003, Versão de layout do arquivo não está entre as versões aceitas. Uso , como manda a portaria, versao 1,00. Mas o erro deve referir-se a outra coisa. Ja conferi o layout varias vezes. Alguem ja tem alguma experiencia sobre este operação? Ricardo FW 2.4 - Clip53 - WS id=quote>id=quote>Ricardo, tudo bem?? Se você está com aquele 1º validador, que inclusive tem um ícone na área de trabalho, pode desinstalar que não é mais ele. Agora você tem que validar e transmitir diretamente no site: http://www.nfp.fazenda.sp.gov.br/aplicativos/transmissor/ A versão atual é 1.0.15 Um abraço Editado por - pauloaraujo on 25/07/2008 16:31:32
  13. Marcio, Infelizmente a coisa não é tão simples como o Gilberto mostrow(). Você terá que tratar banco a banco, ou seja, ler manuais. Por exemplo, no caso do Bradesco seria usada a função mod11_7() que o Gilberto postou, mas no final muda: digito=mod(soma,11) DO CASE CASE digito=0 RETURN("0") && sempre caracter CASE digito=1 RETURN("P") OTHE RETURN(STR(11-digito,1,0)) ENDCASE id=code>id=code>No caso do Banco do Brasil, usando também a mesma função do Gilberto, o final seria: digito=mod(soma,11) IF digito=10 RETURN("X") && sempre caracter ELSE RETURN(STR(digito,1,0)) && perceba que não subtraí de 11 ENDIF id=code>id=code>Tenho pelo menos mais umas 10 formas diferentes de se calcular o dígito verificador, ou seja, não existe receita de bolo nem para o módulo 10 ou 11, muito menos para a famosa dupla caipira CNAB e FEBRABAN. Talvez alguem tenha condições de ajudar se você especificar o Banco que você está querendo tratar. Quanto ao erro que está dando, você está tratando como se a função retornasse .T. ou .F., ou então você não está passando parâmetro algum. Mostre como você está testando. Ela retorna apenas o dígito verificador. Um abraço Editado por - pauloaraujo on 09/07/2008 16:15:26
  14. citação:Olá, Ontem fui obrigado a fazer uma prévia no forró de Curvelo. Posso garantir que quem não vier estará perdendo muito. Gente, já é amanhã. []s, Evandro G. de Paula Curvelo - MG evandro@skillnet.com.br (Escr. - na Cidade) imortal@skillnet.com.br (Res. - na Roça) FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib I PREPARATÓRIO PARA O VI ENCONTRO FIVEWIN - 05/JULHO/2008 - CURVELO - MG id=quote>id=quote>Evandrão, Por mais que eu tenha tentado, não conseguí me liberar de problemas pessoais e profissionais. Estou muito triste por não estar aí, pois sei que o evento será maravilhoso em todos os sentidos. Deixei para o último minuto do 2º Tempo na esperança de que algo mudasse, mas me "aferrei" (hehe). Abraços a todos os participantes, e tomem algumas por nós...
  15. O único problema que tenho, é que eu sempre lembro.
  16. Sérgio, Nos encontraremos no Fórum, pois também fui intimado para o mesmo dia e local. KKKKKKKKKKKKKKKKKKKK Um abraço
  17. Elementar, meu caro Watson Todo o cálculo é feito para chegar no dobro do prefixo, vezes 10000, somado com o dobro dos 4 últimos dígitos. Ao se dividir por 2, tem-se o número do telefone. O item 3 "mata" o 7. Pode tirar que o resultado é o mesmo. Foi feito só para mascarar. Ex.: prefixo: 1000 4 ultimos: 1234 1000x80=80000 80000x250=20000000 20000000+(1234x2)=20002468 20002468/2=10001234 Fui Editado por - pauloaraujo on 02/06/2008 12:49:12
  18. Henri FUNCTION MENORIDADE(XCL_ANIV) XCL_ANIV:=SUBSTR(DTOC(DATE()),4,2)+SUBSTR(DTOC(DATE()),1,2) IF ANO_MES_DIA( CTOD(XCL_ANIV) , DATE() ) RETURN( .T. ) //? "É Menor de Idade" ENDIF RETURN( .F. ) id=code>id=code>
  19. Henri Se for a função do Marllon: IF PESQIDADE( CTOD("10/01/2001") ) ? "sou menor de idade" ENDIF FUNCTION PESQIDADE(WDATA) nAno := Year(WDATA) + 18 dData := Ctod(Str(Day(WDATA))+'/'+Str(Month(WDATA))+'/'+Str(nAno,4,0)) If dData < Date() RETURN( .T. ) // menor de idade EndIf RETURN( .F. ) // maior de idade id=code>id=code> Editado por - pauloaraujo on 30/05/2008 09:17:59
  20. citação:babinha.. não precisa fazer malabarismos... some 18 ao ano de nascimento da pessoa e teste contra Date() ... se for menor... é menor!! faz isso nAno := Year(datanascimento) + 18 // compoe o resultado dData := Ctod(Str(Day(datanascimento))+'/'+Str(Month(datanascimento))+'/'+Str(nAno)) If dData < Date() // é menor EndIf id=code>id=code>[]s.. Marllon Figueiredo Analista de Sistema Porto Alegre - RS siscatsoftware@hotmail.com FWH + xHB + SQL + SQLRDD + xDevStudio id=quote>id=quote>Marllon, tudo bem?? Muito mais simples, não é?? Embora ache (não testei) que dará pau se o cara tiver nascido em 29 de fevereiro pois "+ nAno" não dará num ano bisexto, pois não é divisível por quatro. Aquela que mostrei foi criada para retornar o número de anos, meses e dias por extenso. Só fiz uma adaptação no RETURN em relação a que tenho. Na original está assim: RETURN( ALLTRIM(STR(WTOTANOS,4,0)) +" ANO(s), "+ ; ALLTRIM(STR(WTOTMESES,2,0))+" MES(es) e "+ ; ALLTRIM(STR(WTOTDIAS,2,0)) +" DIA(as)" ) id=code>id=code>Agora, perco o amigo mas não perco a piada. Tinha, inclusive, a certeza de que o Vagner não iria deixar de aproveitar a oportunidade. KKKKKKKKKKKKKKK Um abraço Editado por - pauloaraujo on 29/05/2008 21:49:21
  21. citação://-> Bem vindo. Bom trabalho. // Neste Get, Entra a Data em Que o Cliente Nasceu. REDEFINE GET aGet[024] VAR XDTNASC PICTURE "@KD 99/99/9999" ; ID 23 OF oFld:aDialogs[ 2 ] ; FONT oFont UPDATE ; COLOR CLR_HRED, CLR_HCYAN ; CURSOR oHand ; MESSAGE ( OemToAnsi( "Data de Nascimento" ) ) ; VALID CONVERTE_IDADE( DbClientes, oDlg ) // Neste Get, Mostra a Idade do Cliente/Aluno REDEFINE GET aGet[027] VAR XIDADECLI PICTURE "@k 99" ; WHEN( .F. ) ; ID 26 OF oFld:aDialogs[ 2 ] ; FONT oFont UPDATE ; COLOR CLR_HRED, CLR_HCYAN ; CURSOR oHand ; MESSAGE ( OemToAnsi( "Idade do Cliente" ) ) ; VALID CONVERTE_IDADE( DbClientes, oDlg ) ; //----------------------------------------------------------------------------- // Ideia Original do Meu Amigo Donizete(Parana) STATIC FUNCTION Converte_Idade( DbClientes, oDlg ) // LOCAL Calc_Idade // Calc_idade := 0.00 // If ! Empty( DbClientes:DtNasc ) .And. ; ( DbClientes:DtNasc ) # [ / / ] .And. ; ( DbClientes:DtNasc ) # [ / / ] Calc_Idade := INT(( Date() - CTOD( DbClientes:DtNasc ) ) / 365 ) DbClientes:Idade := LTRIM( STR( Calc_Idade ) ) oDlg:UpDate() Endif // IF Calc_Idade < 18 ? [VOCE E MENOR DE IDADE] ELSE ? [VOCE E MAIOR DE IDADE] ENDIF // RETURN( .T. ) id=code>id=code>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>Bom, Se o dono do bar usar essa função, um moleque com 17 anos, 11 meses e 27 dias vai poder encher a cara a vontade. KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK Editado por - pauloaraujo on 29/05/2008 17:30:24
  22. Amigo, Modifique a seu gosto: FUNCTION MAIN() SET DATE BRIT SET CENTURY ON IF ANO_MES_DIA( CTOD("27/08/1991") , DATE() ) ? "É Menor de Idade" ELSE ? "É Adulto" ENDIF RETURN NIL FUNC ANO_MES_DIA(WDATA1,WDATA2) IF VAL( SUBS(DTOC(WDATA2),4,2) + SUBS(DTOC(WDATA2),1,2) ) >= ; VAL( SUBS(DTOC(WDATA1),4,2) + SUBS(DTOC(WDATA1),1,2) ) WTOTANOS:= YEAR(WDATA2) - YEAR(WDATA1) WTOTMESES:=MONTH(WDATA2) - ; MONTH(WDATA1) - ; IF(DAY(WDATA2)>=DAY(WDATA1),0,1) ELSE WTOTANOS:= (YEAR(WDATA2) - YEAR(WDATA1)) - 1 WTOTMESES:=( MONTH(WDATA2)+12 ) - ; MONTH(WDATA1) - ; IF(DAY(WDATA2)>=DAY(WDATA1),0,1) ENDIF IF DAY(WDATA2) >= DAY(WDATA1) WTOTDIAS:=DAY(WDATA2)-DAY(WDATA1) ELSE IF MONTH(WDATA2)=1 WMESANT:= 12 WANOANT:= YEAR(WDATA2)-1 ELSE WMESANT:= MONTH(WDATA2)-1 WANOANT:= YEAR(WDATA2) ENDIF DO CASE CASE DAY(WDATA1)=31 DO CASE CASE WMESANT=2 IF MOD(WANOANT,4)=0 WDIAANT:=29 ELSE WDIAANT:=28 ENDIF CASE WMESANT=4 .OR. WMESANT=6 .OR. WMESANT=9 .OR. WMESANT=11 WDIAANT:=30 OTHE WDIAANT:=DAY(WDATA1) ENDCASE CASE DAY(WDATA1)=30 IF WMESANT=2 IF MOD(WANOANT,4)=0 WDIAANT:=29 ELSE WDIAANT:=28 ENDIF ELSE WDIAANT:=DAY(WDATA1) ENDIF ENDCASE WDATAANT:=CTOD( STRZERO(WDIAANT,2,0)+"/"+ ; STRZERO(WMESANT,2,0)+"/"+ ; STRZERO(WANOANT,4,0) ) WTOTDIAS:= WDATA2 - WDATAANT ENDIF ? ( ALLTRIM(STR(WTOTANOS,4,0)) +" ANO(s), "+ ; ALLTRIM(STR(WTOTMESES,2,0))+" MES(es) e "+ ; ALLTRIM(STR(WTOTDIAS,2,0)) +" DIA(as)" ) IF WTOTANOS<18 RETURN( .T. ) // menor de idade ENDIF RETURN( .F. ) // adulto id=code>id=code> Editado por - pauloaraujo on 29/05/2008 15:29:05
  23. Ricardo, tudo bem?? Tenho esse problema direto, inclusive por diferença entre a legislação dos estados de origem dos meus clientes. Num cadastro de parâmetros gerais, armazeno um número de série único para cada cliente. A partir daí vou fazendo personalizações, mas o EXE é único. Agora, estou chegando num ponto em que os novos clientes estão pedindo a mesma coisa que outros, e acaba ficando somente um " .OR. CADPARAM->VSIS="01117" Espero ter ajudado. Um abraço
  24. citação:Hehehe, Esses Span, são realmente engraçados , e que imaginação para se pegar vírus , olhem o que eu recebi Seu filha da puta! E assim que você agradece depois de tudo que fizemos por você? Dessa vez confiou demais nas suas amizades, li tudo que você escreveu no MSN e ate a minha mãe ficou indignada. Jamais acreditamos que você poderia fazer isso comigo, só te aviso uma coisa, sua sacanagem vai ter troco! Nem que seja na delegacia, lê as suas porcarias ai em baixo pra você ver o quanto você não presta. Clique aqui para baixar a conversa no RapidShare Vagner Wirts VI Encontro está chegando , não perca id=quote>id=quote>Vagnão, Essa história está mal contada. Humm..... KKKKKKKKKKKK Agora, pelos E-Mails que recebo, já tenho trocentas amantes, estou sendo traído, perdi meu CPF, Título de Eleitor, carteira de motorista, etc, estou sendo procurado pelas Polícias Federal, Civil, Militar e até Municipal, comprei o Pacaembú, o Maracanã e o Pão de Açúcar.
  25. Ico, select 2 Use Diario sHARED //*Exclusive Index on str(Conta,12,0)+dtos(DataDiario) to ContaDiario Select Diario Set Index to ContaDiario diario->(OrdDescend(,,.T.)) ORDSCOPE(0,str(Wconta,12,0)+Dtos(WDataDiario1)) ORDSCOPE(1,str(Wconta,12,0)+Dtos(WDataDiario2)) dbgotop() id=code>id=code>Entendo que conta é numérico e você esteja querendo uma conta num determinado período entre WDataDiario1 e WDataDiario2
×
×
  • Create New...