2009-11-21 5 views
3

J'ai un porject dans VB.NET avec Ms Access As Backend ... Lors de l'insertion de données dans la table il n'y a pas d'erreur lors de la requête et Data Type Error, mais parfois OleDB Exception Error is " Type de données incorrecte dans l'expression du critère." la requête est ....Incompatibilité de type de données dans l'expression de critères

Dim cmdstr1 As String = "" 
     Dim constr As String = "" 
      Dim sqlQuery As String = "" 
     constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PhoneDiary\MyDiary.mdb" 

cmdstr = "Insert Into [DetailData]([ShortName],[Title],[FirstName],[MiddleName],[LastName],[Occupation],[DOB],[Gender],[Country],[State],[Address],[ZipCode],[City],[Memo],[CategoryId],[SubCategoryId],[FavouritesID],[PhotoPath],[vCardPath]) VALUES(aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss)" 

    con = New OleDbConnection(constr) 
    com = New OleDbCommand(cmdstr, con) 
    con.Open() 
com.Parameters.AddWithValue("aa", xx) 
com.Parameters.AddWithValue("bb", cmbTitle.Text) 
com.Parameters.AddWithValue..... 
com.Parameters.AddWithValue.... 
..................... 
...... 
com.ExecuteNonQuery()-------"Data type mismatch in criteria expression" Here occurs Error 

Alors peut-u ou quelqu'un me aider à résoudre ce problème, s'il vous plaît

+0

Il est clair que l'un des champs entrés est dans le format incorrect pour l'accès. Nous aurons besoin d'un peu plus de détails sur les valeurs insérées lorsque l'erreur se produit, et la structure de la table insérée dans. –

Répondre

5

Pour l'OP, vous pouvez poster un exemple de la valeur de cmdstr lorsque le OleDbException se produit ? Je soupçonne que mqbt a raison et c'est probablement votre champ DOB ne pas être capable d'analyser quel que soit le format que votre DateTime lui donne. En tant que question connexe, est-ce une bonne pratique d'utiliser OleDbCommand.Parameters.AddWithValue pour modifier les paramètres dans une chaîne SQL de cette façon? J'ai toujours construit des chaînes SQL dans VBA Access juste en concaténant la chaîne avec les paramètres puis en l'exécutant avec Docmd.RunSql(), qui semble aspirer de longues chaînes SQL avec des dizaines de paramètres. Mais il est simple de voir les paramètres et les types. Est-ce que je l'ai fait mal?

0

Exprimez votre erreur de non-concordance en détail, aidez à résoudre où elle jette le problème, pour quel type de données. Sinon, vous pouvez vérifier l'erreur en détail sur la boîte de message d'erreur

Questions connexes