MIGRANDO DE DAO PARA ADO, CERTO OU ERRADO?
Estou tentando fazer meu primeiro ADO, preciso de muita ajuda, as minhas dúvidas,
1 - ADO é realmente acesso mais rápido?
2 - Tenho que usar Connectioin ou não?
Como chamar um Banco via ADO (se possÃvel código fonte), e seus recordsets
ou melhor continuar no DAO?
1 - ADO é realmente acesso mais rápido?
2 - Tenho que usar Connectioin ou não?
Como chamar um Banco via ADO (se possÃvel código fonte), e seus recordsets
ou melhor continuar no DAO?
1º sim
2ºsim
3ºclick em conection string e ligue seu banco de dados.(no ado)
2ºsim
3ºclick em conection string e ligue seu banco de dados.(no ado)
isso se vc fizer a referencia de Ado e adicionar o Componente Microsoft Ado Data Control
Adicionado o controle no form busca a propriedade COnnection String e logo depois a propriedade Record Source
Depois em Cada txt Ligue o nome do Conrtole ao Data Source e o nome na Tbl do Campo no Data Field
Adicionado o controle no form busca a propriedade COnnection String e logo depois a propriedade Record Source
Depois em Cada txt Ligue o nome do Conrtole ao Data Source e o nome na Tbl do Campo no Data Field
eu faço tudo em SQL , é mais ou menos assim no Modulo coloco Publicas
No general
Option Explicit
'Nome da Conexao
Public cnBd As ADODB.Connection
'Nome do Recordset
Public rspropri As New ADODB.Recordset
e fecho o recordset
Public Sub FecharRsPropri()
' isso é feito em dao tenho que muadr pra ado
On Error GoTo erro
If rspropri.State = adStateOpen Then '***Se o recordset estiver aberto, feche-o
rspropri.Close
Set rspropri = Nothing
End If
erro:
End Sub
No form load eu coloco
FecharRsPropri
Set rspropri = New ADODB.Recordset
Set cnBd = New ADODB.Connection
cnBd.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Bdimobiliaria.MDB;Persist Security Info=False"
' Abro a TBL
rspropri.Open "Select Codigo,* FROM Tbl_Proprietarios order by Codigo", cnBd, adOpenKeyset, adLockOptimistic
'determino quais sao as txts
Set txtcod.DataSource = rspropri
txtcod.DataField = "Codigo"
Set txtproprietario.DataSource = rspropri
txtproprietario.DataField = "Nome"
Set txtnacional.DataSource = rspropri
txtnacional.DataField = "Nacionalidade"
No general
Option Explicit
'Nome da Conexao
Public cnBd As ADODB.Connection
'Nome do Recordset
Public rspropri As New ADODB.Recordset
e fecho o recordset
Public Sub FecharRsPropri()
' isso é feito em dao tenho que muadr pra ado
On Error GoTo erro
If rspropri.State = adStateOpen Then '***Se o recordset estiver aberto, feche-o
rspropri.Close
Set rspropri = Nothing
End If
erro:
End Sub
No form load eu coloco
FecharRsPropri
Set rspropri = New ADODB.Recordset
Set cnBd = New ADODB.Connection
cnBd.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Bdimobiliaria.MDB;Persist Security Info=False"
' Abro a TBL
rspropri.Open "Select Codigo,* FROM Tbl_Proprietarios order by Codigo", cnBd, adOpenKeyset, adLockOptimistic
'determino quais sao as txts
Set txtcod.DataSource = rspropri
txtcod.DataField = "Codigo"
Set txtproprietario.DataSource = rspropri
txtproprietario.DataField = "Nome"
Set txtnacional.DataSource = rspropri
txtnacional.DataField = "Nacionalidade"
BOM ,ALMIRSAFADI
1 - ADO é realmente acesso mais rápido?
SIM , POIS O ADO FAZ UM LINK NO BANCO , QUANTO AO DAO ELE CARREGA AS TABELAS DO BANCO NA SUA MAQUINA FICANDO ASSIM CONSIDERAVELMENTE + PESSADO
2 - Tenho que usar Connectioin ou não?
NAUM ENTENDI MUITO BEM ESSA PERGUNTA , + C FOR A TEM Q FAZER A CONECTION SIM
Como chamar um Banco via ADO (se possÃvel código fonte), e seus recordsets
DIM VAR_CNN AS NEW ADODB.CONNECTIO
[txt-color=#ff0000]ACCESS[/txt-color]
VAR_CNN.CONNECTIONSTRING="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=PATH\BANCO;JET OLEDB : DATABASEPASSWORD=SENHA;UID=ADMIN"
txt-color=#ff0000]SQL SERVER[/txt-color]
VAR_CNN.CONNECTIONSTRING="PROVIDER=SQLOLEDB.1;DATA SOURCE=NOME_SERVIDOR;PWD=SENHA;UID=SA"
txt-color=#ff0000]ORACLE[/txt-color]
VAR_CNN.CONNECTIONSTRING="PROVIDER=MSDAORA;DATA SOURCE=NOME_SERVIDOR;PWD=SENHA;UID=SA"
• C VC OBSERVAR UTILIZEI 3 SERVIDORES DIFERENTES MUDIFIQUEI POUCA COISA NA STRING
ou melhor continuar no DAO?
NEM PENSAR PRODUTO DESCONTINUADO ,
ESPERO TER AJUDADO
1 - ADO é realmente acesso mais rápido?
SIM , POIS O ADO FAZ UM LINK NO BANCO , QUANTO AO DAO ELE CARREGA AS TABELAS DO BANCO NA SUA MAQUINA FICANDO ASSIM CONSIDERAVELMENTE + PESSADO
2 - Tenho que usar Connectioin ou não?
NAUM ENTENDI MUITO BEM ESSA PERGUNTA , + C FOR A TEM Q FAZER A CONECTION SIM
Como chamar um Banco via ADO (se possÃvel código fonte), e seus recordsets
DIM VAR_CNN AS NEW ADODB.CONNECTIO
[txt-color=#ff0000]ACCESS[/txt-color]
VAR_CNN.CONNECTIONSTRING="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=PATH\BANCO;JET OLEDB : DATABASEPASSWORD=SENHA;UID=ADMIN"
txt-color=#ff0000]SQL SERVER[/txt-color]
VAR_CNN.CONNECTIONSTRING="PROVIDER=SQLOLEDB.1;DATA SOURCE=NOME_SERVIDOR;PWD=SENHA;UID=SA"
txt-color=#ff0000]ORACLE[/txt-color]
VAR_CNN.CONNECTIONSTRING="PROVIDER=MSDAORA;DATA SOURCE=NOME_SERVIDOR;PWD=SENHA;UID=SA"
• C VC OBSERVAR UTILIZEI 3 SERVIDORES DIFERENTES MUDIFIQUEI POUCA COISA NA STRING
ou melhor continuar no DAO?
NEM PENSAR PRODUTO DESCONTINUADO ,
ESPERO TER AJUDADO
Olha o codigo q uso para criar variavel...abrir conexao..abrir tabela...e depois fechar e destruir as variaveis
'Declara as Variaveis
Public Rst As ADODB.Recordset
Public Cnn As ADODB.Connection
Sub ConexaoBanco
Fonte = App.Path & "\NomeDoBanco.mdb"
Set Cnn = New ADODB.Connection
Cnn.CursorLocation = adUseClient
With Cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = Fonte
.Properties("Jet OLEDB:Database Password") = "SenhaDoBD"
.Open
End With
End Sub
'Para Abrir a Tabela
ConexaoBanco
Set Rst = New ADODB.Recordset
SQL = "SELECT * FROM SuaTabela"
Rst.Open SQL, Cnn, adOpenKeyset, adLockOptimistic
'Fecha a tabela e destroi a variavel
Rst.Close
Set Rst = Nothing
'Fecha a conexao do banco e destroi a variavel
Cnn.Close
Set Cnn = Notihng
'Declara as Variaveis
Public Rst As ADODB.Recordset
Public Cnn As ADODB.Connection
Sub ConexaoBanco
Fonte = App.Path & "\NomeDoBanco.mdb"
Set Cnn = New ADODB.Connection
Cnn.CursorLocation = adUseClient
With Cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = Fonte
.Properties("Jet OLEDB:Database Password") = "SenhaDoBD"
.Open
End With
End Sub
'Para Abrir a Tabela
ConexaoBanco
Set Rst = New ADODB.Recordset
SQL = "SELECT * FROM SuaTabela"
Rst.Open SQL, Cnn, adOpenKeyset, adLockOptimistic
'Fecha a tabela e destroi a variavel
Rst.Close
Set Rst = Nothing
'Fecha a conexao do banco e destroi a variavel
Cnn.Close
Set Cnn = Notihng
Nunca mais acerto com isto. O Exemplo era este:
http://www.vbmania.com.br/vbmforum.php?varMethod=Abrir&varID=84903&varSubPagina=5&varFiltro=Nulo
http://www.vbmania.com.br/vbmforum.php?varMethod=Abrir&varID=84903&varSubPagina=5&varFiltro=Nulo
Aqui esta Novo, Editar, Deletar, Adicionar e Conectar ao Banco de Dados
Dim WithEvents bdm As BindingManagerBase
Private Sub btPrimeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btPrimeiro.Click
'BindingContext(Ds, "Authors").Position = 0
'Mais Rapido é
bdm.Position = 0
End Sub
Private Sub btUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btUltimo.Click
'BindingContext(Ds, "Authors").Position = -1 O BDM é A SIMPLIFICAÇÃO DO BINDINGCONTEXT
bdm.Position = bdm.Count - 1
End Sub
Private Sub btAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAnterior.Click
bdm.Position -= 1
End Sub
Private Sub btProximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btProximo.Click
bdm.Position += 1
End Sub
Private Sub btNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btNovo.Click
Try
Label17.Visible = True
Label18.Visible = True
bdm.EndCurrentEdit()
bdm.AddNew()
alterarEstadoBotões()
TextBox1.Focus()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAlterar.Click
bdm.EndCurrentEdit()
alterarEstadoBotões()
TextBox1.Focus()
End Sub
Private Sub alterarEstadoBotões()
plManipulação.Enabled = Not plManipulação.Enabled
plEfetivação.Enabled = Not plEfetivação.Enabled
plDados.Enabled = Not plDados.Enabled
btAlterar.Enabled = bdm.Count > 0
btExcluir.Enabled = bdm.Count > 0
End Sub
Private Sub btExcluir_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btExcluir.Click
Try
If MessageBox.Show("Deseja Excluir?", "Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
bdm.EndCurrentEdit() 'não esquecer
bdm.RemoveAt(bdm.Position)
alterarEstadoBotões()
btOK_Click(sender, e)
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click
Try
bdm.EndCurrentEdit()
da.Update(ds, "tb")
Catch ex As Exception
MessageBox.Show(ex.Message)
ds.RejectChanges()
Finally
ds.AcceptChanges()
alterarEstadoBotões()
End Try
End Sub
Private Sub btCancela_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCancela.Click
Try
bdm.CancelCurrentEdit() ' CANCELA O REGISTRO DA VEZ
alterarEstadoBotões()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub bdm_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles bdm.PositionChanged
TextBox4.Text = (bdm.Position + 1) & " de " & bdm.Count
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
cn.Open()
da.Fill(ds, "tb")
cn.Close()
Label17.Visible = False
Label18.Visible = False
bdm = BindingContext(ds, "tb")
bdm_PositionChanged(sender, e)
plManipulação.Enabled = True
plEfetivação.Enabled = False
plDados.Enabled = False
btAlterar.Enabled = bdm.Count > 0
btExcluir.Enabled = bdm.Count > 0
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label17.Text = DateTime.Now.ToLongTimeString.ToString
TextBox10.Text = DateTime.Now.ToShortTimeString
TextBox11.Text = DateTime.Now.ToShortTimeString
End Sub
Dim WithEvents bdm As BindingManagerBase
Private Sub btPrimeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btPrimeiro.Click
'BindingContext(Ds, "Authors").Position = 0
'Mais Rapido é
bdm.Position = 0
End Sub
Private Sub btUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btUltimo.Click
'BindingContext(Ds, "Authors").Position = -1 O BDM é A SIMPLIFICAÇÃO DO BINDINGCONTEXT
bdm.Position = bdm.Count - 1
End Sub
Private Sub btAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAnterior.Click
bdm.Position -= 1
End Sub
Private Sub btProximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btProximo.Click
bdm.Position += 1
End Sub
Private Sub btNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btNovo.Click
Try
Label17.Visible = True
Label18.Visible = True
bdm.EndCurrentEdit()
bdm.AddNew()
alterarEstadoBotões()
TextBox1.Focus()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAlterar.Click
bdm.EndCurrentEdit()
alterarEstadoBotões()
TextBox1.Focus()
End Sub
Private Sub alterarEstadoBotões()
plManipulação.Enabled = Not plManipulação.Enabled
plEfetivação.Enabled = Not plEfetivação.Enabled
plDados.Enabled = Not plDados.Enabled
btAlterar.Enabled = bdm.Count > 0
btExcluir.Enabled = bdm.Count > 0
End Sub
Private Sub btExcluir_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btExcluir.Click
Try
If MessageBox.Show("Deseja Excluir?", "Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
bdm.EndCurrentEdit() 'não esquecer
bdm.RemoveAt(bdm.Position)
alterarEstadoBotões()
btOK_Click(sender, e)
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click
Try
bdm.EndCurrentEdit()
da.Update(ds, "tb")
Catch ex As Exception
MessageBox.Show(ex.Message)
ds.RejectChanges()
Finally
ds.AcceptChanges()
alterarEstadoBotões()
End Try
End Sub
Private Sub btCancela_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCancela.Click
Try
bdm.CancelCurrentEdit() ' CANCELA O REGISTRO DA VEZ
alterarEstadoBotões()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub bdm_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles bdm.PositionChanged
TextBox4.Text = (bdm.Position + 1) & " de " & bdm.Count
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
cn.Open()
da.Fill(ds, "tb")
cn.Close()
Label17.Visible = False
Label18.Visible = False
bdm = BindingContext(ds, "tb")
bdm_PositionChanged(sender, e)
plManipulação.Enabled = True
plEfetivação.Enabled = False
plDados.Enabled = False
btAlterar.Enabled = bdm.Count > 0
btExcluir.Enabled = bdm.Count > 0
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label17.Text = DateTime.Now.ToLongTimeString.ToString
TextBox10.Text = DateTime.Now.ToShortTimeString
TextBox11.Text = DateTime.Now.ToShortTimeString
End Sub
Tópico encerrado , respostas não são mais permitidas