Access - UPDATE em tabela local com tabela no Sybase

15/10/2015

4

SQL

Olá pessoal, há 2 dias venho pesquisando sem encontrar solução.

Tenho as seguintes tabelas:

TbFinal - Access 2010
----------------------------------
NuContrato DtContrato
119 Null
----------------------------------

TbContrato - Sybase
----------------------------------
NuContrato DtContrato
111 '20151003'
112 '20151004'
113 '20151005'
114 '20151006'
115 '20151007'
116 '20151008'
117 '20151009'
118 '20151010'
119 '20151021'
----------------------------------

Já fiz o código que realiza a conexão com o servidor do sybase e também já faço leitura das tabelas (Count, Sum, Etc)

Minha dificuldade está em criar corretamente a Instrução SQL de como Atualizar o DtContrato no Contrato 119 com base na TbContrato (Sybase)
e também qual comando eu uso para executar o Statement.
Tentei da seguinte forma: "UPDATE TbFinal SET a.DtContrato = b.DtContrato FROM TbFinal a, TbContrato b WHERE a.NuContrato = b.NuContrato"

Alguém ai pode me ajudar?
Responder

Posts

16/10/2015

Jothaz

Olha o post esta muito confuso, por favor seja mais claro, pois vai facilitar a ajuda.

As tabela do Sybase estão vinculadas ao Access?

A TbFinal - Access 2010 tem todos os registros ou você vai carregá-lo com os campos da tabela do Sybase?

Se simésó criar um consulta do tipo atualização e fazer o relacionamento entre as duas tabelas.
Responder

16/10/2015

Rafael Souza

Olá Jothaz,

Sim, as tabelas estão vinculadas no access,
O Problema é que mesmo optando por salvar a senha de acesso na hora de vincular as tabelas Sybase, a cada consulta me é solicitando novamente meu login e senha:

http://arquivo.devmedia.com.br/forum/imagem/0-20151016-093914.png

Fica inviável ter que ficar inserindo a senha a cada nova consulta, por isso estou tentando colocar isso em código vba...

Com o código abaixo já conecto nas bases:

Dim myConn As New ADODB.connection
Dim myRS As New ADODB.Recordset
Dim number As Integer
Dim myCommand As New ADODB.Command
Dim strSQL As String
On Error GoTo ErrorHandler

'Estabelecendo a Conexão
myConn.Provider = "ASEOLEDB"
myConn.ConnectionString = "Data Source=xxxxxxxxxx:9000;User ID=xxxxxx;Pwd=xxxxx;"

'Abrir Conexão
myConn.Open
Set myRS.ActiveConnection = myConn

'Statement
myRS.Open "SELECT count(nmdocumento) AS 'total' FROM DBCOR..TbDocumento"

With myRS
Do While Not myRS.EOF
Let number = !total
myRS.MoveNext
Loop
End With

'Exibe Resultado
MsgBox number

'Fecha Conectores
myRS.Close
myConn.Close
Exit Sub

ErrorHandler:
MsgBox Error(Err)
Exit Sub


O que preciso agora é saber como usar corretamente o statement SQL para Atualizar a tabela local do access com informações da tabela Sybase que estaria "vinculada".
Responder

16/10/2015

Jothaz

Olha tem um post aqui sobre esta questão de ficar pedindo a senha a toda hora. O pior é que a pesquisa aqui do fórum é muito fraca.

A tabela no access vai ser criada do zero?

Você quer fazer um cópia da tabela do Sybase com somente os dois campos?
Responder

16/10/2015

Rafael Souza

Se tem um Post aqui acho que deixei passar, vou dar uma procurada.

A Tabela do Access já esta criada, só que diariamente tenho que atualizar ela com algumas informações da tabela Sybase.

Fica inviável realizar um cópia da tabela Sybase porque ela é atualizar diariamente.
Responder

16/10/2015

Jothaz

A conexão com o Sybase é feita via ODBC?
Se salvar a senha lá deveria ficar salva.
O post que me referi acho que era sobre FireBird.

Sobre a consulta já tentou criar um consulta Atualização, assim você relaciona as duas tabela e manda atualizar os campos que precisa.

Não tenho como mostra um print, pois no note que estou usando agora não tenho Access.

Mas dá uma pesquisada no Google sobre "Consulta Atualização Access" talvez lhe ajude.
Responder

16/10/2015

Rafael Souza

Obrigado Jothaz,
Já tenho um consulta de atualização padrão access, justamente o problema é que toda vez que executo ela, meu login e senha são solicitados novamente,
Concordo com você o Access Deveria gravar a senha pq foi justamente o que escolhi, mas não funciona, dai a iniciativa de fazer essas consultas via código.
Já me convenci de que seja um problema do próprio Driver Adaptive Server Enterprise, vou reinstalar o Access e o Driver e ver se resolve meu problema.

Mais uma vez, agradeço sua ajuda!
Responder

16/10/2015

Jothaz

Olha as vezes uso o Access para vincular tabelas do: Oracel, SAP/Hana, PostgreSQL e SQLServer e nuca tive problemas. Em um outra empresa que trabalhei usei até o Sybase sem problemas.

É só criar a conexão ODBC salvar a senha e salvar a senha no Access que funciona sem nem inconveniente.

Bom faça a reinstalação e qualquer dúvida post aqui.

Agora se você quer tentar criar a atualização via código é só exibir o SQL da sua consulta atualização padrão do Access, copiá-lo e executar o SQL via código através do método DoCmd.RunSQL.

No mais boa sorte.
Responder

19/10/2015

Rafael Souza

Bom dia,

Reintalei o Access e o erro continua.
Mas consegui resolver com o DoCmd.RunSQL

Muito Obrigado pela força Jothaz!
Responder

19/10/2015

Jothaz

Que bom que a sugestão lhe ajudou.

Agora intrigante esta parada de não salvar a senha. Já tentou com outro banco de dados?
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira