DIFERENCA DE CONEXAO COM O BANCO DE DADOS

USUARIO.EXCLUIDOS 28/08/2007 15:12:52
#233116
ai Pessoal, eu estava lendo aqui em uma apostila sobre o tipo de conexões eu quero saber o que direncia em desempenho eu fazer a conexão do modo:

With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
'Monta o comando SELECT para selecionar o registro na tabela:
.CommandText = "SELECT * FROM Categorias WHERE CodCategoria = " & _
TxtCodCateg.Text & ";"
Set rsSelecao = .Execute




ou então:

SqlTabela = "Select Max(CodCategoria) as MaxCod From Categorias"

Set cnn = New Connection
cnn.Open "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";Jet OLEDB:Database Password=admin1;"
Set tabela = New ADODB.Recordset
tabela.Open SqlTabela, cnn, adOpenKeyset, adLockOptimistic, adCmdText

TxtCodCateg = tabela!MaxCod + 1


esses são dois exemplos, eu gostaria de saber qual é o melhor modo e eu gostaria de entender melhor a segunda conexão!
valeu grande abraço a todos!
USUARIO.EXCLUIDOS 28/08/2007 15:31:39
#233118
Olha colega, pelo pouco que sei no primeiro caso vc só postou o código referente ao comando, ou seja, a conexão de nome CNNBIBLIO já está aberta por outro local ou você não postou o codigo todo, pois o WITH relaciona a execução do comando

With cnnComando 'Nome do comando
.ActiveConnection = cnnBiblio 'indica que a conexão, a qual ja está aberta, ou ativa, chama-se cnnbiblio
.CommandType = adCmdText 'indica que usará uma SQL para executar o comando
'Monta o comando SELECT para selecionar o registro na tabela:
.CommandText = "SELECT * FROM Categorias WHERE CodCategoria = " & _
TxtCodCateg.Text & ";" 'esta é a SQL referida no .commandType acima
Set rsSelecao = .Execute ' executa o recordset




USUARIO.EXCLUIDOS 28/08/2007 15:38:29
#233120
O segundo:

SqlTabela = "Select Max(CodCategoria) as MaxCod From Categorias" 'SQL que retornará o maior numero de código do campo CodCategoria

Set cnn = New Connection 'esta é a conexão
cnn.Open "PROVIDER=MSDataShape;Data 'abre a conexão acima PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";Jet OLEDB:Database Password=admin1;"
Set tabela = New ADODB.Recordset ' indica o recordset
tabela.Open SqlTabela, cnn, adOpenKeyset, adLockOptimistic, adCmdText ' refere-se ao comando SQL sitado acima Sqltabela

TxtCodCateg = tabela!MaxCod + 1 ' manda retornar na textbox txtcodcateg o numero do maior codigo somado + 1, provavelmente para inserir outro registro

USUARIO.EXCLUIDOS 28/08/2007 18:18:44
#233144
é o que eu quero entender
tipo eu tenho as duas maneiras de fazer um codigo, tanto na primeira ou tanto na segunda, nas duas eu estou dando select, eu quero entender a diferença das duas

grande abraço
USUARIO.EXCLUIDOS 28/08/2007 22:26:49
#233155
Olha, em minha opinião, seguindo o estilo da primeira fica mais claro, porém o que te disse fica valendo, a conexão se faz antes deste código que você postou, dá uma olhada em seu projeto e vai ver que em algum lugar deve ter algo assim:
(este é o código que uso para abrir a conexão com o BD em um de meus aplicativos)

On Error GoTo errconexao
cnnProjetos.ConnectionString = "provider = microsoft.jet.oledb.4.0;" & _
"data Source = c:\arquivos de programas\PROJETOS_2_VIA_CODIGO\bdprojetos.mdb;"
cnnProjetos.Open
Unload Me
MDIprojetos.Show
Exit Sub

errconexao:
With Err
If .Number <> 0 Then
MsgBox " houve um erro na conexão com o banco de dados." & _
vbCrLf & " O sistema será encerrado.", vbCritical + vbOKOnly + vbApplicationModal, "erro na conexão"
.Number = 0
Set cnnProjetos = Nothing
End
End If
End With

End Sub


pois o primero código postado já se encontra com a conexão de nome = cnnbiblio ativa, beleza?

USUARIO.EXCLUIDOS 29/08/2007 10:44:05
#233193
Poisé eu andei me informando, e o vb tem diversas maneiras de fazer conexão a abertura de record set, eu gostario de perguntar qual é o melhor maneira de abrir uma conexão e fazer pequisa no recordset, como vc postou agora eu achei bem interesante e facil de entender!

valeu grande abraço
USUARIO.EXCLUIDOS 29/08/2007 12:05:05
#233226
Coloca no modulo isso.

Global conn as ADODB.Connection

Public Sub Conexao()
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\banco\db.mdb"
End Sub


depois é só chamar em cada aplicação, não esqueça de fechar o banco.
Geito rapido e simples de se conectar com banco access.

Se for somente isso feche o topico
abraços.
USUARIO.EXCLUIDOS 29/08/2007 12:06:54
#233229
Resposta escolhida

Olha..eu normalmente uso a segunda...e tipo acho bem simples...pq basta fazer assim

SqlTabela "Sintaxe"
Conecta

onde esse conecta..vc cria uma vez só

Public Sub Conecta()
Set cnn = New Connection
cnn.Open "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source='" & App.Path & "\Banco.mdb';Jet OLEDB:Database Password=;"
Set rs = New ADODB.Recordset
rs.Open SqlTabela, cnn, adOpenKeyset, adLockOptimistic, adCmdText

End Sub



sei lá..fica complicado dizer qual melhor e tal..eu ja usei as duas maneiras...mas prefiro essa

boa sorte e sucesso



USUARIO.EXCLUIDOS 29/08/2007 12:18:25
#233236
blz então brigado a todos
grande abraço
Tópico encerrado , respostas não são mais permitidas