Geração de mdb

41 views
Skip to first unread message

Everton Pacheco

unread,
Mar 20, 2013, 9:43:04 AM3/20/13
to dotn...@googlegroups.com
Guys,

Bom dia. Estou precisando de um help. Estive desenvolvendo um serviço que precisava extrair dados de um banco copiar para um access (mdb) e depois enviar isso por e-mail. Fiz via pacote etl ssis, mas a ferramenta estava instável demais aqui, aí abrir mão e fiz um serviço.

Fiz rápidinho. E funciona chuchu beleza na minha maquina, mas o problema é o servidor de homologação.

segue o código da criação do mdb:

  var cnnStrAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameWithPath;

            var catType = Type.GetTypeFromProgID("ADOX.Catalog");

            object o = Activator.CreateInstance(catType);

            catType.InvokeMember("Create", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] { cnnStrAccess });


A exceção ocorre justamente aqui :
catType.InvokeMember("Create", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] { cnnStrAccess });


Tenho lutado com servidor Windows Server 2003 SP1, registrado a dll msdox.dll em 32 e 64 bits. Instalado e desinstalado MDAC 2.8.

Quando me ocorreu algo elementar, que ainda não havia pensado antes. Eu preciso do access instalado no servidor? MDAC já não se encarrega de fornecer os metodos que preciso p interagir com mdb?

Bom guys. Me dar uma força ae. Um abraço.


Everton Pacheco
Especialista em Banco de Dados - UNIFACS
Especialista em Sistemas Web - UNIFACS
Mobile: (11) 95160-2883
Twitter: @evertonS3
Skype: evertons3design


Theo Alexandre Miliani

unread,
Mar 20, 2013, 10:05:25 AM3/20/13
to dotn...@googlegroups.com

Para gerar qualquer elemento do pacote Office (Mdb, doc, docx, etc) você precisa sim ter o pacote Office instalado, a única exceção que nem é bem uma exceção pois apenas interpreta a pagina, seria o Excel, mas mesmo ele precisa estar instalado, caso se queira uma geração correta do arquivo.

 

 


--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
 
Facebook: www.facebook.com/grupodotnetbr
 
WebSite: www.dotnetbr.com
 
E-mail do Grupo: dotn...@googlegroups.com
==============================
---
Você está recebendo esta mensagem porque se inscreveu no grupo "DotNet Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para dotnet_br+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Everton Pacheco

unread,
Mar 20, 2013, 10:16:51 AM3/20/13
to dotn...@googlegroups.com
Pow,

@Theo, obrigado pela resposta. Cara, pior que já vi esta geração de arquivo via ADOX funcionar sem a necessidade do programa instalado. Usando a biblioteca COM, Microsoft ADO Ext Security e blá blá. Por isso que estou na dúvida. Já to tomando tanta porrada disso aqui que nem sei mais o que pensar. Alguém mais tem alguma idéia?



Everton Pacheco
Especialista em Banco de Dados - UNIFACS
Especialista em Sistemas Web - UNIFACS
Mobile: (11) 95160-2883
Twitter: @evertonS3
Skype: evertons3design




Theo Alexandre Miliani

unread,
Mar 20, 2013, 10:30:42 AM3/20/13
to dotn...@googlegroups.com

Everton, eu já vi cada coisa cm o adox que não duvido que possa ter algo menos documentado para fazer isso.

Pesquisando um pouco (creio que você já fez o mesmo ate) achei alguns artigos interessantes

http://www.vbweb.com.br/dicas_visual.asp?Codigo=750

Aqui mostra como gerar o mdb, mas não menciona se ele precisa estar instalado.

 

http://microsoft.public.br.dotnet.languages.vb.narkive.com/SEquCtaC/erro-ao-tentar-criar-banco-access

este usa o OLEDB 4.0 que esta no MDAC2.8 porem esta em VB.net

 

agora algo me veio a mente, meio básico, mas acho que nem se aplica ao que vc esta precisando:

Você deu permissão de escrita na pasta que você esta criando o MDB?

Everton Pacheco

unread,
Mar 20, 2013, 10:36:02 AM3/20/13
to dotn...@googlegroups.com
sim dei permissão. Rodo ele como administrador na verdade. Não é questao de permissão com certeza. Ele dar erro no invoke, reclamando que não achou o metodo "create" da interface. Estou fazendo outro teste nesse momento. Se usar interface usando diretamente a ADOX p ver o que acontece no servidor. No momento conseguir um erro de classe não registrada. Então, estou tentando registrar a msadox28.tbl no windows server 2003, mas parece que o regsvr32 não suporta esse formato. Então estou pesquisando outra forma de registrar.



Everton Pacheco
Especialista em Banco de Dados - UNIFACS
Especialista em Sistemas Web - UNIFACS
Mobile: (11) 95160-2883
Twitter: @evertonS3
Skype: evertons3design




Fábio Serratto (GMail)

unread,
Mar 20, 2013, 10:47:01 AM3/20/13
to dotn...@googlegroups.com

Você não pode ter um MDB vazio (template com suas tabelas), copiá-lo e preencher os dados?
dependendo da versão do seu servidor o JET.OLEDB.4.0 não funcionará mais, você vai ter que usar o Access Database engine (links abaixo), certifique se seu server é 32 ou 64  (o 2007 é para 32 o 2010 é pra 64). E realmente você não precisa de nada instalado no servidor, vc conecta direto no banco:

 

2007 Office System Driver: Data Connectivity Components

http://www.microsoft.com/en-us/download/details.aspx?id=23734

 

Microsoft Access Database Engine 2010 Redistributable

http://www.microsoft.com/en-us/download/details.aspx?id=13255

 

Scrap de código:

var conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + [PATH/NOME.MDB] + ";");

            /* prepara Insert */

            var command = new OleDbCommand(

                "Insert into TABLE (COL,COL) values (@VAL1,@VAL2)", conn);

            command.Parameters.AddWithValue("@VAL1", usina.Sigla);

            command.Parameters.AddWithValue("@VAL2", usina.Nome);

Neryval Lima

unread,
Mar 20, 2013, 12:08:22 PM3/20/13
to dotn...@googlegroups.com
Everton, 

Já utulizei a ADOX, mas tem tantos problemas, que desisti dela, 
se for possível, opte por criar algo mais novo, tipo SQLCe, ou o novo formato SQL LocalDb,
são opções mais simples de se implementar, e vc não precisa utilizar objetos COM, 
que realmente são muito problemáticos.

Se a quantidade de dados for pequena, verifique a viabilidade do formato XML.

O que pode estar acontecendo, é que uma vez instaciado, ele não libera mais o DB,
tendo que reiniciar a aplicação. Pelo menos foi isto que aconteceu comigo!

Depois de muitos dias de tentativa, optei por XML.



Neryval Lima

+55 71 8104.9679 Tim 
+55 77 9942.9437 Claro
+55 77 9932.3539 Vivo
Skype : neryval.lima

Armazene sua Nota Fiscal de forma prática e segura.


Everton Pacheco

unread,
Mar 20, 2013, 12:11:42 PM3/20/13
to dotn...@googlegroups.com
POw,

@Neryval até tentei convencer o caras, mas esses diretores quando cisman com uma coisa é foda.

Mas você ta certo ADOX e um desafio arduo.



Everton Pacheco
Especialista em Banco de Dados - UNIFACS
Especialista em Sistemas Web - UNIFACS
Mobile: (11) 95160-2883
Twitter: @evertonS3
Skype: evertons3design




Theo Alexandre Miliani

unread,
Mar 20, 2013, 1:08:48 PM3/20/13
to dotn...@googlegroups.com

+1

 


De: dotn...@googlegroups.com [mailto:dotn...@googlegroups.com] Em nome de Everton Pacheco
Enviada em: quarta-feira, 20 de março de 2013 13:12
Para: dotn...@googlegroups.com
Assunto: Re: [.Net - BR] Geração de mdb

 

POw,

Neryval Lima

unread,
Mar 20, 2013, 1:40:37 PM3/20/13
to dotn...@googlegroups.com
Bom, neste caso, eu utilizaria a solução do Fabio.
dai não precisa criar um MDB, basta copiar um como modelo e 
preencher os dados, só o fato de não utilizar o ADOX, já se livra de
no minimo 1 semana de dor de cabeça!


Neryval Lima

+55 71 8104.9679 Tim 
+55 77 9942.9437 Claro
+55 77 9932.3539 Vivo
Skype : neryval.lima

Armazene sua Nota Fiscal de forma prática e segura.


Reply all
Reply to author
Forward
0 new messages