.NET: “You tried to assign the null value to a variable that is not a variant data type”, solucionando o problema
Postado em : 02-10-2009 | Por : Augusto Schultz | Em : Programação
1
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:

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>
















Olá amigo, Neste momento estava pensando nisto e vc iluminou meu caminho já estava desistindo e passando via código. Foi bastante útil, como me ajudou esta informação. Grande abraço, fica na Paz do Senhor.