2014-07-13 6 views
-1

90 일 이내에 만료되는 모든 의약품을 나열하려고하는데 구문 오류가 발생했습니다. 아무도 알려 줄 수 없습니다.만료 목적 날짜 간격

Try 
     If (Me.conn.State = ConnectionState.Closed) Then 
      Me.conn.Open() 
     End If 
     Dim da As New SqlDataAdapter((" 
      select 
       ItemNo,Name,ManufacturerName,MedicineName,BatchNo,MedicineLocation, 
       CostPrice,SellPrice,QtyAvailable,ExpiryDate,StockValue 
      from ItemTypes,Items 
      where ItemTypes.ItemTypesId=Items.ItemTypesId 
       and ExpiryDate> '" & Strings.Format(DateAndTime.Now) & "' + INTERVAL 90 DAY "), conn) 
     Dim dataSet As New DataSet 
     Dim dt As New DataTable 
     da.Fill(dataSet, "dt") 
     Me.dgrdItems.DataSource = dataSet.Tables.Item(0) 
    Catch exception1 As Exception 
     ProjectData.SetProjectError(exception1) 
     Dim exception As Exception = exception1 
     Interaction.MsgBox(exception.Message, MsgBoxStyle.Critical, Nothing) 
     ProjectData.ClearProjectError() 
    End Try 
+1

어떤 구문 오류가 표시되며 어떤 줄에 있습니까? –

+0

'ExpiryDate'가 날짜 열인 경우''and ExpiryDate> ' "& Strings.Format (DateAndTime.Now) &"'+ INTERVAL' – Plutonix

+0

구간 90 일 간격 – user3787279

답변

1

내 생각에 interval을 이해하지 못하는 데이터베이스를 사용하고있는 것 같습니다. 다음은 SQL Server에서이 쿼리를 표현하는 방법입니다.

select ItemNo, Name, ManufacturerName, MedicineName, BatchNo, MedicineLocation, 
     CostPrice, SellPrice, QtyAvailable, ExpiryDate, StockValue 
from ItemTypes join 
    Items 
    on ItemTypes.ItemTypesId = Items.ItemTypesId 
where ExpiryDate > getdate() + 90; 

두 가지 사항이 변경되었습니다. 먼저 where 절에있는 암시 적 조인의 구식 구문보다는 명시적인 join 구문을 사용합니다. 둘째, 데이터베이스에서 날짜 비교를 수행합니다.

MySQL은 :

where ExpiryDate > now() + interval 90 day 

오라클 :

where ExpiryDate > sysdate + 90 

포스트 그레스 : 여기

는 다른 데이터베이스에 대한 where 논리입니다

where ExpiryDate > now() + interval '90 days' 

참고이 알 그래서 시간 구성 요소를 가지고 있지만, 일반적으로 쉽게 제거 할 수 있습니다 (데이터베이스 특정 방식으로).

+0

이제 괜찮습니다. 코드의 마지막 부분 만 사용하고 만료 된 약품을 표시하고 싶지 않은 문제는 90 일 이내에 오늘부터 약품을 나열하고 싶습니다. expiry – user3787279

+0

@ user3787279 ... 이해가 안되네. 당신의 질문은 로직에 대해 당신이 당신의'where' 절에 있기 때문에 오히려 명백합니다. 문법 오류에 관한 질문입니다. 논리 질문, 나는 당신이 다른 질문을하고, 샘플 데이터와 원하는 결과를 포함 시키도록 제안 할 것이다. 그리고 적절한 데이터베이스로 질문에 태그를 붙인다. –

+1

m보다 "더 크다"또는 "보다 작거나 같음"그리고 아마도 다른 조건을 "오늘보다 큼" – dnoeth