Jump to content
Fivewin Brasil

Yury

Membros
  • Posts

    873
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Yury

  1. //-------------------------------------------------------------------- PROCEDURE ErrorSys() ErrorBlock( { |erro| F_ERRO(erro) } ) RETURN //-------------------------------------------------------------------- FUNCTION F_ERRO(erro) // erros 'Server has gone away' e 'Lost connection to MySQL server during query' // retorna .F. para o gerenciados de erros para que o servidor faça o auto-reconnect IF erro:genCode == 1000 RETURN .F. EndIf ... ... ... RETURN //-------------------------------------------------------------------- Olá Uma forma prática de vc tratar isso é na sua rotina de gerenciamento de erros colocar um RETURN quando ocorrer os erros de perda de conexão para que não gere erro para o usuário e nem aborte o sistema ; em vez disso ao ser feita uma nova query a conexão é restabelecida ; a menos que o serviço tenha caído ou o servidor não esteja mais disponível, mas daí não teria muito oq fazer mesmo As causas do lost conection ou server has gone away são muito variadas Depois que eu passei a tratar dessa forma melhorou 100% Uso SQLLIB, mas para SQLRDD não deve fugir muito deste conceito, basta vc verificar que código de erro que a SQLRDD retorna quando ocorre os erros no MYSQL (no caso da SQLLIB é gencode = 1000) Abraço
  2. Olá Utilize o parâmetro da TPrinter para MODAL PRINTER oPrn FROM USER PREVIEW NAME "Impressao" MODAL ou utilize a PrintBegin, acho bem mais fácil oPrinter:=PrintBegin("Impressão", .T., .T., NIL, .T.) Abraço PS: o post q vc fez ficou muito ruim de ler pois alguns caracteres especiais não ficaram corretos, antes de postar outra coisa veja se consegue corrigir isso
  3. Sérgio vc poderia utilizar a "bGotFocus" e "bLostFocus" do xBrowse, creio q daria certo, algo assim: obj:bGotFocus := {|| oBtn:Disable() } obj:bLostFocus := {|| oBtn:Enable() } abraço
  4. Olá dbBAS1 = é o banco/tabela de origem, onde os registros de clientes são cadastrados dbBAS2 = é o banco/tabela cópia, onde os registros de clientes serão copiados do banco de origem quando executar o acima cDelete:="DELETE FROM dbBAS2.tbClientes" sqlExecute(cDelete) // deleta todos os clientes da base cópia cInsert:='INSERT INTO dbBAS2.tbClientes SELECT * FROM dbBAS1.tbClientes' sqlExecute(cInsert) // copia todos os clientes da base de origem para a base cópia // é necessário que as estruturas estejam idênticas dbBAS1 = é o banco/tabela de origem, onde os registros de clientes são cadastrados dbBAS2 = é o banco/tabela cópia, onde os registros de clientes serão copiados do banco de origem quando executar o acima cDelete:="DELETE FROM dbBAS2.tbClientes" sqlExecute(cDelete) // deleta todos os clientes da base cópia cInsert:='INSERT INTO dbBAS2.tbClientes SELECT * FROM dbBAS1.tbClientes' sqlExecute(cInsert) // copia todos os clientes da base de origem para a base cópia // é necessário que as estruturas estejam idênticas Abraço
  5. Olá Vc pode criar um clipboard (área de transferência) ... DEFINE CLIPBOARD oClip OF oTela oClip:clear() oClip:setText( cValor ) ... o conteúdo da variável cValor estará disponível na área de transferência para colar onde desejar se o objeto onde vc quiser colar for manipulável vc pode usar oClip:GetText() para retornar o valor que está no clipboard e pode atribuir direto à propriedade/método Abraço
  6. Olá vc pode usar o having como disse o Evandro ou fazer sub select como disse o Eric para sub select veja o exemplo abaixo: SELECT * FROM ( SELECT CLNOME AS NOME_CLIENTE,CLCDCL AS COD_CLIENTE FROM ERCL01MS ORDER BY CLNOME) AS T1 WHERE T1.NOME_CLIENTE LIKE '%IND%' Abraço
  7. Olá private lFocoLbx1:=.F., lFocoLbx2:=.F. oLbx1:bGotFocus := {|| lFocoLbx1:=.T., lFocoLbx2:=.F. } ... oLbx2:bGotFocus := {|| lFocoLbx1:=.F., lFocoLbx2:=.T. } Abraço
  8. boa noite Vailtom excelente notícia, muito obrigado abraço
  9. boa tarde Valdir aqui nós utilizamos SQLLIB, funciona bem, mas como vc bem lembrou foi descontinuada, então não recomendo, pois vai impossibilitar vc de atualizar a versão do xHarbour e consequentemente do FW (estou utilizando atualmente FW 8.01 e xHb 1.1.0 ) a SQLRDD utiliza o mesmo conceito de simular um RDD da SQLLIB (além de possibilitar o uso de MSSQL e Oracle, a SQLLIB somente pode utilizar MySql e Postsgree) esse conceito de simular o RDD ajuda muito quem não pode converter tudo para SQL , pois vc pode continuar com os programas rodando com DBSEEK, DBUSEAREA, DBSKIP, etc... TDolphin e ADO (até onde eu conheço) não permitem que vc faça isso, tem que ser tudo por meio de querys , então para utilizar vc teria que converter todos os programas ; a vantagem é que é free, mas também não há suporte portanto, se eu fosse iniciar nesse momento um projeto para utilizar BD com FW e xHB eu escolheria a SQLRDD abraço
  10. Olá Imagino que esteja se referindo a CORRUPÇÃO DOS ÍNDICES NTX DA TABELA, correto ? se sim, poste aqui o erro que é apresentado, por exemplo: Descricao do Erro: Corruption detected Codigo de Geracao de Erro: 32 Arquivo com Erro: S:\cep\cli\msc901ms.dbf Codigo de Erro do Subsistema: 1012 Erro do Subsistema: DBFCDX abraço
  11. cNomeTabela := 'TAB_CLI' cNomeIndice := 'TAB_CLI1' cAliasTabela:= 'CLI' cExpress := 'cCidCliente' DBUSEAREA(.T.,'MySQL',cNomeTabela,cAliasTabela,.T.) DBSELECTAREA(cAliasTabela) DBCREATEINDEX(cNomeIndice,cExpress)
  12. Olá no caso de usar comandos/FUNÇÕES Clipper/xHB para criar o índice vc deve montar o índice sem utilizar funções como strzero, dtos, etc... ou seja deve ser somente campo + campo +campo, exemplo: nCodCliente + cNomeCliente outra coisa: lembre-se que vc somente consegue criar índices para TABELAS existentes, nesse caso do USE SQL vc não está criando uma tabela, somente uma instrução ; vc poderia facilmente colocar um ORDER BY na sua instrução para resolver a questão, exemplo: USE SQL "SELECT nCodCliente,cNomeCliente,cCidCliente,cUFCliente FROM TAB_CLI ORDER BY nCodCliente,cNomeCliente" ALIAS "CLI" NEW VIA "MySQL" Abraço
  13. Olá Samir então de que forma o seu EXE é contaminado pelo vírus ? Abraço
  14. Olá a forma mais básica de contágio de vírus ou código malicioso nos EXEs é o vírus adicionar o código dele junto ao código do EXE e regravar o arquivo, alterando o tamanho, data, hora, etc... do EXE sendo assim você pode alterar as permissões de gravação do arquivo EXE, desta forma o vírus não conseguirá regravar o arquivo e ele não ficará contaminado Abraço
  15. Olá http://forums.fivetechsupport.com/viewtopic.php?f=6&t=24131&p=129987&hilit=JSON#p129987 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=25879&p=141543&hilit=JSON#p141543 Abraço
  16. Olá, bom dia você tem que diminuir 1 do contador do FOR quando redimensiona o array para um tamanho menor e pode utilizar o Adel conforme a Ana falou, não precisa fazer aSize for i=1 to len(aPlano7) if aPlano7[i,9]<>0 if aPlano7[i,7]<>aPlano7[i,9] if aPlano7[i,1]='010000014' endif DelMatriz(aPlano7,i) i:=i-1 // aqui diminui um do contador endif endif next Abraço
  17. Ok, valeu João estou "encalacrado" com a questão da SQLLIB, não sei até que ponto posso atualizar o FW, pois a partir de uma determinada versão para frente (por causa do xHarbour) a SQLLIB não compila mais tem um outro post do Marcelo Ferro sobre isso, onde o Vailtom até respondeu, mas nem ele soube dizer ao certo até qual versão é compatível para os que utilizam SQLLIB: se puderem postar qual é a configuração FW e xHB que estão utilizando seria de grande ajuda para esclarecer isso Abraço e obrigado
  18. Olá João, obrigado pela resposta vi que vc com a versão FW 13.06 qual o xHarbour e bcc vc está usando pra compilar ? abraço
  19. Olá pessoal gostaria de saber até qual versão do FW é possível compilar com o xHarbour build 1.1.0 (SimpLex) & BCC 5.5.1 ? é xHarbour não comercial abraço e obrigado Yury
  20. Olá esse erro as vezes ocorre em razão de ter um refresh de tela (um msginfo, por exemplo) entre o momento que vc zera a tabela relacionada ao browse e o momento em que vc carrega um novo conteúdo, populando novamente a tabela uma dica para que não ocorra é nunca deixar a tabela vazia, veja este exemplo: aCols:= {"","< sem registros >",0,0,0} // "zere" a tabela assim ADDD( aCols , {"001" , "AAAAAAAAAAA" , 10 , 1 , 10 } ) // recarregue os dados ADDD( aCols , {"002" , "BBBBBBBBBBB" , 10 , 2 , 20 } ) ADDD( aCols , {"003" , "CCCCCCCCCCC" , 10 , 3 , 30 } ) for N:=1 TO LEN(aCols) // remova o item em branco IF EMPTY(aCols[N,1]) ADEL(aCols,N,.T.) N-- ENDIF NEXT oBrw:SetArray( aCols ) // atualizar a tabela do obejto oBrw:GoTop() oBrw:lHitBottom:=.F. oBrw:Refresh() Abraço
  21. Olá oLbx:nClrText := {|| IF(PR->PRESTQ < PR->PRESTQMIN, CLR_HRED,CLR_BLACK) } // cor da linha oLbx:nClrPane := {|| IF(PR->PRESTQ < PR->PRESTQMIN, CLR_LRED,CLR_WHITE) } // cor do fundo Abraço
  22. É exatamente em pontos em que carrega bastante informação em arrays, utilizando sqlarray da SQLLIB, por exemplo bom, por enquanto eu vou contornando com o hbgcall de qualquer forma obrigado pela atenção Abraço
  23. Olá Eduardo, boa tarde primeiramente obrigado por compartilhar a informação utilizo xHabour NÃO COMERCIAL, mas também tenho problemas eventuais com o xrealloc , que resolvo com o hbgcall sobre a solução que vc apresentou, verifiquei a lib que vc citou (optg) não está sendo compilada no meu projeto (utilizo xDev para compilar) vc apurou mais alguma informação sobre isso ? Abraço e obrigado
  24. Olá use RUN // The example executes the DIR command, directs its output into // a file and displays the result with Notepad.exe PROCEDURE Main LOCAL cCommand := "Notepad.exe files.lst" CLS ? "DIR command" RUN dir > files.lst ? "Executing Notepad.exe" RUN (cCommand) ? "Done" RETURN Abraço
  25. Olá me parece que os erros acima listados ocorrem pq está utilizando uma área diferente, por causa de "Select(xDbMov)" , pois vc está usando sem o ponteiro ( -> ) coloque na sua rotina que documenta os erros para salvar/exibir qual o ALIAS atual que está em uso e a estrutura do arquivo associado a este ALIAS (dbstruct) isso vai auxiliar vc a identificar oq está ocorrendo Abraço
×
×
  • Create New...