Publicado em janeiro, 19 2016 - 2:28 AM
|
Hi all !
Como muitos, eu venho do GAS / FATHER que são RADs que geram VB e utilizam além de SGDBs, bancos de dados do tipo Access.
Isso
posto, considerando que as ferramentas PCsoft estão em um nível
diferente, e que ao migrar temos a necessidade de tratar o legado
existente, buscamos a alternativa de, ou continuar usando arquivos MDB
ou importar os dados para arquivos HFSQL C/S ou classic.
Não existe esse exemplo nos Tutoriais da PCSoft nem nos exemplos que acompanham a ferramenta.
Dessa
maneira, como foi uma necessidade nossa, vamos compartilhar a
experiência de como fizemos para resolver essa situação da maneira como
precisávamos.
Espero que seja útil a todos. Como conectar / usar uma base de dados Access.
1 – Primeira condição O arquivo MDB não pode ter senha. 2 - Como tirar a senha de um arquivo .MDB - Você vai ter que usar o VB e gerar uma rotina para eliminar / trocar a senha do arquivo MDB
Sub ChangeDBPassword() Dim Db As Database, senha As String, nome_do_banco As String senha = "senha_do_banco_de_dados" nome_do_banco = "unidade:\caminho\nome.mdb" Set Db = OpenDatabase(nome_do_banco, True, False, dbLangGeneral & ";PWD=" & senha) Db.NewPassword senha, "" Db.Close End End Sub
3 – Depois de tirada a senha do banco, faça a conexão
O exemplo acima acontece quando você usa com senha. Sem senha acontece como abaixo:
a) Insira os dados das properties; b) Não terá senha por que você eliminou ou desabilitou a senha; c)
Após a inclusão dos dados clique no botão TEST indicado na imagem acima
e você terá a mensagem de sucesso como mostra na imagem.
Agora já está conectado, vamos pegar a estrutura dos dados.
Vá em analysis, depois em import e selecione a primeira opção, conforme indicado acima.
Vai abrir essa janela:
Clique conforme indicado e a seguir escolha
E de novo
Você terá a seguinte tela:
Selecione como indicado acima e outra vez…
Faça a sua escolha:
Ou você vai acessar os dados no formato Access ou converte passa HFSQL.
E outra vez…
Selecione as tabelas desejadas…
E outra vez…
E recebe a confirmação de que está tudo ok !
E …
Pode
acontecer de você receber um aviso de que o wizzard não consegue
estabelecer algum link entre as tabelas que ele está importando. E você
pode anotar essa informação ou copiar simplesmente para a área de
transferência e gravar em arquivo texto para verificação posterior..
Com isso você terá como exemplo…
Então está terminada a primeira parte.
Você importou a estrutura do MDB para dentro do seu sistema.
Mas
por exemplo, o objetivo é você importar os dados de arquivos MDB que
existem no cliente e que tem essa estrutura. E que você quer passar
para HFSQL por exemplo, pelo motivo que você terá maior segurança usando
um arquivo HFSQL do que um arquivo MDB e também porque o manuseio dos
dados dentro do Windev é muito mais fácil do que arquivos MDB.
Então, eu tenho a seguinte situação:
1 – Tenho uma estrutura importada de um MDB e que quero adequar para HFSQL 2
– Tenho que importar os dados dos clientes que usam o sistema atual e
que quero passar para o HFSQL que é mais prático para trabalhar.
Como voou proceder:
1 – Primeiro de tudo crio as mesmas tabelas em HFSQL ou simplesmente mudo o nome dessas e também o tipo da tabela. Como ?
Na análise procedo da seguinte maneira:
Duplo clique na tabela; Vai abrir a janela Describing the items and indexes of a data file. Aí você clica conforme indicado pela seta Vai abrir a tela Describing the data files Aí, você altera o tipo de tabela conforme indicado.
ATENÇÃO:
Mesmo
que você tenha pastas diferentes, as tabelas têm que ter nomes
diferentes. Para facilitar, pode manter os nomes e insira só um HF no
final do nome e mude o tipo para Hiperfile, Classic ou C/S. No caso do
C/s vaias ter que te o servidor para poder conectar. Vamos optar
inicialmente por Classic. Então depois de alterar o tipo, você repete a importação das tabelas, no formato MDB e mantêm o tipo da importação.
Conclusão:
Vou ter duas análises iguais, com tabelas com os mesmos campos, sendo
uma analysis com tabelas HFSQL e outra analise com tabelas do tipo OLEDB
com a conexão access.
Para evitar poluição visual, crie uma
pasta dentro da analysis, e mova todas as tabelas do OLEDB para lá
dando um nome a essa pasta, por exemplo Tab_Access.
Bom até tudo tranquilo.
Na prática eu tenho uma analise para HFSQL e outra para Access conectada a uma tabela. Mas
eu quero que essa conexão que eu tenho definida para um arquivo MDB
possa ser alterada no cliente e eu possa fazer a importação dos dados e
também os meus ajustes transformando os dados de Access para HFSQL. Então,
no cliente, não posso esquecer que, se tiver senha na base MDB eu tenho
que eliminar essa base. Faço isso executando aquela rotina que informei
lá na primeira página.
Pode fazer isso usando o comando
ExeRun(“nome_do_programa_que_tira_a_senha”)
Ok. Já exclui a senha do arquivo. Agora, tenho que trocar a conexão do arquivo definido anteriormente para o arquivo do cliente.
sBanco_Mdb is string = fSelect("C:\","XLAP","Selecione o arquivo ... ","*.MDB","*.mdb",fselExist) IF NOT HDescribeConnection("MyConnection", "", "", sBanco_Mdb, "", ... hOledbAccess2000, hOReadWrite) THEN Error(HErrorInfo()) RESULT False ELSE IF NOT HOpenConnection("MyConnection") THEN Error(HErrorInfo()) RESULT False ELSE HChangeConnection(Tab_Access,"MyConnection") END END
Aí,
o que vai acontecer, a conexão vai apontar para o arquivo MDB que está
no cliente e que ele localizou quando abrir a janela provocada pelo
comando fSelect.
Caso ocorra algum erro, ele vai ser anunciado.
Assim você pode fazer as demais rotinas de importação dos dados.
Eu sugiro o feijão com arroz do tipo abre a tabela access, lê e grava na tabela hfsql. Simples assim.
Algumas recomendações:
1 – Se você tem tabela de parâmetros, primeiro a de parâmetros.
2 – Se você tiver tabelas com ligações, importe na sequência:
- Tabela Pai, - Tabela Filho, - Tabela neta;
Qualquer dúvida estamos a disposição.
Boa sorte!
José Carlos Warpechowski – Zeca Skype: jzwarpe@yahoo.com.br jwarpe@gmail.com
|
|
|
|
|
|
Nenhum comentário:
Postar um comentário