Array
(
)

SELECT ACCESS E JOGAR PARA UMA dento SQL

Oliverjer10
   - 28 ago 2008

Bom dia pessoal,

precisa da ajuda de vcs, preciso dos dados desse arquivo ATV dentro de uma conexão sqlserver, essa tabela é criada dentro do arquivo mdb do access e preciso trabalhar com ela dentro do sql.

ja´tenho a conexao com acces odbc e já tenho uma conexao SQL

Não sei se consigo deixar claro, mas quem puder ajudar.

Dim sql_trade1 As String = ´select * into ATV from tb_atvltr where cod_cadusu = ´ + vMatricula + ´ and ((year(dta_hor_atvltr) = ´ + RTrim(Str(Year(vdata_ini))) + ´) or (year(dta_hor_atvltr) = ´ + RTrim(Str(Year(vdata_fim))) + ´)) and ((month(dta_hor_atvltr) = ´ + RTrim(Str(Month(vdata_ini))) + ´) or (month(dta_hor_atvltr) = ´ + RTrim(Str(Month(vdata_fim))) + ´)) ´
´***Conexão Access***
Dim dr As Data.Odbc.OdbcDataReader
Dim conexao_trade As Data.Odbc.OdbcConnection
conexao_trade = New Data.Odbc.OdbcConnection(´Driver={Microsoft Access Driver (*.mdb)};DBQ=u:\Tradenet.mdb´)
conexao_trade.Open()
Dim cmd As Data.Odbc.OdbcCommand = New Data.Odbc.OdbcCommand(sql_trade, conexao_trade)
dr = cmd.ExecuteReader()

Psergio.p
   - 06 set 2008

Porque você não cria um linked sever para a tabela do access? Assim você vai poder manipula-la em seu programa como se fosse mais uma tabela do SQL Server.

Se tiver duvida me escreva.

Oliverjer10
   - 08 set 2008

Caro colega,

1. Faço o linked ser da seguinte maneira, pelo query analyzer

go
exec sp_addlinkedserver
@server = ´trade´, -- nome do linked server
@provider = ´microsoft.jet.oledb.4.0´, -- provider para access
@srvproduct = ´trade´, -- pode ser qualquer coisa
@datasrc = ´\\172.20.0.244\teste\tradenet.mdb´ -- caminho completo + nome do banco access
go

2. Em seguida executei esse comoando no query analiser para testar:
EXEC sp_tables_ex trade
3. Apresenta o erro abaixo:

Servidor: Msg 7399, Level 16, State 1, Procedure sp_tables_ex, Linha 20
OLE DB provider ´microsoft.jet.oledb.4.0´ relatou um erro.
[OLE / DB provedor retornou mensagem: O mecanismo de banco de dados Microsoft Jet não pode abrir o arquivo ´\ \ 172.20.0.244 \ teste \ tradenet.mdb ´. É já abriu exclusivamente por outro usuário, ou você precisa de permissão para exibir seus dados.]
OLE DB error trace [OLE / DB Provider ´microsoft.jet.oledb.4.0´ IDBInitialize:: Inicializar retornou 0x80004005:].

Já estou com as permissões e se eu criar um arquivo novo lá nesse 172.20.0.244 apresenta a mesma mensagem.

Já tenho uma conexão odbc pelo painel de controle com driver do access que está mapeada para letra u:
se puder ajudar ou precisar de mais detalhes eu informo, grato.

Oliverjer10
   - 08 set 2008

Só mais um detalhe, outro colega do forum me indicou faser assim o linked server e atualizar o mdac.

use master
if (select count(*) from master.dbo.sysservers where srvname=´trade´)=0
EXEC sp_addlinkedserver

@server=´TRADE´,
@srvproduct=´TRADE´,
@provider=´MSDASQL.1´,
@datasrc=´TRADE´
GO

apresentou esse erro:
error 7302: Could not create an instance of ole dbprovider ´MSDASQL.1´
OLE DB error trace [ non-interface error: CoCreate of DSO for MSDASQL.1.returned 0x80040154].