Jump to content
Fivewin Brasil

Yury

Membros
  • Posts

    873
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Yury

  1. citação:De que modo vc esta recuperando os dados da tabela no MySQL, atraves do TDATABASE e/ou abrindo as tabelas no estilo xbase ? Eu tive este problema tbm usando o TDATABASE abrindo as tabelas com SELECT dTabela, o problema esta ai ! Continuo usando o TDATABASE, mas fiz uma mudança, ao inves de confiar no comando "dtablea:Load()" criei uma função que alimenta as variaveis do TDATABASE lendo diretamente da tabela do MySQL. Por enquanto os maiores problemas que vc encontrara esta na maneira viciada de se trabalhar no estilo xbase e dbf ! id=quote>id=quote>obrigado pela resposta, mas: para fazer a leitura dos dados eu utilizo sqlArray, ou seja, faço a query novamente e mesmo assim retorna os dados desatualizados, sem as alterações feitas pela outra estação... abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  2. obrigado vailtom, complementando para quem interessar, para mudar o valor desta variável deve-se editar o arquivo my.ini (windows) ou my.cnf (Linux, acho q é isso) e colocar o valor desejado o valor default é 50 (segundos) esse tempo influencia na resposta da função RLOCK() abraços Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  3. olá amigos, ao utilizar um RLOCK() na aplicação usando o RDD MySql SQLLIB, caso já exista um bloqueio para o registro, o RLOCK() demora cerca de 10 segundos até retornar .F., indicando que o registro não poderá ser bloqueado novamente... imagino que internamente a SQLLIB esteja fazendo um SELECT * FROM WHERE sql_rowid= FOR UPDATE, ou algo assim e o retorno negativo se dê por timeout do BD gostaria de saber qual variável do MySql eu poderia setar para que este tempo seja menor, ou seja, o timeout de resposta do BD seja encurtado para que eu tenha uma resposta mais rápida do RLOCK() abraço a todos Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  4. olá amigos, ao utilizar um RLOCK() na aplicação usando o RDD MySql SQLLIB, caso já exista um bloqueio para o registro, o RLOCK() demora cerca de 10 segundos até retornar .F., indicando que o registro não poderá ser bloqueado novamente... imagino que internamente a SQLLIB esteja fazendo um SELECT * FROM WHERE sql_rowid= FOR UPDATE, ou algo assim e o retorno negativo se dê por timeout do BD gostaria de saber qual variável do MySql eu poderia setar para que este tempo seja menor, ou seja, o timeout de resposta do BD seja encurtado para que eu tenha uma resposta mais rápida do RLOCK() abraço a todos Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  5. olá amigos, para quem está trabalhando com BD MySQL utilizando SQLLIB (ou SQLRDD)... gostaria de comentários a respeito destes dois tipos de tabela (MyISAM e InnoDB), qual a mais indicada para qual situação... pesquisei a respeito de uma maneira bem simplista cheguei na conclusão de que formato InnoDB é mais indicado para tabelas que recebem muitas transações (UPDATE, INSERT, DELETE) e formato MyISAM para tabelas em que basicamente somente são realizados SELECT, com muito pouca transação... isso procede ? no aguardo de qualquer dica, comentário abraços Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  6. olá amigos, para quem está trabalhando com BD MySQL utilizando SQLLIB (ou SQLRDD)... gostaria de comentários a respeito destes dois tipos de tabela (MyISAM e InnoDB), qual a mais indicada para qual situação... pesquisei a respeito de uma maneira bem simplista cheguei na conclusão de que formato InnoDB é mais indicado para tabelas que recebem muitas transações (UPDATE, INSERT, DELETE) e formato MyISAM para tabelas em que basicamente somente são realizados SELECT, com muito pouca transação... isso procede ? no aguardo de qualquer dica, comentário abraços Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  7. muito obrigado Vailtom Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  8. olá amigos, aos que usam a SQLLIB: o FullDelete precisa ser setado na abertura de cada tabela ou uma única vez (como se fosse um SET do xHarbour) ? abraços Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say Editado por - yury on 18/05/2009 12:14:08
  9. olá amigos, aos que usam a SQLLIB: o FullDelete precisa ser setado na abertura de cada tabela ou uma única vez (como se fosse um SET do xHarbour) ? abraços Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say Editado por - yury on 18/05/2009 12:14:08
  10. Yury

    SQLLIB

    olá, tente compilar com esta versão (veja o post do AleSB) http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=15258 abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  11. ô Alê, muito grato... vamos testar aqui e depois reportamos, conforme disse o Luisão... abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  12. olá Alê, estou usando 0.99.71 + FW 8.01 abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  13. up Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  14. citação:Olá, se não puder fazer como o Evandro sugeriu, tente assim: SQLLib_ExecSql(nil,"drop table if exists NOME_DA_TABELA") id=quote>id=quote>olá Aloizio, grato pela resposta, como dropar a tabela eu sei, oq quero é garantir acesso exclusivo... citação:Olá, Isto não é preciso. Você está pensando DBF. Tente pensar SQL. Para tabelas temporárias use 'create temporary table' id=quote>id=quote> olá Evandro, grato pela resposta, mas não entendi sua colocação... oq não é preciso ? acesso exclusivo para dropar a table ? por favor, me explique abraços Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say Editado por - yury on 28/04/2009 13:50:37
  15. olá amigos imaginem que eu precise excluir uma tabela via programação para que a mesma seja recriada... como faço para garantir o acesso exclusivo desta tabela ? pode ser com comandos SQL ou com comando nativo... obrigado a todos abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  16. olá amigos imaginem que eu precise excluir uma tabela via programação para que a mesma seja recriada... como faço para garantir o acesso exclusivo desta tabela ? pode ser com comandos SQL ou com comando nativo... obrigado a todos abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  17. Yury

    Impressão

    @ 1,1 "Teste" id=code>id=code>esse código com o include 'FiveWin.ch' o compilador + a biblioteca 'entendem' que é um @ say num controle de tela... qdo converti meus sistemas para FW 1.92 eu fiz a gambiarra abaixo para não precisar mexer nos relatórios: #command @ , SAY => IMP_DOS( ,, ) FUNCTION IMP_DOS( nRow,nCol,cText ) IF oPrn#NIL oPrn:Say(nRow,nCol,cText) ELSE @ nRow,nCol SAY cText ENDIF RETURN id=code>id=code>sendo que sempre que imprimia algo criava o objeto de impressão da TDosprn como oPrn hoje não utilizo mais relatórios matriciais... abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  18. #include 'FiveWin.ch' //--------------------------------------------- Function Delete_Listbox() REQUEST DBFCDX, DESCEND, DBFFPT SET DELE ON SET EXAC ON SET ESCA ON SET CENTURY ON SET EPOCH TO 1920 SET DATE BRIT SET DECI TO 8 SETHANDLECOUNT(200) cFile='CLIENTES.DBF' DBUSEAREA(.T.,'DBFCDX',cFile,'CL',.F.) SELECT CL GO TOP DEFINE DIALOG oDlg FROM 01,01 TO 32,100 TITLE 'Clientes' @ 01,01 LISTBOX oLbx FIELDS OF oDlg SIZE 383,150 @ 12,01 BUTTON 'Excluir' SIZE 50,12 OF oDlg ACTION (xDeleteLbx(oLbx), oLbx:SetFocus()) @ 12,15 BUTTON 'Abandonar' SIZE 50,12 OF oDlg ACTION oDlg:End() ACTIVATE DIALOG oDlg CENTER close all return //--------------------------------------------- //--------------------------------------------- function xDeleteLbx(oLbx) local nReg, nRowPos:=oLbx:nRowPos DELETE SKIP +1 IF !EOF() nReg=RECNO() ENDIF GO TOP oLbx:GoTop() IF !nReg=NIL GO nReg oLbx:nRowPos=nRowPos ENDIF oLbx:Refresh() return //--------------------------------------------- id=code>id=code>Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  19. citação:Pois é Alessandro, ainda bem que ainda tem gente, que igual a mim , sem nenhum interesse financeiro, procura ajudar os outros nas suas duvidas. Com a ajuda do Sr. Antonio Linares matei a charada das cameras IP, e já esta na metade o meu novo sistema de monitoramento, que trabalha com ate 10 cameras de video, grava no HD automaticamente quando percebe algum movimento na imagem. Agora posso colocar cameras em qualquer lugar do mundo que tenha internet e controlar de dentro do meu programa. Um verdadeiro sistema de seguranca ! id=quote>id=quote>bom, muito bom... Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  20. na verdade não é limitação do txt, é limitação da variável onde está sendo armazenada o conteúdo do arquivo (:cBuffer, dentro da classe TDosPrn) no caso da TDosPrn, quem dá o "commit" que vc se refere é o :EndPage(), que grava o conteúdo total e limpa o conteúdo de :cBuffer... tem uma classe TDosPrn modificada pelo Gilmer que tem uma propriedade :lZeraBuffer que resolve isso automaticamente quando vc seta :lZeraBuffer = .T. se a sua classe TDosPrn tiver isso basta setar :lZeraBuffer = .T. para resolver... se não tiver, vc pode colocar um teste assim, antes da sua linha oPrn:Say = If Len(oPrn:cBuffer) >= 7928 ZeraBuffer(oPrn) Endif id=code>id=code> function ZeraBuffer(oPrn) oPrn:LastError := 0 IF fWrite(oPrn:hDC, oPrn:cBuffer) < len(oPrn:cBuffer) oPrn:LastError := fError() ENDIF oPrn:cBuffer := "" RETURN id=code>id=code>Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  21. grave os movimentos com conceito kardex (com data,hora, qtde e tipo do movimento) e sempre utilizando estorno,nunca correção de movimentos o saldo vc sempre deve apurar, e não gravar... desta forma imagine a situação: data hora qtde tipo saldo seq 07/04/09 14:35:00 800 Entrada 800 + 1 08/04/09 11:51:08 100 Saida 700 + 2 08/04/09 11:55:12 110 Saida 590 + 3 08/04/09 18:15:25 200 Saida 390 + 4 id=code>id=code>se errou o movimento 3, por exemplo, era uma saída de 150 e fez de 110, vc deve fazer o seguinte: crie um lançamento de estorno com 1 segundo a mais que o movimento errado e depois lance o movimento correto com 1 segundo depois, desta forma seu kardex registrará o saldo correto no momento, mas repito, sempre calcule o saldo de acordo com os movimentos, nunca grave, a não ser que seja consolidado, aí vc pode gravar movimentos de saldo... data hora qtde tipo saldo seq 07/04/09 14:35:00 800 Entrada 800 + 1 08/04/09 11:51:08 100 Saida 700 + 2 08/04/09 11:55:12 110 Saida 590 + 3 08/04/09 11:55:13 110 Entrada 700 + 4 08/04/09 11:55:14 150 Saida 550 + 5 08/04/09 18:15:25 200 Saida 350 + 6 id=code>id=code>Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  22. a função do 'on change' ou oLbx:bChange é executar um bloco de comando quando vc muda de linha... obviamente quando vc usar o scroll vertical vc vai mudar várias vezes de linha, e então a cada mudança vai executar o bloco de comando, se foi um msginfo vai repetir várias vezes... num listbox o on change serviria para atualizar um get/say que exibe a navegação por exemplo: @ 01,01 say oReg prompt 'Registro: 1/'+ALLTRIM(STR(LASTREC())) OF oDlg @ 02,01 listbox oLbx fields of oDlg size 393,200 oLbx:bChange := {|| oReg:SetText('Registro: '+; ALLTRIM(STR(RECNO())) '/'+ALLTRIM(STR(LASTREC()))) } id=code>id=code>Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  23. #include 'FiveWin.ch' //------------------------------------------------------------------------------ Function Etiqueta() aClientes={} aadd(aClientes,{'Jose Carlos' ,'Rua do Grito, 55' ,'Centro' ,'São Paulo','SP','11124-414'}) aadd(aClientes,{'Carlos Roberto' ,'Av.Central, 1201' ,'Vila Nova','Limeira' ,'SP','13001-012'}) aadd(aClientes,{'Renato Silva' ,'Rua Cascata, 54' ,'Centro' ,'São Paulo','SP','11124-414'}) aadd(aClientes,{'Jose Pedro' ,'Av.29 de Agosto, 12','Vila Veia','Leme' ,'SP','13001-012'}) aadd(aClientes,{'Antonio Carlos' ,'Rod.BR116' ,'Vila Cega','Araras' ,'SP','13001-012'}) aadd(aClientes,{'Andre Souza' ,'Av.Gatuno, 01' ,'Centro' ,'Limeira' ,'SP','13001-012'}) aadd(aClientes,{'Andre Mendes' ,'Av.7 Setembro, 102' ,'Olimpia' ,'Sta.Rita' ,'SP','12001-012'}) nLinha=1 nLinhaOld=0 nLInhaUlt=1 nColuna=1 nVez=0 oPrinter = PrintBegin('Etiqueta',.T.,.T.,,.T.) if empty(oPrinter:hDc) return endif define font oFont name 'Arial' size 0,-08 of oPrinter oPrinter:StartPage() for nn=1 to len(aClientes) if nVez=0 nColuna=1 nLinhaOld=nLinha nLinha=nLinhaUlt nVez++ else nColuna=08 nLinha=nLinhaOld nVez=0 endif oPrinter:CmSay(nLinha,nColuna+0,aClientes[nn,1],oFont,NIL,CLR_BLACK,NIL,NIL) nLinha++ oPrinter:CmSay(nLinha,nColuna+0,aClientes[nn,2],oFont,NIL,CLR_BLACK,NIL,NIL) oPrinter:CmSay(nLinha,nColuna+2.5,aClientes[nn,3],oFont,NIL,CLR_BLACK,NIL,NIL) nLinha++ oPrinter:CmSay(nLinha,nColuna+0,aClientes[nn,4],oFont,NIL,CLR_BLACK,NIL,NIL) oPrinter:CmSay(nLinha,nColuna+2.5,aClientes[nn,5],oFont,NIL,CLR_BLACK,NIL,NIL) nLinha++ oPrinter:CmSay(nLinha,nColuna+0,aClientes[nn,6],oFont,NIL,CLR_BLACK,NIL,NIL) nLinha++ nLinha++ nLinhaUlt=nLinha next oPrinter:EndPage() ENDPRINT oFont:End() return //------------------------------------------------------------------------------ id=code>id=code>Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
  24. Yury

    MsgYesNo

    utilize msgnoyes(cMsg,cTitle) id=code>id=code> citação:creio que é um 2 em algum ponto mas não consegui a sintaxe correta, estou usando assim, mas nao funcionou. id=quote>id=quote>isto aqui é para alert nOpc = ALERT(cMSG,{'Prosseguir','Retornar'},cTIT,2,"AVISOI") id=code>id=code>Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say Editado por - yury on 30/03/2009 17:55:44
  25. eu utilizo um errorsys modificado, que sempre que ocorre algum erro em tempo de execução, antes de abandonar grava um arquivo de log informando a data, hora, nome da estação, tipo do windows, nome do programa, linha do programa, arq.atual aberto, arquivos abertos, etc, etc, etc... desta forma vc consegue recuperar todas as informações referentes aos erros ocorridos, mesmo que seja uma queda de rede , por exemplo, coisa que não seria culpa do seu aplicativo... Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say
×
×
  • Create New...