2016-06-06 2 views
1

데이터베이스의 데이터를 DataGridView에 표시하려고합니다. "데이터 유형 불일치 오류"와 함께 da.Fill(ds, "SAMPLE")에 오류가 발생합니다. 스크린 샷을 참조하십시오. 내 날짜 형식은 datetimepicker와 데이터베이스 값 모두 '짧은 날짜'입니다.VB.NET을 사용하여 Access 데이터베이스에서 두 날짜 사이에 데이터 가져 오기

Imports System.Data.OleDb 
Public Class Form1 
Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Recto D Sanchez Jr\Documents\sample.accdb" 
Dim MyConn As OleDbConnection 
Dim da As OleDbDataAdapter 
Dim ds As DataSet 
Dim tables As DataTableCollection 
Dim source1 As New BindingSource 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    MyConn = New OleDbConnection 
    MyConn.ConnectionString = connString 
    ds = New DataSet 
    tables = ds.Tables 
    da = New OleDbDataAdapter("Select * from SAMPLE where [LOGDATE] between '" & DateTimePicker1.Text & "' And '" & DateTimePicker2.Text & "'", MyConn) 
    da.Fill(ds, "SAMPLE") 
    Dim view As New DataView(tables(0)) 
    source1.DataSource = view 
    DataGridView1.DataSource = view 
End Sub 

최종 클래스

error screenshot

+0

' "SAMPLE"'을 삭제 해 보셨습니까? – Spiderman

+0

시도해 보았습니다. 같은 오류. : ( – jaysonpogi

답변

1

을 시도해보십시오

MyConn = New OleDbConnection(connString) 
Dim cmd As New OleDbCommand("SELECT * FROM [SAMPLE] WHERE [LOGDATE] Between ? And ?", MyConn) 
cmd.Parameters.AddWithValue("?", DateTimePicker1.Value.Date) 
cmd.Parameters.AddWithValue("?", DateTimePicker2.Value.Date) 
da = New OleDbDataAdapter(cmd) 
ds = New DataSet 
da.Fill(ds, "SAMPLE") 

다른 날짜 형식, 날짜 리터럴 및 다른 잠재적 함정을 다루는 번거 로움을 덜어줍니다.

+0

당신은 그것을 손톱! 대단히 감사합니다! : D – jaysonpogi

0

당신을 DateTimePicker 컨트롤이 이미이 같은 매개 변수화 된 쿼리를 사용하여 더 좋은 행운이있을 수 있습니다 적절한 날짜 시간 값을 처리하기 때문에

da = New OleDbDataAdapter("Select * from SAMPLE where [LOGDATE] between #" & DateTimePicker1.Value.ToString("MM/dd/yyyy HH:mm:ss") & "# And #" & DateTimePicker2.Value.ToString("MM/dd/yyyy HH:mm:ss") & "#", MyConn) 
관련 문제