|
|
|
|
|
Dicas
|
|
Visual Basic (Internet)
|
|
|
Título da Dica: Acessar bd access na internet por um sistema local em vb
|
|
|
|
Postada em 11/1/2002 por georgenes
georgenes@bol.com.br
Para conectar db access pela internet é um problema, porque o access não é inteligente como o sql, oracle e outros, por isto voce presisa passar os parametros para um arquivo no provedor que este fara as consultas e vai retornar os valores para voce e ate mesmo um recordset. É necessario utilizar um arquivo chamado de handler que fica no diretorio do windows e no caso do winnt no provedor, este arquivo contem chaves para chamada de instrucoes sql e voce pode passar parametros para este arquivo e o mesmo fala com o Ms Remote do provedor e executa as instrucoes SQL.. Vou exemplificar o mais facil possivel.
Primeiro crie um db chamado de MeuDb com uma tabela Cliente com colunas Nome, Rg_Numero e Sexo.
Crie uma conexão DSN para ele utilizando drive do access e com nome de ConexaoDb
Procure o arquivo MSDFMAP.INI dentro do diretorio windows ou winnt conforme o caso, edite o mesmo e inclua as seguintes chaves.
[connect MinhaConexao] Access=ReadWrite Connect="DSN=ConexaoDb"
[sql Cliente] Sql="SELECT * FROM Cliente where codigo = ?"
* a linha abaixo é muito versatil para executar linhas de comando sql, porem não funciona para insert e update [sql Comando] Sql="?"
* observe que os pontos de interrogacao serao os parametros que voce vai passar. [sql IncluiCliente] Sql="Insert into cliente (Nome,Rg_Numero,Sexo) values (?,?,?)"
O incoveniente desta tecnica é que voce precisa passar para o administrador do servidor os parametros do arquivo handler para que ele inclua na maquina onde esta o seu db e criar o famoso DSN para seu db, e todas as vezes que voce precisar alterar as chaves, voce precisa informar o administrador para atualizar tambem.
Agora vamos para o Vb, crie um projeto e faca referencia para Microsoft ActiveX Data Objects 2.7 Library que voce consegue no site da microsoft a atualizadao do MDAC 2.7 http://www.microsoft.com/data/download_270RTM.htm
Depois crie esta sub no projeto boa sorte
Public Sub CarregarOdbcHandler() ' com handler Dim Rs As New ADODB.Recordset Rs.CursorLocation = adUseClient Dim Ssql As String '*** Comando abaixo funciona para inclusao, note que a chave sql IncluiCliente contem ' varios ? (pontos de interrogacao) correspondente aos nomes dos campos da tabela ' e sao separados por virgula a partir do comando de chamada ' nao se pode passar o comando direto "Insert into cliente (Nome,Sexo) values (Georgenes,Masculino)" ' Nao funcina
Ssql = "'georgenes','masculino'," ' Ok Funciona Rs.Open "IncluiCliente(" & Ssql & ")", "Handler=MSDFMAP.Handler;" & _ "Provider=MS Remote;Data Source= MinhaConexao;" & _ "Remote Server=http://NomeDoServidor" ‘ previamente configurado pelo PWS
'Ssql = "Insert into cliente (Nome,Sexo) values (geo,Masculino)" ' Nao funcina
' ‘ na linha abaixo tem um exemplo de liberdade de codigo utilizando a chave comando passando o parametro completo de pesquisa para criar uma recordset
Ssql = "select * from cliente where cd_Cliente = 1" ' ok funcina Rs.Open "Comando(" & Ssql & ")", "Handler=MSDFMAP.Handler;" & _ "Provider=MS Remote;Data Source= MinhaConexao;" & _ "Remote Server=http:// NomeDoServidor " Rs.Close Rs.Open "Comando(select * from cliente)", "Handler=MSDFMAP.Handler;" & _ "Provider=MS Remote;Data Source= MinhaConexao;" & _ "Remote Server=http:// NomeDoServidor " Rs.Close
End Sub
|
|
|
|
|