BOTAO EXCLUIR VB6
Prezados Colegas,
Boa tarde,
Estou iniciando novamente as atividades com a programação em VB6 e preciso de mais uma ajuda de vocês.
Estou implementando o botão excluir utilizando as seguintes linhas de código:
If txtcodbanco.Text = [Ô][Ô] Or txtabrbanco.Text = [Ô][Ô] Or txtnomebanco.Text = [Ô][Ô] Then
MsgBox [Ô]Nenhum registro a ser excluÃdo[Ô]
Else
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
SQL = [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
cnnComandoBanco.Execute SQL
MsgBox [Ô]Registro excluÃdo[Ô]
[ô]txtcodbanco.SetFocus
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
End If
e ao executar a ação a seguinte mensagem é apresentada:
Run-time Error [ô]3709[ô]
A conexão não pode ser usada para realizar esta operação. Ela está fechada ou é inválida neste contexto.
e o debug para nessa linha: cnnComandoBanco.Execute SQL
antes eu declarei: Public SQL As String
Poderiam me ajudar por favor?
Boa tarde,
Estou iniciando novamente as atividades com a programação em VB6 e preciso de mais uma ajuda de vocês.
Estou implementando o botão excluir utilizando as seguintes linhas de código:
If txtcodbanco.Text = [Ô][Ô] Or txtabrbanco.Text = [Ô][Ô] Or txtnomebanco.Text = [Ô][Ô] Then
MsgBox [Ô]Nenhum registro a ser excluÃdo[Ô]
Else
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
SQL = [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
cnnComandoBanco.Execute SQL
MsgBox [Ô]Registro excluÃdo[Ô]
[ô]txtcodbanco.SetFocus
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
End If
e ao executar a ação a seguinte mensagem é apresentada:
Run-time Error [ô]3709[ô]
A conexão não pode ser usada para realizar esta operação. Ela está fechada ou é inválida neste contexto.
e o debug para nessa linha: cnnComandoBanco.Execute SQL
antes eu declarei: Public SQL As String
Poderiam me ajudar por favor?
como você abre a conexao, pois o erro é explicito, a conexao nao está aberto
Marcelo,
Arrumei o problema da conexão, realmente estava fechada, agora está excluindo normalmente, porém, quando excluo registro os dados ainda continuam aparecendo nos respectivos txt[ô]s.
Gostaria de mover para o ultimo registro que esteja realmente no banco depois da exclusão confirmada. como faço:
Abaixo as linhas de código que estou utilizando:
Set rsSelecaoBanco = Nothing
Set CN = Nothing
CN.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN.Properties([Ô]Password[Ô]).Value = [Ô]tecsis[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN.Open [ô] Abrindo a conexão
Set rsSelecaoBanco = New ADODB.Recordset
Set rsSelecaoBanco.ActiveConnection = CN
If txtcodbanco.Text = [Ô][Ô] Or txtabrbanco.Text = [Ô][Ô] Or txtnomebanco.Text = [Ô][Ô] Then
MsgBox [Ô]Nenhum registro a ser excluÃdo[Ô]
Else
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
rsSelecaoBanco.Open [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
[ô]CN.Execute SQL
MsgBox [Ô]Registro excluÃdo com Sucesso[Ô]
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
End If
Arrumei o problema da conexão, realmente estava fechada, agora está excluindo normalmente, porém, quando excluo registro os dados ainda continuam aparecendo nos respectivos txt[ô]s.
Gostaria de mover para o ultimo registro que esteja realmente no banco depois da exclusão confirmada. como faço:
Abaixo as linhas de código que estou utilizando:
Set rsSelecaoBanco = Nothing
Set CN = Nothing
CN.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN.Properties([Ô]Password[Ô]).Value = [Ô]tecsis[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN.Open [ô] Abrindo a conexão
Set rsSelecaoBanco = New ADODB.Recordset
Set rsSelecaoBanco.ActiveConnection = CN
If txtcodbanco.Text = [Ô][Ô] Or txtabrbanco.Text = [Ô][Ô] Or txtnomebanco.Text = [Ô][Ô] Then
MsgBox [Ô]Nenhum registro a ser excluÃdo[Ô]
Else
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
rsSelecaoBanco.Open [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
[ô]CN.Execute SQL
MsgBox [Ô]Registro excluÃdo com Sucesso[Ô]
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
End If
Então colega faça um select max, e exiba os dados na textbox. exemplo
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
rsSelecaoBanco.Open [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
[ô]CN.Execute SQL
MsgBox [Ô]Registro excluÃdo com Sucesso[Ô]
[txt-color=#0000f0] Dim RS As Recordset
Set RS = CN.Execute ([Ô]SELECT MAX(ID) AS ultimo FROM BANCO[Ô])
If Not (RS.EOF and RS.BOF) then
Text1.Text = RS!ID
Text1.Text = RS!Nome
[ô] e assim por diante
End If[/txt-color]
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
rsSelecaoBanco.Open [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
[ô]CN.Execute SQL
MsgBox [Ô]Registro excluÃdo com Sucesso[Ô]
[txt-color=#0000f0] Dim RS As Recordset
Set RS = CN.Execute ([Ô]SELECT MAX(ID) AS ultimo FROM BANCO[Ô])
If Not (RS.EOF and RS.BOF) then
Text1.Text = RS!ID
Text1.Text = RS!Nome
[ô] e assim por diante
End If[/txt-color]
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
Bom dia Marcelo,
Funcionou perfeitamente, ficando o código do botão excluir do seguinte modo:
Set rsSelecaoBanco = Nothing
Set CN = Nothing
CN.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN.Properties([Ô]Password[Ô]).Value = [Ô]tecsis[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN.Open [ô] Abrindo a conexão
Set rsSelecaoBanco = New ADODB.Recordset
Set rsSelecaoBanco.ActiveConnection = CN
If txtcodbanco.Text = [Ô][Ô] Or txtabrbanco.Text = [Ô][Ô] Or txtnomebanco.Text = [Ô][Ô] Then
MsgBox [Ô]Nenhum registro a ser excluÃdo[Ô]
Else
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
rsSelecaoBanco.Open [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
[ô]CN.Execute SQL
MsgBox [Ô]Registro excluÃdo com Sucesso[Ô]
Set rsSelecaoBanco = CN.Execute([Ô]select * from SYSCONTROL.DBO.BANCO where codigo = (select max(codigo) from SYSCONTROL.DBO.BANCO)[Ô])
If Not (rsSelecaoBanco.EOF And rsSelecaoBanco.BOF) Then
txtcodbanco.Text = rsSelecaoBanco!CODIGO
txtabrbanco.Text = rsSelecaoBanco!ABREVIATURA
txtnomebanco.Text = rsSelecaoBanco!Nome
End If
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
End If
Só que tenho outro problema:
Depois que removo o item do banco, ao clicar no botão próximo por exemplo a seguinte mensagem é apresentada:
Run-time error: [ô]-2147217884 (80040e24)[ô]
O conjunto de linhas não oferece suporte para busca regressiva.
Lembrando que a programação do botão último é:
If Not rsSelecaoBanco.EOF And Not rsSelecaoBanco.BOF Then
rsSelecaoBanco.MoveLast
MostrarBanco
End If
o Debug para na linha rsSelecaoBanco.MoveLast
Poderia me auxiliar?
Funcionou perfeitamente, ficando o código do botão excluir do seguinte modo:
Set rsSelecaoBanco = Nothing
Set CN = Nothing
CN.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN.Properties([Ô]Password[Ô]).Value = [Ô]tecsis[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN.Open [ô] Abrindo a conexão
Set rsSelecaoBanco = New ADODB.Recordset
Set rsSelecaoBanco.ActiveConnection = CN
If txtcodbanco.Text = [Ô][Ô] Or txtabrbanco.Text = [Ô][Ô] Or txtnomebanco.Text = [Ô][Ô] Then
MsgBox [Ô]Nenhum registro a ser excluÃdo[Ô]
Else
If MsgBox([Ô]Deseja excluir o registro atual?[Ô], _
48 + vbYesNo, [Ô]Exclusão de Banco[Ô]) = vbYes Then
rsSelecaoBanco.Open [Ô]delete from BANCO where CODIGO = [ô][Ô] & txtcodbanco.Text & [Ô][ô][Ô]
[ô]CN.Execute SQL
MsgBox [Ô]Registro excluÃdo com Sucesso[Ô]
Set rsSelecaoBanco = CN.Execute([Ô]select * from SYSCONTROL.DBO.BANCO where codigo = (select max(codigo) from SYSCONTROL.DBO.BANCO)[Ô])
If Not (rsSelecaoBanco.EOF And rsSelecaoBanco.BOF) Then
txtcodbanco.Text = rsSelecaoBanco!CODIGO
txtabrbanco.Text = rsSelecaoBanco!ABREVIATURA
txtnomebanco.Text = rsSelecaoBanco!Nome
End If
Else
MsgBox [Ô]Operação Cancelada[Ô]
End If
End If
Só que tenho outro problema:
Depois que removo o item do banco, ao clicar no botão próximo por exemplo a seguinte mensagem é apresentada:
Run-time error: [ô]-2147217884 (80040e24)[ô]
O conjunto de linhas não oferece suporte para busca regressiva.
Lembrando que a programação do botão último é:
If Not rsSelecaoBanco.EOF And Not rsSelecaoBanco.BOF Then
rsSelecaoBanco.MoveLast
MostrarBanco
End If
o Debug para na linha rsSelecaoBanco.MoveLast
Poderia me auxiliar?
então colega a solução de um tópico seu anterior não resolve?
Não Marcelo, o sistema já está como me orientaram no tópico anterior, mais mesmo assim acontece o erro.
Alguém poderia ajudar?
posso te sugerir o seguinte um POG (programa orientado a gambiarra).
faça o seguinte crie um variavel no global do seu form para armazenar o id e nela faça a consulta da seguinte maneira
[ô]Crie a variavel
Dim IdAtual As Integer
[ô] faça a pesquisa simulando anterior
Set rsSelecaoBanco = CN.Execute([Ô]select * from SYSCONTROL.DBO.BANCO where codigo = [Ô] & (idCodigo - 1) )
IdCodigo = rsSelecaoBanco!CODIGO [ô] grava o codigo atual na variavel
'depois exiba os dados
faça o seguinte crie um variavel no global do seu form para armazenar o id e nela faça a consulta da seguinte maneira
[ô]Crie a variavel
Dim IdAtual As Integer
[ô] faça a pesquisa simulando anterior
Set rsSelecaoBanco = CN.Execute([Ô]select * from SYSCONTROL.DBO.BANCO where codigo = [Ô] & (idCodigo - 1) )
IdCodigo = rsSelecaoBanco!CODIGO [ô] grava o codigo atual na variavel
'depois exiba os dados
[txt-color=#e80000]posso te sugerir o seguinte um POG (programa orientado a gambiarra).[/txt-color]
Isto do treze, cansei de fazer isto.
Mas vamos lá.
Este erro pode acontecer de como abri a tabela para movimentação dos registros.
tipo
rsSelecaoBanco.Open [Ô]Select * From suatabela, cn, adOpenStatic
Agora.
Batalhar.
Isto do treze, cansei de fazer isto.
Mas vamos lá.
Este erro pode acontecer de como abri a tabela para movimentação dos registros.
tipo
rsSelecaoBanco.Open [Ô]Select * From suatabela, cn, adOpenStatic
Agora.
Batalhar.
Desculpem minha ignorância, tem muitos anos que não mexo com Visual Basic 6.
Segui o conselho do Marcelo-Treze, porém o código está dando erro:
O meu código do botão anterior ficou o seguinte:
Set rsSelecaoBanco = Nothing
Set CN = Nothing
CN.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN.Properties([Ô]Password[Ô]).Value = [Ô]tecsis[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN.Open [ô] Abrindo a conexão
rsSelecaoBanco.CursorLocation = adUseClient
Set rsSelecaoBanco = CN.Execute([Ô]SELECT * FROM SYSCONTROL.DBO.BANCO WHERE CODIGO = [Ô] & (IdCodigo - 1))
IdCodigo = rsSelecaoBanco!CODIGO
rsSelecaoBanco.MovePrevious
If rsSelecaoBanco.BOF Then
rsSelecaoBanco.MoveFirst
MsgBox [Ô]Inicio de arquivo[Ô], vbInformation
[ô]tlbbanco.Buttons(2).Enabled = False [ô] para que não seja pressionado o botão dando erro
Else
MostrarBanco
End If
Set rsSelecaoBanco = Nothing
Set CN = Nothing
Porém quando eu clico no botão anterior da a seguinte mensagem:
Run-time Error [ô]3021[ô]:
BOF ou EOF são verdadeiros, ou registro atual foi excluÃdo. A operação solicitada pelo aplicativo requer um registro atual.
Poderia me auxiliar mais uma vez?
Segui o conselho do Marcelo-Treze, porém o código está dando erro:
O meu código do botão anterior ficou o seguinte:
Set rsSelecaoBanco = Nothing
Set CN = Nothing
CN.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN.Properties([Ô]Password[Ô]).Value = [Ô]tecsis[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN.Open [ô] Abrindo a conexão
rsSelecaoBanco.CursorLocation = adUseClient
Set rsSelecaoBanco = CN.Execute([Ô]SELECT * FROM SYSCONTROL.DBO.BANCO WHERE CODIGO = [Ô] & (IdCodigo - 1))
IdCodigo = rsSelecaoBanco!CODIGO
rsSelecaoBanco.MovePrevious
If rsSelecaoBanco.BOF Then
rsSelecaoBanco.MoveFirst
MsgBox [Ô]Inicio de arquivo[Ô], vbInformation
[ô]tlbbanco.Buttons(2).Enabled = False [ô] para que não seja pressionado o botão dando erro
Else
MostrarBanco
End If
Set rsSelecaoBanco = Nothing
Set CN = Nothing
Porém quando eu clico no botão anterior da a seguinte mensagem:
Run-time Error [ô]3021[ô]:
BOF ou EOF são verdadeiros, ou registro atual foi excluÃdo. A operação solicitada pelo aplicativo requer um registro atual.
Poderia me auxiliar mais uma vez?
Faça seu login para responder