Jump to content
Fivewin Brasil

Eroni

Membros
  • Posts

    561
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Eroni

  1. Eroni

    Arquivo.HRB

    Usando um arquivo HBR para cada fonte e chamando do menu funciona certinho, acabei de testar, mas a duvida que não encontrei no forum é como gerar um unico arquivo com todos os fontes, (repositorio) Abraços
  2. Boa tarde, esta solução que estou procurando a bastante tempo e nunca consegui gerar estes HRB que funcionasse satisfatoriamente, pode postar o script para compilação e linker?
  3. Bom dia, esta versão acessa mysql nativo sem precisar de outro rdd? Estou usando atualmente o SqlRdd mas to querendo mudar, mas só uso para conectar e rodar comandos, uma classe nativa seria melhor, não precisaria de tantas libs, além do mais tem o problema de a conexão cair e não conseguir gerenciar pelo sistema.
  4. Bom dia, essa TDolphin, é uma lib de terceiros? É para uso exclusivo com Mysql?
  5. Bom dia o meu tem mais de 12MB.
  6. Bom dia, até a versão 1.8 eu sei que está funcionando, porque testei as funcionalidades, mas essa ai não sei ainda, vou ler e testar.
  7. Olá, também tenho interesse, caso haja alguma viabilidade.
  8. Bom dia Daniel, estou interessado no curso, porém um ítem importante que preciso saber antecipadamente para me programar seria o local do curso. Abraço.
  9. Bom dia pessoal, acredito que este assunto é de interesse publico, alguém já poderia postar aqui sua experiência, tipo acesso a banco de dados, etc? Eu particularmente ainda estou a procura de uma solução, pois não quero iniciar em uma ferramenta para daqui a pouco sair dela, vou aguardar mais alguns meses para decidir. Abraços a todos.
  10. Consegui resolver o problema de duas assinaturas para NFSe. Se mais alguem passar por este problema e precisar, fico ao dispor.
  11. Bom dia, alguém já implementou NFSe usando xHarbour mais especificamente assinando o xml duas vezes, o rps e o lote? Abraço.
  12. Bom dia, da maneira como o seu projeto está, acredito ser dificil gerenciar base de dados grande. Eu uso uma tabela de movimento e uma tabela de saldos, esta ultima tem o codigo do produto, a data e o saldo. Os campos data e codigo do produto são chave primaria e possuem indices. Desta forma, qualquer pesquisa é instantânea independente da quantidade de registros.
  13. Eroni

    Windows 10

    Boa tarde, alguem já usa? Estou começando a usar e já notei que o timer não funciona mais, além daquela lentidão que já experimentava no 8 devido aquele problema no banco do brasil. Será que vamos ter que atualizar as ferramentas?
  14. Bom dia, estou com mesmo problema, mas aparentemente, ainda sem solução, já tentei finalizar estes programas da memoria, mas sem resultados praticos de curto prazo.
  15. Bom dia, os indices desta tabela estão projetados corretamente?
  16. Eroni

    ref xml

    Bom dia Amigo, qual o nome desta função? Ela está em alguma classe específica da NFe? Estou para iniciar a implementação da leitura do xml para dar entrada na NF de fornecedor e tenho interesse também, posso ajudar neste caso. Abraços.
  17. Bom dia. Eu. Do que precisa?
  18. Bom dia pessoal, baixei o fivedroid porém tentei de várias formas criar uma máquina virtual para testes com desenvolvimento android, porém todas sem sucesso. Alguém ai com mais experiência pode dizer como e com quais ferramentas montou ambiente de desenvolvimento? Abraços e obrigado antecipadamente.
  19. Bom dia pessoal, estou sendo pressionado por alguns clientes para migrar uma solução que já integra com o ERP de desktop para uma plataforma móvel e o fivetouch parece que seria uma solução, mas tudo que li ate agora não menciona como é feito ( ou se será ) o acesso a bancos de dados relacionais. Na minha opinião todo o resto é coisa que se pode ir melhorando aos poucos, mas o acesso a banco de dados é essencial para se iniciar o desenvolvimento de aplicações, alguém já usou e pode passar a experiência?
  20. Bom dia, os dados estão no manual do Sped, mas acredito que a parte mais dificil será criar a estrutura dos blocos, pois os dados, você conhecendo o seu sistema e lendo o manual vai ser fácil. Eu já tenho rodando, é um desenvolvimento bem complexo, se quiser me pode me adicionar no skype.
  21. Bom dia, se não resolveu ainda, recomendo nao usar o max,, mas sim combinar um SUM com um order by data DESC e com clausula LIMIT 1, desta forma a perfomance será boa.
  22. Crisvan, bom dia, acho que o fato de rodar o exe já resolveu o problema do MAP, o fato de não mostrar nada e ficar no processos do windows deve ser um problema dentro do seu main.prg, já passei por isso a muito tempo atrás mas nao lembro especificamente como resolvi, mas tenho quase certeza que é dentro do main.prg, ou então ele não está sendo o fonte principal da sua aplicação.
  23. Olá, Luiz, por acaso já tentou usar "left outer join" ao invés de simplesmente "left join" ? Porque dependendo se for junção por fora ou junção por dentro o resultado pode ser diferente caso exista registros em uma tabela e não na outra.
  24. Boa tarde, ai está o que eu uso, resumidamente: AAdd( aCampos, { "c001fili_", "c", 04, 00, " " } ) // codigo da empresa AAdd( aCampos, { "c001codi_", "c", 06, 00, " " } ) // codigo AAdd( aCampos, { "c001aliq_", "n", 18, 03, 0 } ) // % aliquota AAdd( aCampos, { "c001redu_", "n", 18, 03, 0 } ) // % de reducao AAdd( aCampos, { "c001obse_", "c", 80, 00, " " } ) // observacoes SW_ChangeStruct( "arq001", aCampos ) ******************************************************************************************* ******************************************************************************************* /* * Altera a estrutura de uma tabela */ ******************************************************************************************* ******************************************************************************************* FUNCTION SW_ChangeStruct( cTable, aNew ) LOCAL lRet := .T. LOCAL aOld LOCAL cName, cType, nDec, nCols, cNull, nLen, cStr, cAfter, cDef LOCAL nLenOld, nDecOld, a LOCAL oSql := SR_GetConnection() LOCAL cSql := "" LOCAL cStrDef,nAt,aArray cTable := Upper( cTable ) IF cTable <> NIL .AND. ValType( aNew ) == "A" .AND. Len( aNew ) > 0 DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cSql := "Select * from " + cTable + " LIMIT 1 " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cSql := "Select TOP 1 * from " + cTable CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cSql := "Select * from " + cTable + " WHERE ROWNUM < 2 " OTHERWISE ; cSql := "Select * from " + cTable ENDCASE oSql:Execute( cSql ) oSql:IniFields( .F. ) aOld := oSql:AFields cStr := "" nCols := Len( aNew ) FOR a := 1 TO nCols SysRefresh() // reapresentar os controles cName := Upper( aNew[ a, 1 ] ) cType := aNew[ a, 2 ] nLen := aNew[ a, 3 ] nDec := aNew[ a, 4 ] cStrDef := aNew[ a, 5 ] cAfter := "" cDef := "" cNull := "NOT NULL " IF Upper( cType ) <> "D" // descobrir qual a coluna a ser alterada nAt := AScan( aOld, { | x | AllTrim( Upper( x[ 1 ] ) ) == AllTrim( Upper( cName ) ) } ) IF nAt > 0 // Verificar se o tamanho e decimal dos campos foram alterados nLenOld := aOld[ nAt, 3 ] nDecOld := aOld[ nAt, 4 ] IF nLen <> nLenOld // tamanho diferente cStr += "ALTER TABLE " + cTable + " " DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " MODIFY COLUMN " + cName + " " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " ALTER COLUMN " + cName + " " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " MODIFY " + cName + " " ENDCASE DO CASE CASE Upper( cType ) == "D" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " date " ; cDef := "DEFAULT '00000000' " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " smalldatetime " ; cDef := "DEFAULT (GetDate()) " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " date " ; cDef := "DEFAULT SYSDATE " ENDCASE CASE Upper( cType ) == "N" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " double(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := IF( cStrDef <> 0, "DEFAULT "+AllTrim(Str(cStrDef)),"DEFAULT 0 " ) CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " decimal(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := "DEFAULT 0 " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " number(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := "DEFAULT 0 " ENDCASE CASE Lower( cType ) == "c" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " char(" + AllTrim( Str( nLen, 3 ) ) + ") " ; cDef := IF( Len(cStrDef) > 0, "DEFAULT '"+AllTrim(cStrDef)+"'","DEFAULT ' ' " ) CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " char(" + AllTrim( Str( nLen, 3 ) ) + ") " ; cDef := " " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " char(" + AllTrim( Str( nLen, 3 ) ) + ") " ; cDef := "DEFAULT ' ' " ENDCASE CASE Lower( cType ) == "m" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " MEDIUMBLOB " ; cDef := "" //IF( Len(cStrDef) > 0, "DEFAULT '"+AllTrim(Str(cStrDef))+"'","DEFAULT ' ' " ) CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " TEXT " ; cDef := "" CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " LONG " ; cDef := "DEFAULT ' ' " ENDCASE ENDCASE IF Upper( oSistema:cDbDriver_ ) == "ORACLE" cStr += cAfter cStr += cDef cStr += cNull cStr := Lower( cStr ) + ";" ELSE cStr += cNull cStr += cDef cStr += cAfter cStr := Lower( cStr ) + ";" ENDIF ELSE // somente verificar se o decimal é diferente IF Upper( cType ) <> "C" .AND. Upper( cType ) <> "D" // tipo char e data nao temn decimal IF nDec <> nDecOld cStr += "ALTER TABLE " + cTable + " " DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " MODIFY COLUMN " + cName + " " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " ALTER COLUMN " + cName + " " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " MODIFY " + cName + " " ENDCASE DO CASE CASE Lower( cType ) == "d" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " date " ; cDef := "DEFAULT '00000000' " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " smalldatetime " ; cDef := "DEFAULT (GetDate()) " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " date " ; cDef := "DEFAULT sysdate " ENDCASE CASE Lower( cType ) == "n" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " double(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := IF( cStrDef <> 0, "DEFAULT "+AllTrim(Str(cStrDef)),"DEFAULT 0 " ) CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " decimal(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := "DEFAULT 0 " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " NUMBER(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := "DEFAULT 0 " ENDCASE CASE Lower( cType ) == "c" cStr += " char(" + AllTrim( Str( nLen, 3 ) ) + ") " ; cDef := IF( Len(cStrDef) > 0, "DEFAULT '"+AllTrim(Str(cStrDef))+"'","DEFAULT ' ' " ) CASE Lower( cType ) == "m" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " MEDIUMBLOB " ; cDef := "" //IF( Len(cStrDef) > 0, "DEFAULT '"+AllTrim(Str(cStrDef))+"'","DEFAULT ' ' " ) CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " TEXT " ; cDef := "" CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " LONG " ; cDef := "DEFAULT ' ' " ENDCASE ENDCASE IF Upper( oSistema:cDbDriver_ ) == "ORACLE" cStr += cAfter cStr += cDef cStr += cNull cStr := Lower( cStr ) + ";" ELSE cStr += cNull cStr += cDef cStr += cAfter cStr := Lower( cStr ) + ";" ENDIF ENDIF ENDIF ENDIF ELSE // else do at > 0 //nao achou o campo, criar o campo nao encontrado cStr += "ALTER TABLE " + cTable + " " cStr += " ADD " + cName + " " IF a > 1 IF Upper( oSistema:cDbDriver_ ) == "MYSQL" cAfter := " AFTER " + aNew[ a - 1, 1 ] + " " ENDIF ENDIF DO CASE CASE Lower( cType ) == "d" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " date " ; cDef := "DEFAULT '00000000' " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " smalldatetime " ; cDef := "DEFAULT (GetDate()) " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " DATE " ; cDef := "DEFAULT SYSDATE " ENDCASE CASE Lower( cType ) == "n" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " double(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := IF( cStrDef <> 0, "DEFAULT "+AllTrim(Str(cStrDef)),"DEFAULT 0 " ) CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " decimal(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := "DEFAULT 0 " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " NUMBER(" + AllTrim( Str( nLen, 3 ) ) + "," + AllTrim( Str( nDec ) ) + ") " ; cDef := "DEFAULT 0 " ENDCASE CASE Lower( cType ) == "c" ; cStr += " char(" + AllTrim( Str( nLen ) ) + ") " ; cDef := IF( Len(cStrDef) > 0 , "DEFAULT '"+AllTrim(cStrDef)+"'","DEFAULT ' ' " ) CASE Lower( cType ) == "m" DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " MEDIUMBLOB " ; cDef := "" /* IF( Len(cStrDef) > 0, "DEFAULT '"+AllTrim(Str(cStrDef))+"'","DEFAULT ' ' " )*/ ; cNull := "" CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " TEXT " ; cDef := "" CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " LONG " ; cDef := "DEFAULT ' ' " ENDCASE ENDCASE IF Upper( oSistema:cDbDriver_ ) == "ORACLE" cStr += cAfter cStr += cDef cStr += cNull cStr := Lower( cStr ) + ";" ELSE cStr += cNull cStr += cDef cStr += cAfter cStr := Lower( cStr ) + ";" ENDIF ENDIF ELSE // se for tipo DATA // descobrir qual a coluna a ser inserida nAt := AScan( aOld, { | x | AllTrim( Upper( x[ 1 ] ) ) == AllTrim( Upper( cName ) ) } ) IF nAt = 0 //nao achou o campo, criar o campo nao encontrado cStr += "ALTER TABLE " + cTable + " " cStr += " ADD " + cName + " " IF a > 1 IF Upper( oSistema:cDbDriver_ ) == "MYSQL" cAfter := " AFTER " + aNew[ a - 1, 1 ] + " " ENDIF ENDIF DO CASE CASE Upper( oSistema:cDbDriver_ ) == "MYSQL" ; cStr += " date " ; cDef := "DEFAULT '00000000' " CASE Upper( oSistema:cDbDriver_ ) == "MSSQLSERVER" ; cStr += " smalldatetime " ; cDef := "DEFAULT (GetDate()) " CASE Upper( oSistema:cDbDriver_ ) == "ORACLE" ; cStr += " DATE " ; cDef := "DEFAULT SYSDATE " ENDCASE IF Upper( oSistema:cDbDriver_ ) == "ORACLE" cStr += cAfter cStr += cDef cStr += cNull cStr := Lower( cStr ) + ";" ELSE cStr += cNull cStr += cDef cStr += cAfter cStr := Lower( cStr ) + ";" ENDIF ENDIF ENDIF NEXT a cStr := AllTrim( cStr ) IF Len( cStr ) > 0 aArray := ListAsArray( cStr , ";" ) IF Len( aArray ) > 0 FOR a := 1 TO Len( aArray ) IF Len( aArray[ a ] ) > 0 IF ! SWExecSql( Upper(aArray[ a ]),.F. ) lRet := .F. EXIT ENDIF ENDIF NEXT a ENDIF ENDIF ENDIF RETURN( lRet )
  25. No caso de usar banco de dados relacional, existem inumeras soluções, como eu uso somente array em browsers, eu faço tudo no select, no seu caso poderia criar uma tabela temporária com o select ou então usar o array no browse.
×
×
  • Create New...