PROBLEMA EM CAMPO COM AUTO INCREMENTO DO BD

ROGERCSANTOS 25/02/2014 10:54:59
#435262
Prezados,

Bom dia,

Estou desenvolvendo um projeto utilizando o VB6 e o o banco de Dados SQL Server 2008 R2.
Na minha tela de cadastro eu utilizo um campo chamado código e que no sistema é de auto numeração.
O problema é que eu usei a auto numeração do banco e não programada via Visual Basic.
Quando salvo o registro o campo fica em branco na tela (no banco ele fica preenchido e na tela não é apresentado). Acho que falta algum refresh ou algo parecido. Poderiam me ajudar?

o código do botão salvar é o seguinte

Case 8 [ô]Botão Salvar

Dim CN_Salv As New ADODB.Connection
Dim rsSelecaoBancoSalv As New ADODB.Recordset
Dim cnnComandoBanco_Salv As New ADODB.Command
Dim C As Control

CN_Salv.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_Salv.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_Salv.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_Salv.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_Salv.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_Salv.Open [ô] Abrindo a conexão

Set rsSelecaoBancoSalv = New ADODB.Recordset
Set rsSelecaoBancoSalv.ActiveConnection = CN_Salv

If txtcodbanco.Text = Empty Then

imgerrobco1.Visible = True
txtcodbanco.SetFocus
txtcodbanco.BackColor = &HC0FFFF

End If

If txtabrbanco.Text = Empty Then

imgerrobco2.Visible = True
txtabrbanco.SetFocus
txtabrbanco.BackColor = &HC0FFFF

End If

If txtnomebanco.Text = Empty Then

imgerrobco3.Visible = True
txtnomebanco.SetFocus
txtnomebanco.BackColor = &HC0FFFF

End If



If Novo_Edit = [Ô]N[Ô] And txtcodbanco.Text <> [Ô][Ô] And txtabrbanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] Then

rsSelecaoBancoSalv.Open [Ô]INSERT INTO BANCO(CODIGOFEBRABAN,ABREVIATURA,NOME) values ([ô][Ô] & txtcodbanco.Text & [Ô][ô],[ô][Ô] & txtabrbanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô])[Ô], CN_Salv, adOpenStatic

If SelecaoFoto = True Then
LogoAntigo = LogoNovo
LogoNovo = App.Path & [Ô]\SysControl\Imagens\Logo\[Ô] & txtcodbanco.Text & [Ô].jpg[Ô]
Name LogoAntigo As LogoNovo
End If
tlbbanco.Buttons(1).Enabled = True
tlbbanco.Buttons(2).Enabled = True
tlbbanco.Buttons(3).Enabled = True
tlbbanco.Buttons(4).Enabled = True
tlbbanco.Buttons(5).Enabled = True
tlbbanco.Buttons(6).Enabled = True
tlbbanco.Buttons(7).Enabled = True
tlbbanco.Buttons(8).Enabled = False
tlbbanco.Buttons(9).Enabled = False
tlbbanco.Buttons(10).Enabled = True
tlbbanco.Buttons(11).Enabled = True
tlbbanco.Buttons(12).Enabled = True
txtabrbanco.Enabled = False
txtcodbanco.Enabled = False
txtnomebanco.Enabled = False
cmdinserirlogobanco.Enabled = False
cmdexcluirlogobanco.Enabled = False
imglogobanco.Enabled = False

End If


If Novo_Edit = [Ô]E[Ô] And txtcodbanco.Text <> [Ô][Ô] And txtabrbanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] Then

rsSelecaoBancoSalv.Open [Ô]UPDATE BANCO SET CODIGOFEBRABAN = [Ô] & txtcodbanco.Text & [Ô], ABREVIATURA = [ô][Ô] & txtabrbanco.Text & [Ô][ô], NOME =[ô][Ô] & txtnomebanco.Text & [Ô][ô] Where Codigo = [Ô] & txtcodigo.Text, CN_Salv, adOpenStatic

tlbbanco.Buttons(1).Enabled = True
tlbbanco.Buttons(2).Enabled = True
tlbbanco.Buttons(3).Enabled = True
tlbbanco.Buttons(4).Enabled = True
tlbbanco.Buttons(5).Enabled = True
tlbbanco.Buttons(6).Enabled = True
tlbbanco.Buttons(7).Enabled = True
tlbbanco.Buttons(8).Enabled = False
tlbbanco.Buttons(9).Enabled = False
tlbbanco.Buttons(10).Enabled = True
tlbbanco.Buttons(11).Enabled = True
tlbbanco.Buttons(12).Enabled = True
txtabrbanco.Enabled = False
txtcodbanco.Enabled = False
txtnomebanco.Enabled = False
cmdinserirlogobanco.Enabled = False
cmdexcluirlogobanco.Enabled = False
imglogobanco.Enabled = False
End If


ROGERCSANTOS 25/02/2014 15:09:02
#435284
Boa tarde Barros,

Obrigado pelo retorno.
eu não consegui resolver o problema. Seria somente pegar este código e colocar após o insert?

Abraço

Rogério
ROGERCSANTOS 03/03/2014 00:38:36
#435452
Prezados,

Bom dia,

O Barros me indicou o uso do [Ô]SELECT SCOPE_IDENTITY()[Ô] para retornar o valor de uma campo de auto incremento do banco em um form, porém não estou conseguindo o resultado esperado.

Levando em consideração que meu código de INSERT é:

rsSelecaoBancoSalv.Open [Ô]INSERT INTO BANCO(CODIGOFEBRABAN,ABREVIATURA,NOME) values ([ô][Ô] & txtcodbanco.Text & [Ô][ô],[ô][Ô] & txtabrbanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô])[Ô], CN_Salv, adOpenStatic

Neste contexto como utilizaria o SCOPE_IDENTITY()? Fiz algumas pesquisas e não encontrei a solução.

Poderiam me auxiliar, por gentileza?

Este comando é totalmente novo para mim.

Antecipadamente agradeço a atenção de todos
OMAR2011 03/03/2014 09:05:16
#435458
Resposta escolhida
Dim CN_Salv As New ADODB.Connection
Dim rs As New ADODB.Recordset

CN_Salv.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_Salv.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_Salv.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_Salv.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_Salv.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_Salv.Open [ô] Abrindo a conexão

Set rs = New ADODB.Recordset
Set rs.ActiveConnection = CN_Salv

rs.Open [Ô]SELECT IDENT_CURRENT([ô]BANCO[ô]) AS id [Ô]
Text1.Text = [Ô][Ô] & rsPed!id + 1 [ô]Este vai ser o valor dod registro incluido.

Outra forma.

Dim rs As Recordset
Dim sSQL As String

sSQL = [Ô]SELECT MAX(SeuCampo) as Id From Banco[Ô]
Set rs = CN_Salv.Execute(sSQL)
If Not IsNull(rs!Id) Then
Text1.text = Val(rs!Id + 1)
End If
ROGERCSANTOS 04/03/2014 20:21:33
#435517
Perfeito Omar, sua solução abaixo funcionou perfeitamente:

Dim rs As Recordset
Dim sSQL As String

sSQL = [Ô]SELECT MAX(SeuCampo) as Id From Banco[Ô]
Set rs = CN_Salv.Execute(sSQL)
If Not IsNull(rs!Id) Then
Text1.text = Val(rs!Id + 1)
End If


Mais uma vez agradeço as ótimas dicas que disponibiliza neste fórum.
Tópico encerrado , respostas não são mais permitidas