DIFERENCA DE CONEXAO COM O BANCO DE DADOS
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!
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!
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
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
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
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
é 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
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
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?
(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?
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
valeu grande abraço
Coloca no modulo isso.
Global conn as ADODB.Connection
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.
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.
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
blz então brigado a todos
grande abraço
grande abraço
Tópico encerrado , respostas não são mais permitidas