Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Braulio Holtz

Select Identity - Erro/

Recommended Posts

Estou usando um select pra poder pegar o ultimo id de uma tabela, lembrando que os ID's são gerados de um modo diferente, não em sequencia, como a tabela aspnet_users

Estou querendo com que uma variavel receba o valor do ultimo ID pra que eu possa ligar com outra tabela. Aqui está o código

 

Dim MyConn As New SqlConnection(ConfigurationManager.ConnectionStrings("xxxxxxxxxxxx").ConnectionString)

		MyConn.Open()
		Dim strSelect As SqlCommand = New SqlCommand("select IDENT_CURRENT('aspnet_users')", MyConn)
		Dim dr As SqlDataReader = strSelect.ExecuteReader
		Dim UserId As String = dr(0)
		Response.Write(UserId)
		txtCodigo.Text = UserId
		MyConn.Close()
Está dando esse ero "Invalid attempt to read when no data is present." e quando coloco no lugar de (0) o nome do campo dá este erro " UserId

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

 

Exception Details: System.IndexOutOfRangeException: UserId"

 

Como será que faz isso, mexi e remexi este código, está até bem bagunçadinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve verificar se o DataReader esta sendo lido, tente da seguinte forma:

 

Dim MyConn As New SqlConnection(ConfigurationManager.ConnectionStrings("xxxxxxxxxxxx").ConnectionString)
MyConn.Open()
Dim strSelect As SqlCommand = New SqlCommand("select IDENT_CURRENT('aspnet_users')", MyConn)
Dim dr As SqlDataReader = strSelect.ExecuteReader
if dr.Read Then
	Dim UserId As String = dr(0)
End If
Response.Write(UserId)
txtCodigo.Text = UserId
MyConn.Close()

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve verificar se o DataReader esta sendo lido, tente da seguinte forma:

 

Dim MyConn As New SqlConnection(ConfigurationManager.ConnectionStrings("xxxxxxxxxxxx").ConnectionString)
MyConn.Open()
Dim strSelect As SqlCommand = New SqlCommand("select IDENT_CURRENT('aspnet_users')", MyConn)
Dim dr As SqlDataReader = strSelect.ExecuteReader
if dr.Read Then
	Dim UserId As String = dr(0)
End If
Response.Write(UserId)
txtCodigo.Text = UserId
MyConn.Close()

Abraços...

Sem o if fica com esse erro "Invalid attempt to read when no data is present."

Com o If dá um erro de que o UserId não está declarado.

Será que o Select é isso mesmo, estou querendo pegar o campo UserId, e o dr fica dr("UserId) ou dr(0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem tinha percebido. O problema é que a variável esta sendo declarada dentro do if, desta forma só será possível utiliza-la dentro do if.

Altere o código para:

Dim MyConn As New SqlConnection(ConfigurationManager.ConnectionStrings("xxxxxxxxxxxx").ConnectionString)
MyConn.Open()
Dim strSelect As SqlCommand = New SqlCommand("select IDENT_CURRENT('aspnet_users')", MyConn)
Dim dr As SqlDataReader = strSelect.ExecuteReader
Dim UserId As String
if dr.Read Then
	UserId = dr(0)
End If
Response.Write(UserId)
txtCodigo.Text = UserId
MyConn.Close()

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.