Jump to content
Fivewin Brasil

ram_bh

Membros
  • Posts

    285
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by ram_bh

  1. Bom dia!

    Quero criar uma barra de botões, inicialmente usando a ButtonBar, mas com alguns botões alinhados à direita e outros à esquerda da Dialog / Window.

    É possível isso através de uma ButtonBar ou preciso criar os botões na própria Dialog / Window e já definir as posições dos botões?

    Fui claro ou está complicado!? Alguma sugestão?

    Obrigado!

    Rodrigo Melo

  2. JM Silva, bom dia!

    Tudo bem?

    A minha dúvida, e também preocupação, é em relação ao desempenho do sistema ao carregar uma matriz com um grande volume de dados. No caso desse projeto, tenho tabelas com mais de 500.000 registros.

    Resolvi criar uma View no BD de acordo com o Select que será executado para exibir no xBrowse. E, a partir dessa View, faço o filtro para a matriz do xBrowse.

    Ficou muito bom e rápido.

    E citando a famosa frase: "A César o que é de César" deixar o BD trabalhar "Ao banco de dados o que é do banco de dados".

    Obrigado e um abraço!

    Rodrigo Melo

    PS: Você evoluiu com a classe para acesso ao Firebird?

     

  3. Boa tarde!

    Estou em processo de migração de DBF para SQL.

    Quando utilizo DBF, simplesmente defino para o xBrowse os campos das tabelas (sem se preocupar com o número de registros dos DBFs).

    Ao utilizar SQL, carrego numa matriz o resultado do Select para o xBrowse. Neste caso, fiquei preocupado com o limite dessa matriz para pesquisas que retornarem milhares de linhas...

    Quero saber dos nobres colegas o que utilizam / implementam nessa situação?

    Obrigado!

    Rodrigo Melo

    Belo Horizonte / MG

     

     

  4.  

    Outra forma, mais interessante:

    
    
    local oLoc,oWMI,oServ,oDatos,cRead
    
    oLoc := CreateObject( "wbemScripting.SwbemLocator" )
    oWMI := oLoc:ConnectServer()
    oServ:= oWMI:ExecQuery("Select * from Win32_Service Where started = true")
    
    cRead:=""
    For Each oDatos in oServ 
        cRead += ALLTRIM(cValToChar(oDatos:Name))+";"+CHR(13)+CHR(10)
    Next
    //msginfo(cRead)
    IF !WildMatch("*FIREBIRD*SERVER*",Upper(cRead))
       MsgStop("ativando")
       //Run ("net start FirebirdGuardianDefaultInstance") //Ativa o serviço
       Run ("net start FirebirdServerDefaultInstance") //Ativa o serviço
    Endif

    JMSilva - Caraguatatuba-SP

    Bom dia!

    Essa solução atendeu à minha demanda, obrigado!

    Um abraço!

    Rodrigo Melo

  5. JMSilva, obrigado pelo apoio.

    Mas testando aqui deparei com os erros:

    Error: Unresolved external '__endthreadex' referenced from \XH_1504\LIB\HBSQLIT3.LIB|sqlite3
    Error: Unresolved external '__beginthreadex' referenced from \XH_1504\LIB\HBSQLIT3.LIB|sqlite3

    Alguma dica? Obrigado!

    Rodrigo Melo

  6. Rochinha,

    Na verdade não estou sabendo usar esse tipo de campo.

    Eu inicializo uma variável no programa para ser usada na classe RichEdit.

    Estou usando esta mesma varável no update da tabela.... E o retorno é: 0x038CBA44 (não sei como anexar imagem).

    O procedimento de update ou insert é o mesmo para este tipo de campo em relação aos outros (varchar, integer, decimal...)?

    Obrigado!

    Rodrigo Melo

  7. Boa tarde!

    Preciso usar uma coluna do tipo BLOB para arquivar um texto formatado tipo RTF.

    Estou usando RichEdit para edição do texto. Mas o texto recuperado está todo bagunçado...

    Estou usando Firebird.

    Alguém usa e pode dar uma dica?

    Obrigado!

    Rodrigo Melo

    Belo Horizonte / MG

  8. Alain,

    Eu sempre uso da forma como o Kapiaba mostrou.

    O tamanho da fonte deve ser alterado em função do número de colunas. Eu costumo usar uma fonte sem micro espacejamento.

    Para Retrato e A4 eu uso 66 linhas por página.

    Define Font oFntPrn Name "Lucida Console" Size 0,-9 Of oPrn
    oPrn:SetPortrait() // retrato
    oPrn:SetPage(9) // A4
    nCStep := oPrn:nHorzRes() / 102 // colunas
    nRStep := oPrn:nVertRes() / 66 // linhas

    Um abraço!

    Rodrigo Melo

  9. Ana,

    Sim, é isso, mas nesse sistema, porque o desconto para vinhos é diferente do desconto para queijos e massas. Regra da empresa.

    A cada item registrado no momento da venda deve ser informado o % do desconto. Existe também a opção de informar um % de desconto após a finalização dos itens. E nesse caso, os valores são recalculados.

    Rodrigo Melo

    Belo Horizonte

  10. Bom dia!

    Em um sistema ainda em Clipper/DBF, o desconto é aplicado em cada item separadamente por causa das alíquotas dos impostos que podem ser diferentes conforme o produto ou serviço.

    Um abraço!

    Rodrigo Melo

  11. Bom dia!

    A solução pode ser de pelo menos duas maneiras no Firebird:

    1) Recuperar último valor do ID da tabela_1 e depois fazer o insert na tabela_2:

    Select Max(ID_campo) From Tabela_1

    2) Fazer insert na tabela_2 com select na tabela_1 das colunas que deseja copiar da tabela_1:

    Insert Into Tabela_2(ID_campo1, ID_campo2,outras_colunas) Values ((Select (ID_campo1, ID_campo2) From Tabela_1 Where Max(ID_campo1),outras_colunas)

    No meu caso, que estou estudando a mudança de DBF para SQL usando o Firebird, optei pela 2 opção.

    Mas existem funções em outros bancos SQL (MySQL, MariaDB, Oracle, SQL-Server e outros) que recuperam o valor da última chave sem pesquisa.

    Mas o objetivo é tentar fazer a conversão para SQL independente do banco de dados utilizado.

    Como gosto de gastronomia, construí um sistema que armazena receitas inicialmente em DBF e agora estou migrando para SQL.

    Vamos ver como vai ficar...

    Se alguém quiser ver como está ficando posso enviar uma demo...

    Obrigado e um abraço!

    Rodrigo Melo

  12. Prezados,

    Após um Insert na tabela_1 preciso fazer um Insert na tabela_2 atribuindo a uma coluna da tabela_2 com o valor de uma coluna da tabela_1 que foi gerado automaticamente após o Insert.

    Insert Into TB_um ( cod_item, des_item, qtd_item, pre_item, des_item) values (....) // aqui é gerado um valor para id_um

    Em seguida, preciso fazer outro Insert:

    Insert Into TB_dois( id_um, cod_item ) values (....) // aqui é gerado id_dois e preciso do id_um que foi gerado no insert anterior.

    Alguém para ajudar? Conseguir ser claro? Estou usando Firebird.

    Obrigado!

    Rodrigo Melo

    Belo Horizonte

  13. Luiz,

    Pode ser demora em receber o retorno do banco de dados. Isso pode ocorrer por várias situações:

    1) tráfego na rede (internet);

    2) servidor com pouco recurso para o banco de dados;

    3) query consumindo muito recurso no banco de dados.

    Espero ter ajudado...

    Rodrigo Melo

×
×
  • Create New...