2010-01-18 8 views
0

J'ai cette DataGridView et un BindingNavigator .. Chaque fois que j'ajoute une nouvelle entrée, elle renvoie une erreur qui dit: 'La colonne' newsID 'n'autorise pas les valeurs nulles.'BindingNavigator dans VB.NET 2008

Mais dans ma base de données MySQL, la colonne newsID est définie sur AutoIncrement. Comment vais-je résoudre ce problème?

Merci!

Voici mon code:

Public Class FormNews 
    Private Sub FormNews_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     'TODO: This line of code loads data into the 'UCWebDataSet.news' table. You can move, or remove it, as needed. 
     Me.NewsTableAdapter.Fill(Me.UCWebDataSet.news) 
    End Sub 

    Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click 
     Me.Validate() 
     Me.NewsBindingSource.EndEdit() 
     Me.NewsTableAdapter.Update(Me.UCWebDataSet) 
    End Sub 
End Class 
+0

Afficher la déclaration que vous utilisez, peut-être de cette façon que nous pouvons vous aider. – Younes

Répondre

0

Utilisez-vous LINQ ou ensembles de données?

Si oui, avez-vous utilisé le concepteur pour créer l'ensemble de données? Ce que vous devez faire est de spécifier la requête à insérer pour renvoyer la sortie d'ID générée.

Ce lien devrait vous aider à mettre à jour vos DataAdapters pour résoudre ce problème:

MSDN Forum Post

Toutes mes excuses si vous utilisez LINQ, ma réponse est non pertinente. EDIT: Je viens de réaliser que vous utilisez MySql.

Vous devrez faire quelque chose de différent pour obtenir la valeur d'incrémentation automatique, et je ne me rappelle pas si mysql travaille avec les concepteurs ...

0

Le problème est que la valeur d'incrément automatique utilisée par la base de données ne vous est pas connue lorsque ajouter le nouvel enregistrement. J'ai eu le même problème avec une base de données SQL Server 2005 sous-jacente.

Il doit cependant y avoir un moyen de configurer le jeu de données typé (je suppose dans les propriétés du champ), car quand je l'ai essayé sur un autre projet, tout d'un coup de nouveaux enregistrements numérotés automatiquement avec -1, -2, etc. ID. Après l'insertion dans la base de données, les valeurs réelles ont été obtenues et les valeurs temporaires ont été remplacées.

Cela pourrait cependant appliquer seulement parce que j'utilisais LINQ to SQL dans cet autre projet ...

Vous pouvez essayer de le remplir avec des valeurs fictives (par exemple le nombre négatif de tiques ou quelque chose) puis définissez/récupérez vous-même l'identifiant «réel» après l'avoir inséré dans la base de données.

Questions connexes