PROBLEMA EM CAMPO COM AUTO INCREMENTO DO BD
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
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
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
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
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
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
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
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
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.
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