2016-05-19 11 views
0

my Table Screen shotMein Fehler ist Mismatch Datentyp in Kriterienausdruck

Dies ist mein Code: Bitte helfen Ihnen danken. In meinem command.ExecuteReader Fehler zeigt Datentyp Mismatch in Kriterien Ausdruck.

conn.Open() 
command.CommandText = "INSERT INTO [Physical]([PhysicalNo],[StockCode],[StockName],[SDate],[EditDate],[OnhandQty])" + 
         "VALUES(@PhysicalNo,@StockCode,@StockName,@SDate,@EditDate,@OnhandQty)" 

command.Parameters.AddWithValue("@PhysicalNo", txtPhysicalno.Text) 
command.Parameters.AddWithValue("@StockCode", cboStockCode.Text) 
command.Parameters.AddWithValue("@StockName", txtstockname.Text) 
command.Parameters.AddWithValue("@SDate", cboStockdate.Text) 
command.Parameters.AddWithValue("@EditDate", EditPicker.Text) 
command.Parameters.AddWithValue("OnhandQty", txtqty.Text) 

Dim read1 As OleDbDataReader = command.ExecuteReader 

While read1.Read 

End While 

conn.Close() 
+0

Bitte konvertieren Sie Ihre Eingabe in die gleiche wie die Tabelle Datentyp –

+1

** Erstes **, Sie fehlen ein '@' in der letzten Parameter.AddWithValue. ** Zweite **, verwenden Sie 'ExecuteReader' für eine Insert-Anweisung. Sie sollten 'ExecuteNonQuery' verwenden. ** Third **, [Verwenden Sie AddWithValue nicht] (http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-ready/) –

+0

@Chetan Sanghani, was ist der beste Weg als AddWithValue Danke, dass Sie mir geholfen haben. – Hackweiser

Antwort

0

data type mismatch Fehler bedeutet, dass sie Werte in der Tabelle einfügen, die mit eingegebenen Datentyp übereinstimmen, sind es nicht.

von Ihrer Spaltenüberschriften ich denke, Sie müssen date-time Datentyp für Datumswerte und int Datentyp für Anzahl Datentyp Werte einfügen.

Wenn diese Antwort nicht hilft, geben Sie bitte einen Screenshot Ihrer Tabellenentwurfsansicht an.

+0

Harshil Shah bitte klicken Sie auf meine Tabelle Screenshot Vielen Dank für Ihre Hilfe ... – Hackweiser

+0

Ihre Spalte Datentypen sind Int, Text, Datum und was ich hier sehe ist, dass Sie nur Text Typ von Datentyp hinzufügen. Versuchen Sie also, es entsprechend Ihrer Tabelle zu ändern. data-type –

+0

Sha Fehler Datentyp Mismatch in Kriterien Ausdruck Vielen Dank für Ihre Hilfe. – Hackweiser

0

Damit die AddWithValue-Methode ordnungsgemäß funktioniert, muss der Wert mit dem richtigen Datentyp für die Spalte in der Datenbank übergeben werden. Dies ist am offensichtlichsten für die SDate und EditDate Spalten erforderlich.

Beispiel für sdate:

const DATEFORMAT As String = "dd.MM.yyyy";     
command.Parameters.AddWithValue("@SDate", _ 
       DateTime.ParseExact(cboStockdate.Text,DATEFORMAT, _ 
           System.Globalization.CultureInfo.InvariantCulture, _ 
           System.Globalization.DateTimeStyles.None)) 

Offensichtlich Datumsformat, Culture und Datetimestyles sollte angepasst werden, was im Rahmen der Anwendung geeignet ist. Vielleicht möchten Sie sich auch die Methode TryParse ansehen.

Für die anderen Spalten wird die Konvertierung wahrscheinlich automatisch während der SQL-Ausführung ausgeführt, aber es ist dennoch ratsam, eine explizite Konvertierung durchzuführen, wenn der Parameter zum Befehl hinzugefügt wird.

Eine noch bessere Möglichkeit, die Parameter hinzuzufügen, wäre, AddWithValue überhaupt nicht zu verwenden. Sie könnten die Add-Methode verwenden und den Datentyp (auf der Datenbankseite) des Parameters explizit angeben.

Dim par As OleDbParameter = new OleDbParameter("@SDate", OleDbType.Date) 
par.Value = DateTime.Parse(cboStockdate.Text) 
cmd.Parameters.Add(par) 

Je spezifischer Ansatz ParseExact (wie in der ersten Codebeispiel) verwenden, um die Texteingabe zu Datetime hier würde auch konvertieren anzuwenden.

+0

PhilS Danke, ich werde es versuchen. – Hackweiser

+0

PhilS funktioniert nicht Der Fehler ist String wurde nicht als gültige DateTime erkannt. – Hackweiser

+0

PhilS gleicher Fehler Zeichenfolge wurde nicht als gültige DateTime erkannt.Ich danke dir, dass du mir geholfen hast. – Hackweiser

Verwandte Themen