Criar um arquivo Access(*.mdb)

Delphi

26/09/2003

Estou tentando criar um MDB e inserir dados nele.

Veja neste exemplo:

var
obj: OleVariant;

begin

obj := CreateOleObject(´ADOX.Catalog´);
obj.Create(´Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\banco1.mdb;Jet OLEDB:Engine Type=4´);
obj := VarNull;

....//Aqui tem o codigo que insere os Dados

end;

Qdo uso o Type=4, estou criando um mdb do Access97 e qdo uso Type=5 estou criando um mdb do Access2000. Só que qdo uso o Type=5 e após inserir 1000 linhas o arquivo fica enorme(em torno de 30 mb). Com o Type=4 isto nao acontece, só que eu estou querendo usar o Type=5.

O que estou fazendo de errado? Alguem sabe outra forma de criar um mdb?

Agradeço desde já.


Delphiz

Delphiz

Curtidas 0

Respostas

Delphiz

Delphiz

26/09/2003

Acho q descobri qual é o problema. É que qdo eu uso o Type=4 ele de alguma forma cria e insere os dados de forma que o arquivo fique compactado. Já o Type=5 nao faz isso. Talvez eu deva informar algum parametro (propriedade) na string de conexao.

Eu cheguei a esta conclusao pq tem uma opcao no Access de comprimir o arquivo MDB e qdo eu usei ele no arquivo gerado pelo Type=5 ele ficou do tamanho do arquivo gerado pelo Type=4. Tb tentei compactar o arquivo gerado pelo Type=4, só para garantir se eu estava certo e nao comprimiu, ou seja, ele ja estava comprimido.


Agora só resta saber como compacto o arquivo mdb (via programacao). Se alguem souber...


GOSTEI 0
Quadrado

Quadrado

26/09/2003

de uma olhada neste link. Tem bastante coisa sobre ADO e access.

http://delphi.about.com/library/weekly/aa091801a.htm

Quadrado.


GOSTEI 0
Delphiz

Delphiz

26/09/2003

Quadrado, eu descobri isto e ja estou fazendo. Só que tem um problema. Qdo acabo de criar e inserir os dados tento compactar e neste momento de compactar o arquivo dá um erro dizendo que o arquivo ja esta sendo usado pelo Admin.
Nao entendo o pq disto, se eu ja dei ´VarNull´ na variavel.


SEGUE O CODIGO ABAIXO:

var
obj: OleVariant;

begin

obj := CreateOleObject(´ADOX.Catalog´);
obj.Create(´Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\banco1.mdb;Jet OLEDB:Engine Type=4´);
obj := VarNull; // <==== AQUI ESTOU LIBERANDO

....//Aqui tem o codigo que insere os Dados

//FECHO A CONEXAO COM O ADO
AdoConnection1.connected:= false;

//AQUI COMPACTA O ARQUIVO
jro:= CreateOleObject(´JRO.JetEngine´);
jro.CompactDatabase(´Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\teste\banco1.mdb´,´Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\teste\banco2.mdb´);
jro := VarNull;

end;


GOSTEI 0
Zamedi

Zamedi

26/09/2003

Delphiz

Cara nunca trabalhei Delphi x Access, mas talvez esta dica seja útil.

Não sei se dá pra definir isso pelo Delphi, mas o Access2000+..., tem uma opção de compactar ao fechar em Ferramentas => Opções => Geral

Tenta fazer isso.

Até +


GOSTEI 0
POSTAR