CONEXAO BANCO ACCESS

CARLINHOSITAQUA 07/02/2013 12:39:10
#418959
Olá amigos
gostaria de ajuda para conexão com banco de dados access, o código abaixo esta dando o seguinte erro ao se conectar.
could not find installable isam

segue o código
On Error GoTo ErrLoad

Data1.DatabaseName = DirDb & [Ô]\sistema.mdb[Ô]
Data1.RecordSource = [Ô]Select * from fornecedor order by razao,codigo[Ô]

NomeArq = [Ô]Sistema.mdb[Ô]
NomeTabela = [Ô]Fornecedor[Ô]
PathApp = DirDb
Titulo = [Ô]VBMANIA[Ô]
If Right(PathApp, 1) <> [Ô]\[Ô] Then PathApp = PathApp & [Ô]\[Ô]

Set Arq = OpenDatabase(PathApp & NomeArq)
Set Tb = Arq.OpenRecordset(NomeTabela, dbOpenDynaset)

Exit Sub
ErrLoad:
If Err = 3024 Then
MsgBox [Ô]Arquivo de dados não encontrado[Ô] & Chr(10) & [Ô]em [Ô] & PathApp, 16, Titulo
End
End If

Exit Sub

desde já agradeço pela colaboração

MARCELO.TREZE 07/02/2013 13:10:21
#418961
Resposta escolhida
Colega sugestão use ADO não DAO

no seu caso é pior vc usa o componente datacontrol depois tenta uma conexão DAO

bom veja bem de forma simples vá em project/references e selecione Microsoft ActiveX Data Objects Library 2.8

em um módulo coloque

Global conexao As New ADODB.Connection

Public Function Conecta(ByVal Valor As Boolean)
If conexao.State = 1 Then
conexao.Close
Set conexao = Nothing
Valor = True
End If

If Valor = True Then
conexao.Open [Ô]provider=microsoft.jet.oledb.4.0; data source=[Ô] & App.Path & [Ô]\seubanco.mdb;jet OLEDB:System Database=system.mdw;[Ô]
Else
conexao.Close
Set conexao = Nothing
End If
End Function


a partir dai tudo fica mais facil veja

no form quando for consultar proceda da seguinte maneira

No load do Form se conecte ao banco assim

Conecta True


para pesquisar basta declarar o recorset na hora assim

Dim RS As Recordset
Dim sSQL As String

sSQL = [Ô]SELECT * FROM suatabela [Ô]
Set RS = Conexao.Execute(sSQL)
Do While Not RS.EOF
List1.AddItem RS!id & [Ô] - [Ô] RS!nome
RS.Movenext
Loop



acima fiz uma consulta que exibirá todos os dados (id e nome) em um listbox porém se for consultar um registro especifico ficaria assim:

sSQL = [Ô]SELECT * FROM suatabela WHERE id = 001[Ô]
Set RS = Conexao.Execute(sSQL)
If Not (RS.EOF And RS.BOF) Then
msgbox RS!Nome
Else
msgbox [Ô]registro não existe[Ô]
End If


para incluir dados no banco seria desta forma

Conexao.Execute([Ô]Insert Into Tabela(id, nome) Values ([Ô] & txtId.text & [Ô],[ô][Ô] & txtNome.text & [Ô][ô])[Ô])


para alterar também é simples

Conexao.Execute([Ô]UPDATE FROM tabela SET nome = [ô][Ô] & txtnome.Text & [Ô][ô] WHERE id = 001[Ô])


no update acima será feito uma alteração no nome de id 001

e por ulçtimo para excluir

Conexao.Execute([Ô]DELETE FROM tabela WHERE id = 001[Ô])


que exclui o registro 001 data tabela

Citação:

[txt-color=#e80000]Observação importante:[/txt-color]

Eu abri a conexão no evento load do form principal, e terei de fechar no evento unload do mesmo
para fechar é desta forma:

Conecta False



bom existem outras maneiras, esta é a mais simples de se explicar e trabalhar, veja bem nada impede vc tabém abrir e fechar a conexão a cada ação, veja um exemplo:

Ao invés de abrir a conexao no load e fecha-la no unload vou abrir executar minha ação e fechar assim

Conecta True[txt-color=#007100] [ô] <--Abro a conexão[/txt-color]

Dim RS As Recordset
Dim sSQL As String

sSQL = [Ô]SELECT * FROM suatabela [Ô]
Set RS = Conexao.Execute(sSQL)
Do While Not RS.EOF
List1.AddItem RS!id & [Ô] - [Ô] RS!nome
RS.Movenext
Loop

Conecta False [txt-color=#007100][ô]<---Fecho a Conexao[/txt-color]


bom por enquanto é isso boa sorte.
CARLINHOSITAQUA 07/02/2013 14:12:06
#418965
MARAVILHA !!!
SEM DÚVIDA MARCELO CARA VOCÊ é TREZE MESMO

VALEW !!!
MUITO OBRIGADO
Tópico encerrado , respostas não são mais permitidas