Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
excel e macro, cria e controla um banco de dados[RESOLVIDO]
Re: excel e macro que cria e controla um banco de dados
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
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
Re: excel e macro que cria e controla um banco de dados
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é.
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é.
Re: excel e macro que cria e controla um banco de dados
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
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
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: excel e macro que cria e controla um banco de dados
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.
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.
Re: excel e macro que cria e controla um banco de dados
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
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
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
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
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
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
Re: excel e macro que cria e controla um banco de dados
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
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
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
para mim varrer o array por linhas e colunas "Array(Linha,Coluna,Plano)"
é muito mais logico do que usar comandos já prontos
Re: excel e macro que cria e controla um banco de dados
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 )"
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/
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 )"
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/
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: excel e macro que cria e controla um banco de dados
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!!!!
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!!!!
Re: excel e macro que cria e controla um banco de dados
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
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/
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
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/
excel e macro, cria e controla um banco de dados[RESOLVIDO]
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
para criar novo usuario e senha algo assim
para criar novo banco algo assim
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.
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
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
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
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.