2016-08-09 1 views
0

Im ayant un message d'erreur « incompatibilité de type de données dans l'expression de critères »VB.NEt - incompatibilité de type de données dans les critères d'expression

Dim Conn As OleDbConnection = New OleDbConnection 
    Dim provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
    Dim dataFile = "E:\TME Review\TME Review Database.accdb" 
    Conn.ConnectionString = provider & dataFile 
    Conn.Open() 
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Monthly where [Date Ended]= '" + TextBox3.Text + "'", Conn) 
    Dim dr As OleDbDataReader = cmd.ExecuteReader 

[Date de fin] type de données est le texte et le contenu de TextBox3 est une chaîne valeur. J'ai vérifié deux fois. Une idée de pourquoi je reçois une erreur de type de données d'erreur? Merci d'avance

+0

Essayez de remplacer + par &. –

+0

Votre passage la date fausse ... – Codexer

+0

je passe la date mal? Peux-tu l'expliquer? – Marceline

Répondre

-1

En VB, pour concaténer les chaînes, vous devez utiliser "&" au lieu de "+".

EDIT

C'est la bonne réponse si toutes les données est une chaîne ... Mais, si votre date est définie comme '12/05/2009' vous devez le mettre enfermé #, comme:

where [End Date] = '#12/05/2009#' 
+0

J'ai déjà essayé, mais l'erreur persiste. – Marceline

+0

Ce n'est pas la solution et ce n'est pas la bonne erreur pour ça. – Codexer

+0

mais je ne cherche pas à concaténer les chaînes, en recherchant dans la base de données les données avec la date sélectionnée/entrée. – Marceline

-1

Vérifiez la valeur entrée dans votre zone de texte. Dans ce cas où vous filtrez des enregistrements en utilisant un champ de date, il vaut mieux vérifier d'abord la valeur dans votre zone de texte si c'est une date valide ou non avant de l'utiliser pour votre OleDBCommand.

Dim cmd As OleDbCommand= Nothing 
If IsDate(TextBox3.Text)= True Then 
    cmd= New OleDbCommand("SELECT * FROM Monthly where [Date Ended]= '" + TextBox3.Text + "'", Conn) 
End If 
+0

La valeur entrée dans la zone de texte est une valeur de chaîne, qui est saisie manuellement (août 2016) – Marceline

+0

Août 2016 n'est pas une date valide. Je vous suggère d'utiliser datetimepicker pour cela si possible. –