terça-feira, 19 de janeiro de 2016

WX - Como importar uma base de ACCESS ou até mesmo usar uma base ACCESS










http://forum.pcsoft.fr/pt-BR/pcsoft.br.windev/875-como-importar-uma-base-access-ate-mesmo-usar/read.awp

Contribuicao

José Carlos Warpechowski – Zeca
Skype: jzwarpe@yahoo.com.br
jwarpe@gmail.com





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




Muito boa contribuição José Carlos.

Somente gostaria de complementar dizendo que para tirar as senhas dos MDBs, pode-se fazer também através do Access, e no momento de Abrir o MDB, escolher a opção "Abrir no modo exclusivo". Depois usar as Ferramentas do Banco de Dados, ou o recurso no menu Arquivo, para Retirar Senha do Banco de Dados. Vai pedir a senha atual e se confirmada, o BD vai ficar sem senha e pronto para uso.









Nenhum comentário:

Postar um comentário

Teste

Teste
teste