VB6 X ACCESS 2010 - ALGUMAS DUVIDAS

PATRICIALINDA 24/08/2011 18:30:03
#382408
Meus amigos, alguem tem algum exemplo de um simples [txt-color=#0000f0]cadastro via ADO[/txt-color] que se utiliza VB6 e Access 2010 ?
é que tenho um sistema antigo que ainda utiliza o MDB do Access 97, logo queria migrar para Access 2010 ou 2007.

Pergunta:
1. Se sistema feito projeto em VB6 com banco de dados Access 2010 , o usuário final é preciso ter o Microsoft Access 2010 instalado no PC para rodar ?
2. Como faço para que este MDB trabalhe com várias conexões ao mesmo tempo ?
TECLA 24/08/2011 19:37:03
#382411
O segredo é utilizar o ADO com uma connection string apropriada para ACCDB.
PATRICIALINDA 24/08/2011 22:01:34
#382418
Citação:

:
O segredo é utilizar o ADO com uma connection string apropriada para ACCDB.






[txt-color=#e80000]Pelos meus conhecimentos do Access 97, eu criava um projeto no VB6 e utilizava assim:[/txt-color]


1. Primeiro eu adicionava a referência (Microsoft DAO 3.51 Object Library):




2. Criava um módulo com a conexão no banco de dados MDB (access 97):

   

[ô]... módulo...
Global BD As Database
Global TabProd As Recordset



Sub Main()
Dim Caminho as string

Caminho = App.path & [Ô]\Controle.mdb[Ô]

Set BD = DBEngine.Workspaces(0).OpenDatabase(Caminho, False, False, [Ô];PWD=!@#$[Ô])
Set TabSerial = BD.OpenRecordset([Ô]Serial[Ô], dbOpenTable)

[ô]EVITAR O ERRO DE ACESSO SIMULTÂNEO POR MAIS DE UMA APLICAÇÃO NA MESMA TABELA
DBEngine.Idle (dbFreeLocks)

End Sub




3. No botão eu adicionava a a gravação na tabela desejada:



[ô]PROCEDURE DO BOTÃO [Ô]CMD_GRAVAR[Ô] :

[ô]============================
[ô]GRAVAR NA TABELA DE PRODUTOS
[ô]============================
BeginTrans
TabProd.AddNew

TabProd([Ô]CodigoProd[Ô]) = FU_Busca_Codigo
TabProd([Ô]DescricaoProd[Ô]) = UCase(TxtDescricao.Text)
TabProd([Ô]PrecoVendaProd[Ô]) = Format(MaskPrecoVenda.Text, [Ô]#,##0.00;- #,##0.00[Ô])
TabProd([Ô]CustoProd[Ô]) = Format(MaskCustoUnit.Text, [Ô]#,##0.00;- #,##0.00[Ô])

TabProd.Update
CommitTrans




Function FU_Busca_Codigo() As Integer

[ô] DECLARA VARIAVEL
Dim XCOD As Long

[ô]BUSCA O CODIGO MAXIMO => CODMAX é UMA VARIÁVEL
SQL = [Ô]SELECT MAX(Produto.CodigoProd) AS CODMAX FROM Produto[Ô]

Set TabProd = BD.OpenRecordset(SQL)

If IsNull(TabProd!CODMAX) Then
Exit Function
End If

XCOD = TabProd!CODMAX

[ô]ABRE TABELA DE PRODUTOS PARA PESQUISAR
Set TabProd = BD.OpenRecordset([Ô]Produto[Ô])

[ô] MOVIMENTA PONTEIRO PARA O INICIO DA TABELA
If TabProd.RecordCount <> [Ô]0[Ô] Then
TabProd.MoveFirst
Else
Exit Function
End If

[ô]PROCURA O PROXIMO CODIGO DISPONIVEL
TabProd.Index = [Ô]IndCodProd[Ô]
For i = 1 To XCOD

TabProd.Seek [Ô]=[Ô], i

If TabProd.NoMatch Then [ô]SE NÃO ENCONTROU...
Busca_Codigo = i
Exit Function
End If

Next i

Busca_Codigo = XCOD + 1

End Function



[txt-size=2][txt-color=#e80000]Agora minha dúvida ?[/txt-color][/txt-size]

1. Alguém teria um simples exemplo igual eu fiz acima, mas utilizando o Access 2010 ?
2. O usuário final necessita ter o Access 2010 instalado para que funcione o sistema ?
3. Como faço para que este MDB trabalhe com várias conexões ao mesmo tempo ?
PATRICIALINDA 26/08/2011 22:32:54
#382602
Niguem ?
LLAIA 27/08/2011 12:09:51
#382620
Resposta escolhida
1 - http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=365858

2 - Não. Apenas distribua os drivers listados no setup.

3 - Se várias conexões estão no mesmo aplicativo, cria mais de um objeto Connection. Se o acesso é pela rede, em vez de um caminho local como: C:\pastaBD\seubanco.mdb na string de conexão, coloque: \
omeServidor\compartilhamento\seubanco.mdb. Lembrando que, se operações concorrentes violarem regras de integridade podem ocorrer erros. Tente sempre ter o tempo de conexão mais curto o possível em um procedimento no banco.
Tópico encerrado , respostas não são mais permitidas