ERRO AO INCLUIR
Operação não permitida quando o objeto esta fechado
[ô] alguem pode ajudar ai
[ô] alguem pode ajudar ai
Axo k já está,..estaves a abrir e a fechar a conexão constantemente. abre apenas no form load aà é brincar com os rs e fecha a conexão apenas quando terminares
eset erro é quando o banco nao esta aberto
Alguns erros que eu vÃ:
1) Vc abre e fecha a conexão com o banco duas vezes no Form_Load.
2) Ao incluir dá erro pois além de não ter o recordset aberto a conexão tbm está fechada.
Solução:
1) Deixe a conexão com o banco aberta logo no Form_Load, só abra e feche os recordsets. Feche a conexão com o banco somente ao sair da tela.
2) No incluir, abra o recordset da tabela ANTES do Rs.AddNew, exemplo:
Rs.Open ........
Rs.AddNew
Rs([Ô]CAMPO[Ô]) = [Ô]...[Ô]
Rs.Update
Rs.Close: Set Rs = Nothing
1) Vc abre e fecha a conexão com o banco duas vezes no Form_Load.
2) Ao incluir dá erro pois além de não ter o recordset aberto a conexão tbm está fechada.
Solução:
1) Deixe a conexão com o banco aberta logo no Form_Load, só abra e feche os recordsets. Feche a conexão com o banco somente ao sair da tela.
2) No incluir, abra o recordset da tabela ANTES do Rs.AddNew, exemplo:
Rs.Open ........
Rs.AddNew
Rs([Ô]CAMPO[Ô]) = [Ô]...[Ô]
Rs.Update
Rs.Close: Set Rs = Nothing
não consegui eu deixei a conexão aberta somente uma vez agora e mesmo assim não ta gravando
Coloque isso no FORM LOAD
Coloque isso no BOTAO SAIR
Lembrando que nao precisa fechar a conexao principal
zere a recordset e utilize ela para outro processo
Tenta assim ve se funciona
Private Sub Form_Load()
conex.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path + [Ô]Dados.mdb[Ô] & [Ô];Persist Security Info=False[Ô]
rs.Open [Ô]Select * from Cad_Cliente order by Nome[Ô], conex, adOpenKeyset, adLockOptimistic
[ô]carregando as txts
lblCod.Caption = rs!Codigo
txtNome.Text = rs!Nome
mskTel.Text = rs!Telefone
mskCel.Text = rs!Celular
txtEnd.Text = rs!Endereço
txtCidade.Text = rs!Cidade
txtBairro.Text = rs!Bairro
txtCep.Text = rs!Cep
mskCPF.Text = rs!CPF
mskRG.Text = rs!RG
txtObs.Text = rs!Obs
[ô]carrga a listview
Dim clmX As ColumnHeader
Set clmX = ListView1.ColumnHeaders.Add(, , [Ô]Codigo[Ô])
clmX.Width = [Ô]1000[Ô]
Set clmX = ListView1.ColumnHeaders.Add(, , [Ô]Nome[Ô])
clmX.Width = [Ô]3500[Ô]
Set clmX = ListView1.ColumnHeaders.Add(, , [Ô]Telefone[Ô])
clmX.Width = [Ô]2000[Ô]
Set clmX = ListView1.ColumnHeaders.Add(, , [Ô]Celular[Ô])
clmX.Width = [Ô]2000[Ô]
[ô]ListView1.ListItems.Clear
Do Until rs.EOF
Set NewItem = ListView1.ListItems.Add(, , rs([Ô]Codigo[Ô]))
NewItem.SubItems(1) = [Ô][Ô] & rs([Ô]nome[Ô])
NewItem.SubItems(2) = [Ô][Ô] & rs([Ô]telefone[Ô])
NewItem.SubItems(3) = [Ô][Ô] & rs([Ô]Celular[Ô])
rs.MoveNext
Loop
conex.Close
End Sub
Coloque isso no BOTAO SAIR
Private Sub cmdSair_Click()
if rs.state > 0 then rs.close
Conex.close
set Conex = nothing
set rs = nothing
Unload me
end
End Sub
Lembrando que nao precisa fechar a conexao principal
zere a recordset e utilize ela para outro processo
Tenta assim ve se funciona
continua dando esse erro
Operação não permitida quando o objeto esta fechado
esse erro aparede ao clicar em Incluir e tb no bt sair
Operação não permitida quando o objeto esta fechado
esse erro aparede ao clicar em Incluir e tb no bt sair
Dei uma uma verificada no seu projeto e fiz alguns ajustes.
Você precisa abrir a conexao e o recordset, se não, não vai funcionar.
Detalhe também para o Código do Cliente, vc está tentando incluir duplicado. Como ocampo no banco está com numeração automática, você não precisa informar no momento da gravação, pois ele vai pegar o próximo numero disponÃvel.
Segue a rotina com correção:
[txt-color=#0000f0]Private Sub cmdIncluir_Click()
conex.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Wilton\Desktop\Pegasus Live\Dados.mdb;Persist Security Info=False[Ô]
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open [Ô]Select * from Cad_Cliente order by Nome[Ô], conex, adOpenKeyset, adLockOptimistic
rs.AddNew
[ô]rs!Codigo = lblCod.Caption + 1 <<<<<< Essa linha você não precisará informar!!!
rs!Nome = txtNome.Text
rs!Telefone = mskTel.Text
rs!Celular = mskCel.Text
rs!Endereço = txtEnd.Text
rs!Cidade = txtCidade.Text
rs!Bairro = txtBairro.Text
rs!Cep = txtCep.Text
[ô]rs!UF = txtUF.Text
rs!CPF = mskCPF.Text
rs!RG = mskRG.Text
[ô]rs!Cadastro = txtCelular.Text
rs!Obs = txtObs.Text
rs.Update
conex.Close
MsgBox [Ô]Registro incluido com sucesso...[Ô], vbInformation, [Ô]Aviso[Ô]
End Sub[/txt-color]
Detalhe também para o Código do Cliente, vc está tentando incluir duplicado. Como ocampo no banco está com numeração automática, você não precisa informar no momento da gravação, pois ele vai pegar o próximo numero disponÃvel.
Segue a rotina com correção:
[txt-color=#0000f0]Private Sub cmdIncluir_Click()
conex.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Wilton\Desktop\Pegasus Live\Dados.mdb;Persist Security Info=False[Ô]
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open [Ô]Select * from Cad_Cliente order by Nome[Ô], conex, adOpenKeyset, adLockOptimistic
rs.AddNew
[ô]rs!Codigo = lblCod.Caption + 1 <<<<<< Essa linha você não precisará informar!!!
rs!Nome = txtNome.Text
rs!Telefone = mskTel.Text
rs!Celular = mskCel.Text
rs!Endereço = txtEnd.Text
rs!Cidade = txtCidade.Text
rs!Bairro = txtBairro.Text
rs!Cep = txtCep.Text
[ô]rs!UF = txtUF.Text
rs!CPF = mskCPF.Text
rs!RG = mskRG.Text
[ô]rs!Cadastro = txtCelular.Text
rs!Obs = txtObs.Text
rs.Update
conex.Close
MsgBox [Ô]Registro incluido com sucesso...[Ô], vbInformation, [Ô]Aviso[Ô]
End Sub[/txt-color]
Tópico encerrado , respostas não são mais permitidas