Jump to content
Fivewin Brasil

Erciley Junior

Membros
  • Posts

    599
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Erciley Junior

  1. Obrigado Sérgio........ é disso q eu to falando ^^
  2. Ter como tenho ctz q tem, pois lembro q o Luisão fez isso ake....... deixa eu ver se acho o código dakele Abusado, hauhauua
  3. Olá Sérgio..... aproveitando o tópico, como você alterou a fonte e cor da informação que está na segunda linha? Ficaria grato.
  4. oBrw:nDataLines:=2 ADD COLUMN TO XBROWSE oBrw DATA aVet[oBrw:nArrayAT,01] PICT '99,999' SIZE 060 HEADER 'Grupo' ADD COLUMN TO XBROWSE oBrw DATA aVet[oBrw:nArrayAT,02] SIZE 250 HEADER 'Descrição' ADD COLUMN TO XBROWSE oBrw DATA aVet[oBrw:nArrayAT,03]+CRLF+aVet[oBrw:nArrayAT,04] SIZE 250 HEADER 'Teste'
  5. Deu erro? Cade? ^^ Se aumentar a Altura da linha e usar CHR(13)+CHR(10) , vulgo CRLF, é pra dar certo, acredito
  6. mkyx...... outra maneira para resolver isso, seria vc colocar a execução desta função no bKeyChar da DIALOG.... tenho certeza que funcionaria. ou mantém o POG ^^
  7. quem sabe isso também não dê certo ^^ @ 150,58 COMBOBOX ogc_10 VAR sit9 ITEMS t_sit9 SIZE 100,50 OF od_cheq PIXEL VALID UDF(@SIT9) ogc_10:bKeyChar:={|a| IF( a == 13 , EVAL(ogc_10:bValid) , .T. ) } //tecla enter
  8. Olá, comprovando o que eu disse. Teste: bb01:={|| MSGINFO('OI','ATENÇÃO') , .T. } A:=1 B:={'CAMPO1','TCHUCK BABY','ECO TESTE'} DEFINE DIALOG oDlg FROM 00.0,00.0 TO 500.0,500.0 TITLE 'TESTE' @ 10.0,10.0 COMBOBOX a ITEMS b OF oDlg SIZE 80,50 VALID EVAL(bb01) ACTIVATE DIALOG oDlg e agora teste bb01:={|| MSGINFO('OI','ATENÇÃO') , .T. } A:=1 B:={'CAMPO1','TCHUCK BABY','ECO TESTE'} DEFINE DIALOG oDlg FROM 00.0,00.0 TO 500.0,500.0 TITLE 'TESTE' @ 10.0,10.0 COMBOBOX a ITEMS b OF oDlg SIZE 80,50 VALID EVAL(bb01) @ 1500,1500 BUTTON 'INVISIVEL' SIZE 10,10 OF oDlg ACTION .T. ACTIVATE DIALOG oDlg
  9. Olá...... o VALID eh executado, se eu não estiver enganado, quando o objeto perder o foco se eh o único objeto na tela, ele nunca perderá o foco, e por isso, nunca executará o VALID eh uma teoria ^^ faça uma POG para testar.......... crie um BUTTON que faça um ACTION .T. em um ponto não visível da tela ou seja, quando der ENTER ou TAB com o foco no combobox, o foco irá para o BUTTON que não está aparecendo, e o VALID será executado ^^ POG, huahuahua
  10. Isso ae, Ultraedit é o melhor dos baum ^^ Tem versão Free e paga. Editor for DOS para windows 64, estou usando o Nano.EXE.
  11. Arthur, qual o delimitador está usando? Olha o teste que fiz: clinha:="procedure DetailData2OnBeforePrint(Sender: TfrxComponent); begin IF ( CallHbFunc('PesquisaobsConsuPed',[MasterData1.DataSet.recno]) = true ) then begin //MasterDataPag1 PROCODIPRO.Visible:=False; PROMARCAPD.Visible:=False; PROUNIDADE.Visible:=False; PROQUANTID.Visible:=False; PROPRVENDA.Visible:=False; PROPRECOTO.Visible:=False; PRONOMEPRO.Left:=0; PRONOMEPRO.Width:=741; PRONOMEPRO.Height:=30; MasterData1.Height:=30; //MasterDataPag2 Memo69.Visible:=False; Memo71.Visible:=False; Memo72.Visible:=False; Memo73.Visible:=False; Memo74.Visible:=False; Memo75.Visible:=False; Memo70.Left:=0; Memo70.Width:=741; Memo70.Height:=30; MasterData2.Height:=30; end else begin PROCODIPRO.Visible:=True; PROMARCAPD.Visible:=True; PROUNIDADE.Visible:=True; PROQUANTID.Visible:=True; PROPRVENDA.Visible:=True; PROPRECOTO.Visible:=True; PRONOMEPRO.Left:=49; PRONOMEPRO.Width:=283; PRONOMEPRO.Height:=19; MasterData1.Height:=19; //MasterDataPag2 Memo69.Visible:=True; Memo71.Visible:=True; Memo72.Visible:=True; Memo73.Visible:=True; Memo74.Visible:=True; Memo75.Visible:=True; Memo70.Left:=49; Memo70.Width:=283; Memo70.Height:=19; MasterData2.Height:=19; end; end; begin end. " Assim não tem problemas ?LEN(clinha) //2817 ?clinha atoken:=hb_atokens(clinha,' ') NCONT:=0 FOR WX:=1 TO LEN(atoken) NCONT+=LEN(atoken[WX]) ?WX,LEN(atoken),atoken[WX] NEXT ?NCONT (edit: falei bobagem........ hb_atokens não procura mais que um caracter, por isso esse retorno maluco que falei, ela procura apenas a letra "p" nesse caso) Assim já tem problemas, pois aToken se transforma em um array com 3 posições, mas deveria ter apenas uma 1-vazio 2-rocedure DetailData2OnBeforePrint(Sender: TfrxCom 3-onent); begin.......... até o final do texto(repare que perdeu o "P") ?LEN(clinha) //2817 ?clinha atoken:=hb_atokens(clinha,'procedure') NCONT:=0 FOR WX:=1 TO LEN(atoken) NCONT+=LEN(atoken[WX]) ?WX,LEN(atoken),atoken[WX] NEXT ?NCONT
  12. Gibaf, escute o Emotta, ele já te respondeu. Altere apenas a linha que cria o combobox e teste. oEmp := TComboBox():New(65,55, bSetGet(nOpcEmp),aOpcEmp,140,140,oDlg,,,{|| ExistEmp() },,,.T.,,,.F.,,.F.,,,,,)
  13. FW2.6 + xHarbour 0.99.5 e FW8.01 + xHarbour 1.1 não possuem esse problema, pelo menos nunca tivemos problema com isso, mesmo trabalhando com tabelas (DBF) com mais de 670 mil registros.
  14. WHILE SPACE(02) $ cText .OR. CHR(13)+CHR(10) $ cText cText:=STRTRAN(cText , SPACE(02) , SPACE(01) ) cText:=STRTRAN(cText , CHR(13)+CHR(10) , SPACE(01) ) ENDDO
  15. Apenas para explicar como funciona e ilustrar o que foi falado: (se eu falar alguma besteira me corrijam) LOCAL cRegEx := "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})" LOCAL aDates := { "2006-9-28", ; "2006/10/1", ; "2006-123-1" } O que significa essa expressão regular (variável cRegEx) ? Vamos desmembrar a danada pra facilitar a leitura: ([0-9]{4}) = Condição 01 - Procure caracteres de 0 a 9, pegando 4 caracteres [-/] = Condição 02 - Procure o caracter - ou / ([0-9]{1,2}) = Condição 03 - Procure caracteres de 0 a 9, pegando 1 ou 2 caracteres [-/] = Condição 04 - Procure o caracter - ou / ([0-9]{1,2}) = Condição 05 - Procure caracteres de 0 a 9, pegando 1 ou 2 caracteres Vale lembrar que a expressão regular faz um AND, ou seja, se na string informada, alguma CONDIÇÃO não for satisfeita, não irá retornar, é o caso do terceiro elemento do vetor aDates. Testem no MySQL para entender melhor (mysql retorna 1 se a expressão for satisfeita, e 0 caso contrário): SELECT "2006-9-28" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; SELECT "2006/10/1" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})"; SELECT "2006-123-1" REGEXP "([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})";
  16. Pelo postado é apenas um registro..... mas é isso que você falou, tá muito bagunçado ^^ Se eu pego esse código eu ia xingar o povo daki, kkkkkkkkkkkkk (brincadeira mkyt --- ou não ^^) Abraço.
  17. Olá Valdir, bem e você? ^^ Bom, em nenhum momento eu disse que este procedimento que você acabou de citar, não deixe o processo lento, o que eu disse, é que o processamento postado pelo mkyx no "post nº1" NÃO faz isso que você citou, por isso não vejo problemas no código dele em relação ao DBCOMMIT e ao DBUNLOCK (leia atentamente o código dele, o DBCOMMIT só será executado uma única vez, apesar de ele ter deixado esse DBCOMMIT em um WHILE). É claro que nessa situação que você descreveu, tenha uma diferença enorme de performance, já constatei isso, mas não é o caso do mkyx. Leia o código dele "identado" select arq_prod arq_prod->(dbsetorder(1)) do while .t. arq_prod->(dbappend()) if !arq_prod->(NetErr()) exit endif enddo //BLOQUEOU O REGISTRO IF REGLOCK(100) replace arq_prod->data_mov with data_cx REPLACE arq_prod->hora_mov with time() REPLACE arq_prod->cod_venda with str(nume,13) REPLACE arq_prod->operador with user000 REPLACE arq_prod->saldo_atua with sda REPLACE arq_prod->custo with pcu0 REPLACE arq_prod->terminal with str(t_maq,3) replace arq_prod->estado with esta00 REPLACE arq_prod->codigo with cod REPLACE arq_prod->quantidade with qtd REPLACE arq_prod->unitario with pru REPLACE arq_prod->val_total with pt REPLACE ARQ_prod->UNIDADE WITH UNID REPLACE arq_prod->cliente with strzero(val(C_CODCLI),6) replace arq_prod->comis_av with cav REPLACE arq_prod->comis_ap with cap REPLACE arq_prod->vendedor with strZERO(codve,6) REPLACE ARQ_PROD->CAIXA WITH COD_CX REPLACE ARQ_PROD->PERIODO WITH COD_PERI REPLACE arq_prod->n_item with str(c_item,3) REPLACE ARQ_PROD->OBSERVACAO WITH "BALCAO" REPLACE ARQ_PROD->CLA_FISCAL WITH CACA01 REPLACE ARQ_PROD->SIT_TRIBUT WITH CACA02 REPLACE ARQ_PROD->POR_ICMS WITH CACA03 REPLACE ARQ_PROD->POR_IPI WITH CACA04 REPLACE ARQ_PROD->REDUCAO WITH CACA05 REPLACE ARQ_PROD->IVA_MVA WITH CACA06 REPLACE ARQ_PROD->ICMS_SUBS WITH CACA07 REPLACE ARQ_PROD->POR_PIS WITH CACA08 REPLACE ARQ_PROD->POR_COFINS WITH CACA09 REPLACE arq_prod->retorno with ret_ent REPLACE arq_prod->desc_indiv with des_inv REPLACE ARQ_PROD->RETORNO WITH RET_ENT n_reg:=arq_prod->(recno()) IF ESTA00="D" QT_DEV:=QT_DEV+1 ELSE QT_LEVA:=QT_LEVA+1 ENDIF do while .t. //SE NÃO RETORNAR ERRO = NETERR FALSE, EXECUTE "EXIT" //QUAL A NECESSIDADE DISSO ESTAR EM UM WHILE? -----> NENHUMA AO MEU VER ARQ_PROD->(dbcommit()) if !arq_prod->(NetErr()) exit endif enddo do while .t. //SE NÃO RETORNAR ERRO = NETERR FALSE, EXECUTE "EXIT" //QUAL A NECESSIDADE DISSO ESTAR EM UM WHILE? -----> NENHUMA AO MEU VER ARQ_PROD->(dbunlock()) if !arq_prod->(NetErr()) exit endif enddo ENDIF
  18. Não vi nada demais nem de errado no código dele, apesar de eu não fazer desta forma Valdir, o DBCOMMIT dele está dentro de um while, mas se NETERR não retornar "erro", é feito um EXIT, ou seja, isso não está pesando nada, além de achar desnecessário colocar isso dentro do WHILE, já q teoricamente só será executado uma única vez, digo o mesmo referente ao UNLOCK..... sei lá, acho q o erro não está aí ^^
  19. Uma DICA: para saber se um índice existe ou se uma query está usando INDEX, use o EXPLAIN antes do select EXPLAIN SELECT CODIGO,NOME FROM TABELA WHERE CODIGO = 5 Execute direto no workbench, mysql-front, prompt..... e "analise a análise" do BD ^^
  20. JUDSON, dá uma analisada nisso, fiz rapidinho, não testei, mas imagino que esteja 100% FUNCTION TESTE() LOCAL WX LOCAL cSQL LOCAL aSQL LOCAL aGrup LOCAL lBreak:=.F. LOCAL cMsg:='' cSQL:='SELECT CDGR'+; ',DESCR'+; ',PCOM'+; ' FROM GRUP ORDER BY CDGR' aGrup:=sqlArray(cSQL) IF EMPTY(aGrup) MSGALERT('Não há dados a exportar.....','') RETURN ENDIF lresult:=SQLSETCONNECTION( ConectaBaseremota ) IF !lresult MSGALERT('Não foi possível conectar na base remota.....','') RETURN ENDIF ************** BEGIN SEQUENCE ************** cSQL:='START TRANSACTION' sqlExecute(cSQL) cMsg:=SQLErrorMSG() ; IF !EMPTY(cMsg) ; BREAK ; ENDIF FOR WX:=1 TO LEN(aGrup) x_CDGR := VAL(aGrup[WX,01]) x_DESCR:=PADR(aGrup[WX,02],40) x_PCOM := VAL(aGrup[WX,03]) cSQL:='SELECT CDGR FROM siigrup WHERE CDGR = '+ANY2SQL(x_CDGR) aSQL:=sqlArray(cSQL) cMsg:=SQLErrorMSG() ; IF !EMPTY(cMsg) ; BREAK ; ENDIF IF EMPTY(aSQL) cSQL:='INSERT INTO siigrup (CDGR,DESCR,PCOM) VALUES' '(' + ANY2SQL(x_CDGR ) +; //CDGR ',' + ANY2SQL(x_DESCR) +; //DESCR ',' + ANY2SQL(x_PCOM ) +; //PCOM ')' sqlExecute(cSQL) cMsg:=SQLErrorMSG() ; IF !EMPTY(cMsg) ; BREAK ; ENDIF ELSE cSQL:='UPDATE siigrup SET DESCR = '+ANY2SQL(x_DESCR)+; ',PCOM = '+ANY2SQL(x_PCOM )+; ' WHERE CDGR = '+ANY2SQL(x_CDGR) sqlExecute(cSQL) cMsg:=SQLErrorMSG() ; IF !EMPTY(cMsg) ; BREAK ; ENDIF ENDIF NEXT ******* RECOVER ******* cSQL:='ROLLBACK' sqlExecute(cSQL) lBreak:=.T. ************ END SEQUENCE ************ IF lBreak MSGALERT('Informe a msg ao suporte...'+cMsg,'') RETURN ENDIF cSQL:='COMMIT' sqlExecute(cSQL) MSGINFO('SUCESSO','') RETURN
  21. O exemplo que postei faz exatamente isso que você citou. Cria um índice temporário em uma tabela temporária. (só faltou você ler)
  22. http://stackoverflow.com/questions/14397785/mysql-create-temporary-table-with-index-and-select
  23. Ninguém alterou a classe do MSGBAR aí do seu sistema? Veja nos eventos Onclick se está fazendo algum AEVAL no bloco bAction Negócio é ir debugando a classe.
  24. Pra falar a verdade, não entendi seu problema.... ^^
×
×
  • Create New...