BOTAO EXCLUIR VB6

ROGERCSANTOS 26/11/2013 16:36:12
#431501
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?
MARCELO.TREZE 26/11/2013 16:41:00
#431503
como você abre a conexao, pois o erro é explicito, a conexao nao está aberto

ROGERCSANTOS 26/11/2013 17:19:24
#431506
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
MARCELO.TREZE 26/11/2013 18:38:36
#431508
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
ROGERCSANTOS 27/11/2013 08:07:01
#431515
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?
MARCELO.TREZE 27/11/2013 08:25:58
#431517
então colega a solução de um tópico seu anterior não resolve?
ROGERCSANTOS 27/11/2013 08:34:45
#431518
Não Marcelo, o sistema já está como me orientaram no tópico anterior, mais mesmo assim acontece o erro.
ROGERCSANTOS 27/11/2013 09:55:28
#431527
Alguém poderia ajudar?
MARCELO.TREZE 27/11/2013 10:44:04
#431529
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

OMAR2011 27/11/2013 11:01:55
#431531
[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.
ROGERCSANTOS 28/11/2013 10:33:09
#431563
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?
Página 1 de 2 [13 registro(s)]
Faça seu login para responder