Notifications
Clear all

banco de dados em locais diferentes

9 Posts
2 Usuários
0 Reactions
2,007 Visualizações
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Salve a todos,

O pouco que sei aprendi aqui neste forum com a ajuda de algumas pessoas, muita coisa construi copiando de projetos prontos, so fiz adaptações e ai esta meu problema, tem coisas que tenho funcionando mas não entendo ainda o funcionamento.
Meu projeto principal tem um banco de dados que para rodar tem que estar sempre na mesma pasta do projeto, gostaria de entender e aprender como deslocar este banco de dados para outras pastas da maquina e tambem como disponibilizar em rede para outras maquinas.

Estudando meu projeto, entendi que o responsavel pela ligação e esta rotina aqui certo???

Private Function PreecheRecordSet1(ByVal RazaoSocial As String, _
ByVal CNPJ As String, _
ByVal Endereço As String, _
ByVal Numero As String, _
ByVal Telefone As String, _
ByVal Contato As String) As Recordset
On Error GoTo TrataErro

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
Dim sqlWhere As String
Dim sqlOrderBy As String
Dim i As Integer
Dim campo As Field
Dim myArray() As Variant

Set conn = New ADODB.Connection
With conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.ConnectionString = "Data Source=" & caminhoArquivoDados & ";Extended Properties=Excel 8.0;"
.Open
End With

sql = "SELECT * FROM [BDClientes$]"

'faz a união da string SQL com a cláusula ORDER BY
If cboOrdenarPor.ListIndex <> -1 Then
sqlOrderBy = " ORDER BY " & cboOrdenarPor.List(cboOrdenarPor.ListIndex, 0)
'define a direção
Select Case cboDirecao.ListIndex
Case Ascendente
sqlOrderBy = sqlOrderBy & " ASC"
Case Descendente
sqlOrderBy = sqlOrderBy & " DESC"
End Select
'une a query order ao sql
sql = sql & sqlOrderBy
End If

Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
With rst
.ActiveConnection = conn
.Open sql, conn, adOpenForwardOnly, _
adLockBatchOptimistic
End With

Set rst.ActiveConnection = Nothing

' Fecha a conexão.
conn.Close

Set PreecheRecordSet1 = rst
Exit Function
TrataErro:
Set rst = Nothing
End Function

Então, para começar, como faço para deixar o banco de dados em outra partiçao na minha maquina por exemplo ???

O Reinaldo e o Mauro sempre me indicão links dos assuntos, confesso que pesquisei na net e não cheguei a nada que fosse bem isso.

Obrigado ao forum mais uma vez.

 
Postado : 24/01/2013 12:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pelo trecho do codigo, a digamos "configuração" do local onde está ancorado o BD,e dada por essa linha, mais precisamente pela variavel em destaque:

.ConnectionString = "Data Source=" & caminhoArquivoDados & ";Extended Properties=Excel 8.0;"

Então localize onde é feita a definição dessa variavel e experimente altera-lá

 
Postado : 24/01/2013 12:37 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Esta nesta rotina certo ???

Private Sub DefinePlanilhaDados()
    Dim wb As Workbook
    Dim caminhoCompleto As String
    Dim ARQUIVO_DADOS As String
    Dim PASTA_DADOS As String
    
    ThisWorkbook.Activate
    
    ARQUIVO_DADOS = Range("ARQUIVO_DADOS").Value
    PASTA_DADOS = Range("PASTA_DADOS").Value
    
    If ThisWorkbook.Name <> ARQUIVO_DADOS Then
        'monta a string do caminho completo
        If PASTA_DADOS = vbNullString Or PASTA_DADOS = "" Then
            [color=#FF0000]caminhoCompleto = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, vbNullString) & ARQUIVO_DADOS[/color]
        Else
            If Right(PASTA_DADOS, 1) = "" Then
                caminhoCompleto = PASTA_DADOS & ARQUIVO_DADOS
            Else
                caminhoCompleto = PASTA_DADOS & "" & ARQUIVO_DADOS
            End If
        End If
    End If
    
    caminhoArquivoDados = caminhoCompleto
    
End Sub

Joguei la o banco de dados em D:, mas não consegui refazer a string...

 
Postado : 24/01/2013 4:48 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A Rotina é esta mesma, só precisa verificar se digitou corretamente no Range Nomeado : "PASTA_DADOS".

Veja mais detalhes no çink abaixo:
Modelo Cadastro V3 - Adaptações
http://www.tomasvasquez.com.br/forum/vi ... QHb9h0mfQQ

[]s

 
Postado : 24/01/2013 8:11 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Fala mestre Mauro,

Olha, estou lendo sobre o assunto faz algum tempo, mas ta difícil entrar na cabeça, fiz esta alteração, mas então esta faltando mais alguma coisa ???

caminhoCompleto = "data sourse=D:Pasta1ModeloCadastro_Dados.xls, vbNullString) & ARQUIVO_DADOS"

 
Postado : 24/01/2013 8:42 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Você tem de colocar o caminho no no Range Nomeado : "PASTA_DADOS", e não direto na rotina.

Se ler atentamente está bem explicado nesta parte do link que passei.

Algumas das duvidas e confusões que percebi em alguns Modelos adaptados, é que como no Modelo Cadastro V3 utiliza dois Arquivos, e na Pasta Front_End temos dois Ranges Nomeados referentes ao Caminho e Nome do Arquivo, e esses nomes estão definidos como PASTA_DADOS e ARQUIVO_DADOS, aonde o primeiro, PASTA, não se refere ao nome da pasta em questão e sim o Local, Caminho em que se encontra o ARQUIVO_DADOS(ModeloCadastro_Dados.xls) e o segundo, o Nome do Arquivo.

Se todas as variaveis estiverem declaradas corretamente, não é para dar erro quanto a rotina.

[]s

 
Postado : 24/01/2013 8:50 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

ARQUIVO_DADOS = Range("ARQUIVO_DADOS").Value
PASTA_DADOS = Range("D:Pasta1ModeloCadastro_Dados.xls").Value

Se é que entendi seria isto ???
PASTA_DADOS esta para o caminho onde esta o arquivo, mas da falha no método range,

 
Postado : 24/01/2013 9:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O arquivo está preparado para "pegar" o caminho e/ou nome do banco de dados diretamente da planilha; sem necessidade de alterações no codigo.

No modelo V3, que foi utilizado como sua base inicial de desenvolvimento, existe uma "aba" de nome Configurações"; nessa aba na celula B1 (Nomeada como PASTA_DADOS) é definido o "local" onde está a planilha de Banco de Dados, quando sem dados o codigo "entende" que essa planilha esteja junto com a planilha do projeto(Frond_End).

Então para alterar o local onde está(estará) a planilha de Banco de Dados, digite nessa celula por exemplo : D: ; significa "dizer" ao aplicativo que o Banco de Dados está arquivado no drive D dae seu equipamento.
Na celula B2 (na mesma aba configurações) nomeada como ARQUIVO_DADOS; já "vem" pré preenchida com o nome da planilha de Banco de Dados : "ModeloCadastro_Dados.xls";
se quiser utilizar esse banco com outra denominação basta alterar nessa celula.

 
Postado : 25/01/2013 5:27 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Bom dia Reinaldo,

demorou mas entendi, e o Mauro dizia que não estava na estrutura da rotina, mas não conseguia entender aonde encontrar as ranges.
Desculpe a ignorância Reinaldo, mas só agora consiguo entender a rotina DefinePlanihados.

Obrigado pela aula e pela paciência dos Senhores mais uma vez.

 
Postado : 25/01/2013 9:12 am