2012-04-20 4 views
6

Tôi đang sử dụng ASP.NET/VB và tôi đang cố chèn ngày và giờ vào trường Ngày/giờ truy cập, nhưng tôi gặp lỗi (Loại dữ liệu không khớp biểu thức tiêu chí). Dưới đây là một phiên bản đơn giản của mã của tôi:Chèn ngày/giờ vào cơ sở dữ liệu Access

Dim myDate As Date = Now() 
Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (?)", myConn) 
myIns1.Parameters.AddWithValue("@myDate", myDate) 
myIns1.ExecuteNonQuery() 

Không chắc chắn tại sao tôi gặp lỗi và không chắc chắn đây có phải là cách chính xác để tiếp cận chèn ngày hiện tại hay không. Từ việc xem xét các câu hỏi tương tự khác, dường như có một số cách khác nhau để thực hiện điều này, nhưng kiến ​​thức kỹ thuật của tôi rất hạn chế nên tôi gặp khó khăn trong việc tìm ra (nói cách khác giải mã các câu trả lời sử dụng thuật ngữ kỹ thuật mà tôi biết không có gì).

Cảm ơn trước!

Trả lời

2

Bạn có thể bỏ qua tham số hoàn toàn và chỉ cần viết hàm NOW ngay vào truy vấn.

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (NOW())", myConn) 
myIns1.ExecuteNonQuery() 

Câu trả lời này (một ở trên) có lẽ là giải pháp tốt hơn, nhưng lý do tại sao đoạn code ban đầu đã không làm việc là vì các tham số không được nêu tên. Bạn có thể thử này:

Dim myDate As Date = Date.Now 
Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (@myDate)", myConn) 
myIns1.Parameters.AddWithValue("@myDate", myDate) 
myIns1.ExecuteNonQuery() 

+0

Điều đó hoạt động, cảm ơn! – Sara

+1

Các thông số được đặt tên không hoạt động với OleDb. Chúng chỉ hoạt động ở vị trí mà không hoạt động sớm hơn vì giá trị được chuyển không phải là DateTime. : http://www.mikesdotnetting.com/Article/92/MS-Access-Date-and-Time-with-ASP.NET –

+0

Mike, bạn nói đúng khi bạn nói rằng các tham số chỉ hoạt động theo vị trí. nói rằng nó không hoạt động "bởi vì giá trị được thông qua không phải là một DateTime". Nó chắc chắn là một DateTime. Hàm ToOADate() chuyển đổi giá trị từ một DateTime thành một Double. –

-1

Hãy thử thay đổi

Dim myDate As Date = Now() 

để

Dim myDate As DateTime = Now() 

MS Access không đưa ra một datatype NGÀY, chỉ DATETIME.

+0

Ngày và DateTime (nếu namespace System đang được nhập khẩu) có nghĩa là một điều chính xác trong VB.NET. –

+0

Đã thử, nhưng vẫn gặp lỗi tương tự. – Sara

+0

["Loại dữ liệu' DATETIME' ... từ đồng nghĩa là 'DATE',' TIME', 'DATETIME' và' TIMESTAMP'] (http://msdn.microsoft.com/en-us/library/aa140015 (văn phòng.10) .aspx # acintsql_datatypes) – onedaywhen