Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

excel e macro, cria e controla um banco de dados[RESOLVIDO]

Discussões principalmente sobre SQL e outros problemas relativos a bancos de dados, relacionais ou não
Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Seg Jul 13, 2015 10:41 pm

Sobre o MySQL já tinha lido, e caso se queira usar a versão gratuita comercialmente tem que passar o codigo de seu projeto, assim como outros que vi
por isso mesmo a escolha pelo Postgree que tem um tipo de licença livre até para distribuição junto de projeto comercial

Lógica de Programação, provavelmente já tenho as bases

Programação Orientada a Objetos, esse para mim é o maior desafio,
pelo que vi o proprio ADO que é necessário para conectar ao banco de dados é em cima de disso, então não tem nem como fugir.
para mim o problema é lembrar os nomes das funções, normalmente eu faço as mesmas coisas usando projetos proprios e nomes que eu lembre

Modelagem de Dados Relacional já tinha lido a respeito
Linguagem SQL para banco de dados não tem nem como fugir

mas como falei é tanta coisa que se quer e tão pouco tempo, mas vou aprendendo aos poucos assim como foi com o vba

o pc que montei instalei um win em um hd e vou escolher um linux para instalar em outro por motivos de comparação
vou dar uma olhada no vb6, apesar de achar que é a mesma coisa do basic

Tenho que sair do vicio de macros de deslocamento, já fiz tantos tipos quue devo ter até algum que deita os dados e ainda coloca para dormir :P



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Sex Jul 31, 2015 1:47 pm

Ola
acabei dando uma parada no aprendizado
mas é pq estou tentando fazer uma adequação na minha planilha e adicionar outras coisas

agora estou agarrado com matemática básica,
fiz um filtro que pega valores específicos de qualquer parte da pasta de trabalho

mas não estou conseguindo fazer a totalização dos resultados,
e pior que não sei nem por onde começar

mas assim que resolver a questão volto para o banco de dados

até.



Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Sáb Ago 22, 2015 2:09 am

estou tentando entender o funcionamento de arrays no postgresql para poder tentar migrar minhas aplicações

mas é bem confuso
como falei quero usar o banco de dados para otimizar e proteger o meu projeto
o escel seria apenas de interface o controle podendo conter dados recentes de comparação e informação
provavelmente o postgresql uma senha para uso e outra de administrador "nem sei ainda".

mas a abordagem do funcionamento das funções são um tanto confusas
ao mesmo tempo estou tentando entender os dados da bolsa para montar o banco de dados para testar a aplicação



Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1117
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Bragança Paulista - SP

Re: excel e macro que cria e controla um banco de dados

Mensagem por Mikel Silveira Fraga » Sáb Ago 22, 2015 8:09 pm

Edcronos, boa noite.

Cara, bem interessante esse projeto que esta tentando fazer e é isso mesmo, tentando que se aprende.

Realmente nunca trabalhei com o Postgree SQL, mas a base de funcionamento é a mesma do MySQL e SQL Server.

Em relação as funções do Sql, eu já postei aqui e volto a indicar o Curso SQL Completo da Softblue. Fiz o curso e é excelente, além de ser gratuito.

Ainda quero pegar o Postgree SQL para testar. Fazer uma análise de desempenho dele (local, rede intranet e remoto/internet), velocidade de resposta e todo o resto. Quando comprar o Raspberry Pi, vou instalar junto do Linux e ver como se comporta.

Bem cara, tenha um excelente final de semana por ai e se cuida. Conversamos mais durante a semana.


Gostou da dica? Clique no JOIA no topo da mensagem.
Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Orientações sobre o fórum, acesse aqui.

Mikel Silveira Fraga
E-mail: mikel-sf@hotmail.com | Skype: mikelsf | Linked In

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Sáb Ago 22, 2015 9:10 pm

Cara o problema é conciliar o aprendizado de nova ferramenta e as varias ideias para aplicar na planilha
para ter ideia eu nunca tinha usado o listbox
e fui fazer um formulario para visualizar outras areas e outros dados da planilha
e como falei a planilha é toda dinâmica então eu tinha que ajustar o tamanho da userform de manira automática de acordo com a quantidade de colunas largura delas e se estava ou não visível
fiz mas achei o listbox muito chocho
pensei no listview mas como era somente para visualizar acabei usando caixa de imagem e captura de range e formatação condicional que já tem na planilha para melhorar o visual

e sabe como é, ideia puxa ideia e acabei adicionando uma busca de valores no setor escolhido e setas para navegar no setor com varredura por cod ou por valor, daí adicionei outra caixa de imagem para visualizar outro setor e area que esteja relacionado

Código: Selecionar todos


Private Sub Ti_Num_Change()
Inicio
    If Cod_Num.Value <> "" Then
        Call SetorL(sety_ory.Value, Plan_Ory.Value)
        ldd = (Cells(Rows.Count, Ti).End(xlUp).Row - Cells(Rows.Count, Ti).End(xlUp).Value) + Sort_Num.Value
        Cells(5, Cd).Value2 = Cells(ldd, Cd).Value2
        cwid = 120
        For c = Cells(1, Ti).Column To Cells(1, Fc).Column
            If Columns(c).Hidden = False Then cwid = cwid + (Columns(c).Width * 1.2)
        Next
          Final
        Call insereimagem(Me.Image1, Sheets(Plan_Ory.Value).Range(Ti & ldd - 3 & ":" & Fc & ldd + 3))
        If fsdfdsf.Value <> "" Then
        Inicio
            Call SetorL(fsdfdsf.Value, Plan_Ory.Value)

            For c = Cells(1, Ti).Column To Cells(1, Fc).Column
                If Columns(c).Hidden = False Then cwid = cwid + (Columns(c).Width * 1.2)
            Next
            Lista_Busca.Width = cwid '* 1.2
            Final
            Call insereimagem(Me.Image2, Sheets(Plan_Ory.Value).Range(Ti & ldd - 3 & ":" & Fc & ldd + 3))
            
        End If
        Me.Image2.Left = 114 + Me.Image1.Width + 3
    End If

End Sub
como a caixa de imagem tem a opção de se auto ajustar precisei apenas me preocupar com a userfor

e para colocar a range nas caixas de imagem fiz essa macro

Código: Selecionar todos

Private Sub insereimagem(Objet As Object, Rango As Range)

    Dim PLt As Worksheet
    Rango.CopyPicture xlScreen, xlBitmap
    Set PLt = Rango.Worksheet
    With PLt.ChartObjects.Add(0, 0, Rango.Width, Rango.Height)
        .Chart.Paste
        .Chart.Export ThisWorkbook.Path & "\imagew.gif"
        .Delete
    End With
    Objet.Picture = LoadPicture(ThisWorkbook.Path & "\imagew.gif")
End Sub
esse pode servir para outras pessoas já que funciona por referencia tanto da range como do objeto "caixa de imagem"
a busca de valores eu embuti nos controles de navegação

depois disso tudo achei muito lento e estou fazendo uma macro para subdividir a aba por linhas para listar os dados que se quer



Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Dom Ago 23, 2015 12:40 am

acho que não vou poder trabalhar com o banco de dados do jeito que eu quero
isso pq não entendi o funcionamento dos array's
e eu gosto de varrer a array do meu jeito
tipo essa macro que organiza os setores por valor crescente, decrescente ou desloca apenas as linha que tenha certo valor

Código: Selecionar todos


Sub OrdenaARRAY(ByVal cres1_decre2 As Byte, Optional ByVal Valor_vai_esqueda As Variant)
    Dim a As Variant, b As Variant, inC As Long, i As Long, Ci1 As Long, Cf1 As Long
    func = cres1_decre2
    If Limit = 1 Then Exit Sub
    If Valor_vai_esqueda <> "" Then X = Valor_vai_esqueda * 1

    Lfim = UBound(ColunO, 1): TCo = UBound(ColunO, 2)
    Ci1 = 4    ' coluna inicial de dados da array

    '-------------------------------------------------------------------------(inicio do loop )
    If func > 2 Then
        For L = 1 To Lfim
            If func = 3 Then    ' ---<<----( ORDEM POR VALOR X)---0
                Cx = Ci1
                For i = Ci1 To TCo
                    a = ColunO(L, i)
                    If a = X Then Cx = i
                Next
            End If
            If func = 4 Then    ' ---<<----( ORDEM CRECENTE )---0
                Y = ColunO(L, Ci1)
                Cx = Ci1
                For i = Ci1 + 1 To TCo
                    a = ColunO(L, i)
                    If a < Y Then Y = a: Cx = i
                Next
            End If

            If Cx > 4 Then
                For QL = 1 To Cx - Ci1
                    a = ColunO(L, Ci1)
                    For cl = Ci1 To TCo - 1
                        ColunO(L, cl) = ColunO(L, cl + 1)
                    Next
                    ColunO(L, TCo) = a
                Next
            End If
        Next
    End If
    '-------------------------------------------------------------------------------------------------

    If func = 1 Then    ' ---<<----( ordena valor Crescente)---0
        For lx = 1 To Lfim
            inC = Ci1:
            i = inC + 1
            Do
                a = ColunO(lx, inC): b = ColunO(lx, inC + 1)
                If a > b Then
                    ColunO(lx, inC) = b: c = a
                    ColunO(lx, inC + 1) = c
                    If inC > Ci1 Then inC = inC - 1
                Else
                    inC = i: i = i + 1
                End If
            Loop Until inC = TCo
        Next
    End If
    '----------------------------------------------------------------------------------------------------


End Sub
fora os filtros, junção e desmembramento de setores, comparações, deslocamentos ...

para mim varrer o array por linhas e colunas "Array(Linha,Coluna,Plano)"
é muito mais logico do que usar comandos já prontos



Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Sex Ago 28, 2015 8:12 pm

busquei mas a maqueira que eu sei e gosto de trabalhar com arrays pelo visto não é possível,
isso pq acho que é tudo voltado a objetos
mas vou implementar o banco de dados e nele apenas colocar filtragem padrão para trazer os dados para a planilha
com o tempo vou pegando o jeito. "antes de morrer eu disponibilizo o projeto, ( isso se descobrir quando vai ser :P)"

Achei algo aqui que pode ser interessante para alguma pessoas
https://support.office.com/en-za/articl ... n-ZA&ad=ZA
https://geotecnologias.wordpress.com/20 ... -to-excel/



Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1117
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Bragança Paulista - SP

Re: excel e macro que cria e controla um banco de dados

Mensagem por Mikel Silveira Fraga » Sáb Ago 29, 2015 7:54 pm

Boa noite Edcronos, blz.

O primeiro link que você postou é bem interessante, mas ele é limitado ao uso do Office 2013, já que o Power Query é uma ferramenta exclusivo desta versão.

Agora, o trabalho de conexão com o Postgree SQL, utilizando o Driver ODBC, é excelente pra qualquer tipo de situação, já que o processo padrão de conexão é muito parecido com demais bancos.

Cara, você comentou anteriormente sobre a dificuldade de entendimento das funções do SQL. Eu te digo uma coisa: a vantagem de se trabalhar com ele é otimização de comandos, tanto em termos de escrita de código, como desempenho e velocidade dos comandos.

Outra coisa que costumo a dizer, o ta o próprio Tomas como exemplo, esse desenvolvimento de Excel e VBA é um passo inicial para futuros programadores em outras áreas, seja VB.Net, C#/C++, Delphi, Asp.Net, Java, etc. SQL é padrão para ser utilizado com bancos de dados, e banco de dados são fundamentais para qualquer outra linguagem de programação.

Em resumo, foque não apenas em ser bom no VBA, mas foque em melhorar sempre seu conhecimento, por menor que pareça.

Excelente final de semana e bons estudos!!!!


Gostou da dica? Clique no JOIA no topo da mensagem.
Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Orientações sobre o fórum, acesse aqui.

Mikel Silveira Fraga
E-mail: mikel-sf@hotmail.com | Skype: mikelsf | Linked In

Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

Re: excel e macro que cria e controla um banco de dados

Mensagem por Edcronos » Sáb Ago 29, 2015 8:04 pm

sofri tentando achar a maneira certa de conectar ao banco de dados
e pelos foruns afora cada um conseguiu de uma maneira diferente

primeiro segui os passos do site
https://geotecnologias.wordpress.com/20 ... -to-excel/
para instar o driver ODBC para PostgreSQL

o odbcad32.exe tem tanto no
C:\Windows\System32
como tem no
C:\Windows\SysWOW64
mas em SysWOW64 o odbcad32 lista outras coisas até do próprio office, isso leva a crer que é o local padrão
com isso o excel é capaz de se conectar ao banco de dados e importar as tabelas

mas no vba é que foi dificil, cada lugar informa uma maneira diferente
apesar de estar com um pc para servidor já montado como iniciante eu fui na configuração que mais se encontra pela net

eu tive que testar um por um e tentar minhas próprias maneiras até conseguir me conectar ao banco

para a instalação com configuração padrão do postgres
cn.Open "Driver={PostgreSQL Unicode};Dsn=my_system_dsn;Server=localhost;port=5432;
a parte em vermelho foi crucial e a mais difícil e cada lugar informa de maneira diferente tentei até usar referencia oledb

Código: Selecionar todos

Dim cn As ADODB.Connection
Dim cmd As ADODB.Command, RS As ADODB.Recordset


Sub conecta_sql()
    Set cn = New ADODB.Connection
    cn.Open "Driver={PostgreSQL Unicode};Dsn=my_system_dsn;Server=localhost;port=5432;" & _
     "Database=postgres;" & _
     "Uid=postgres;" & _
     "Pwd=senha"
End Sub

Código: Selecionar todos

Sub desconecta_sql()
cn.Close
End Sub
Uid=postgres é o usuário padrão na instalação
Database=postgres é um banco de dados padrão criado na instalação do postgres , eu criei um com nome "teste" pelo pgAdmin do postgres e a conexão tbm foi legal

não sei se esse tipo de drive e conexão vai permitir criar e editar o banco, mas agora que consegui pelo menos me conectar posso dar um passo adiante


Edit:
como sempre...
depois de uma luta danada tentando fazer funcionar e nada do que se acha dar certo
e depois conseguir por conta própria, vai e aparece um site com algo funcional...
e ainda com um extra para outros bancos de dados
http://pragmateek.com/using-an-access-m ... -from-vba/



Edcronos
Manda bem
Manda bem
Mensagens: 122
Registrado em: Qua Abr 02, 2014 2:23 am

excel e macro, cria e controla um banco de dados[RESOLVIDO]

Mensagem por Edcronos » Dom Ago 30, 2015 4:01 am

Depois de uns testes creio que o topico está resolvido

1º instalar o driver ODBC para PostgreSQL
é só seguir o tutorial da pagina
https://geotecnologias.wordpress.com/20 ... -to-excel/

para conectar algo assim

Código: Selecionar todos

Dim cn As ADODB.Connection


Sub Conecta_Banco(Optional ByVal Nome_banco As String, Optional ByVal Nome_usuario As String, Optional ByVal Senha_Usuario As String)
    If Nome_banco = "" Then Nome_banco = "postgres"
    If Nome_usuario = "" Then Nome_usuario = "postgres"
    If Senha_Usuario = "" Then Senha_Usuario = "a1b2c3"
    
    Set Cn = New ADODB.Connection
    dbConnectStr = "Driver={PostgreSQL Unicode};Dsn=my_system_dsn;Server=localhost;port=5432;" & _
            "Database=" & Nome_banco & _
            ";Uid=" & Nome_usuario & _
            ";Pwd=" & Senha_Usuario
    Cn.Open dbConnectStr
End Sub
para criar novo usuario e senha algo assim

Código: Selecionar todos

Sub Criar_Usuario_SQL(ByVal Nome_usuario As String, Optional ByVal Senha_Usuario As String)
    If Nome_usuario <> "" Then
        If Cn Is Nothing Then Conecta_Banco
        Cn.Execute "CREATE ROLE " & Nome_usuario & " LOGIN PASSWORD " & "'" & Senha_Usuario & "'" & ";"
    End If
End Sub
para criar novo banco algo assim

Código: Selecionar todos

Sub Criar_banco(Optional ByVal Nome_banco As String, Optional ByVal Nome_usuario As String, Optional ByVal Senha_Usuario As String)
    If Nome_banco = "" Then Exit Sub
    If Cn Is Nothing Then Conecta_Banco
    Cn.Execute "CREATE Database " & Nome_banco & " OWNER " & Nome_usuario
End Sub
como pode ver daí para frente é só usar os comandos do SQL,
para isso se tem varios tutoriais pela net
Mikel Silveira Fraga indicou ótimas video aulas "infelizmente para mim não serve (para mim somente escrito)"

claro que sem esquecer o esforço próprio e tbm da imaginação.

Att.



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder