2013-05-08 4 views
0

MDB 데이터베이스에 대해 아래 코드를 실행하면 데이터 테이블이 비어 있습니다. 그러나이 쿼리 도구를 데이터베이스에 대해 실행하면 2 개의 레코드가 반환됩니다.OleDbCommand 매개 변수의 날짜 형식이 올바른지 확인하는 방법은 무엇입니까?

무엇이 문제 일 수 있습니까?

매개 변수의 날짜 형식에 문제가 있습니까 (예 : 8/5/13 vs 5/8/13)?

Using oDB As OleDbConnection = GetDbConnection() 
    Using oCmd As New OleDbCommand("SELECT * " & _ 
      " FROM Table1, Table2" & _ 
      " WHERE (Table1.Date BETWEEN @Date1 AND @Date2) AND (Table1.Id IS NULL) AND (Table2.number = Table1.num) AND (Table1.code1 = Table2.code1) ", oDB) 
     oCmd.Parameters.AddWithValue("@Date1", Date.Today) 
     oCmd.Parameters.AddWithValue("@Date2", Date.Today.AddDays(Me.intDaysAhead)) 
     oDB.Open() 
     dt = New DataTable() 
     Using da As OleDbDataAdapter = New OleDbDataAdapter(oCmd) 
      da.Fill(dt) 
     End Using 
    End Using 
End Using 
+0

datetime 형식이 이러한 비교를 사용하는 데이터베이스와 일치하지 않으면 작동하지 않습니다. dt 형식이 동일한 지 확인하려면'DateTime.ToString ("FormatString")'을 사용하십시오. 추신 : VB는 C#으로 태그하지 마십시오. – evanmcdonnal

+0

table3은 무엇입니까? 당신은 데카르트 제품을 원했습니까? –

+0

@ TonyHopkinson : 아니요, 삭제되었습니다. – CJ7

답변

1

나는 당신이 옳다고 생각합니다. 매개 변수 유형을 지정하는 것이 좋습니다 OleDbType

oCmd.Parameters.Add("@Date1", OleDb.OleDbType.Date).Value = Date.Today 
+0

Visual Studio 2010 IDE에서 해당 라인이 컴파일되지 않습니다. – CJ7

+0

오류 메시지 : '식은 값이므로 배정의 대상이 될 수 없습니다.' – CJ7

+0

대답은 새로운 버전의 코드입니다. 이제 VS2010에서 테스트되었습니다. "@ Date2"와 비슷한 방식으로 코드를 수정하는 것을 잊지 마십시오. – IvanH

관련 문제