Number of View: 2843
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)

Tenho trabalhado ultimamente em um projeto que utiliza ASP.NET. Apesar de já ter feito o curso da Microsoft S2B sei que aprendemos sobre qualquer linguagem de programação à medida que programamos nela.

Em uma oportunidade me deparei com o seguinte erro: You tried to assign the null value to a variable that is not a variant data type.

Como ainda não tinha prática com a linguagem, demorei um pouco para encontrar a solução. Conversando com outros desenvolvedores eles disseram ter passado pelo mesmo problema e também com certa dificuldade em resolver a intempérie. Por isso resolvi compartilhar com vocês a solução, espero que seja  bem útil.

Estou trabalhando com um “banco de dados” Access e ao criar um SQLDataSource temos como opção clicar em Advanced SQL Generation Options como aparece na tela abaixo:

sql_generator
Essa opção faz com que o Visual Studio (utilizo a versão 2008) gere automaticamente as strings de inserção, exclusão e alteração dos dados na tabela. O problema todo está justamente aí. Ao gerar o insert o Visual Studio informa, em sua string de inserção, que um dos parâmetros a serem informados é a chave primária. Mas como no meu caso a chave primária é autoincrement ela não deve ser informada no insert.

Para resolvermos o caso devemos procurar no código por: “InsertCommand” e retirar dali a chave primária de sua tabela. Logo depois retire “?” relativa ao parâmetro passado pela chave primária.

Minha string era assim:
InsertCommand=”INSERT INTO [tbPort] ([idTerminal], [idTerminalPort], [Berth]) VALUES (?, ?, ?)”

Corrigindo ficou assim:
InsertCommand=”INSERT INTO [tbPort] ([idTerminalPort], [Berth]) VALUES (?, ?)”

A segunda e última etapa da correção consiste em retirar da lista de parâmetros de inserção o campo da chave primária. Segue o meu exemplo:
Antes da correção:
<InsertParameters>
<asp:Parameter Name=”idTerminal” Type=”Int32″ />
<asp:Parameter Name=”idTerminalPort” Type=”Int32″ />
<asp:Parameter Name=”Berth” Type=”String” />
</InsertParameters>

Depois da correção:
<InsertParameters>
<asp:Parameter Name=”idTerminalPort” Type=”Int32″ />
<asp:Parameter Name=”Berth” Type=”String” />
</InsertParameters>

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)
Compartilhe:
  • Add to favorites
  • Blogosphere News
  • del.icio.us
  • Digg
  • Facebook
  • LinkedIn
  • Live
  • MSN Reporter
  • MySpace
  • Netvibes
  • PDF
  • RSS
  • Technorati
  • Twitter