Criar um arquivo Access(*.mdb)
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á.
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
Curtidas 0
Respostas
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...
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
26/09/2003
de uma olhada neste link. Tem bastante coisa sobre ADO e access.
http://delphi.about.com/library/weekly/aa091801a.htm
Quadrado.
http://delphi.about.com/library/weekly/aa091801a.htm
Quadrado.
GOSTEI 0
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;
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
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é +
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