用Access从数据库中提取记录

时间:2014-10-30 13:41:04

标签: sql-server vb.net inner-join

我在VB.net上用数据库访问完成了一个应用程序。 有两个表,一个带有仪器记录,另一个带有校准记录。 我想循环使用仪器,对于每个仪器,我只想检索最后一个校准记录。将有超过十个记录的工具对用户来说变得烦人。 有什么建议吗?

我的查询代码如下:

set rsDue = Server.CreateObject("ADODB.Recordset")
rsDue.ActiveConnection = MM_Transmille_STRING

rsDue.Source = "SELECT Calibrations.Cert_No, Calibrations.Cust_Ref, Calibrations.Rec_Date, Instruments.Inst_ID, Instruments.Description, Instruments.Model_no, Instruments.Manufacturer, Instruments.Serial_no, Instruments.Status, Instruments.Cust_Acc_No  FROM Instruments INNER JOIN Calibrations ON Instruments.Inst_ID = Calibrations.Inst_ID  WHERE Instruments.Cust_Name = '" & Session("MM_Username") & "' AND Instruments.Cust_Acc_No = '" & Session("MM_Password") & "' AND Instruments.Cust_Acc_No = '" + Replace(rsDue__MMColParam, "'", "''") + "' AND Instruments.Status IN ('N') ORDER BY Calibrations.Rec_Date DESC;" 


rsDue.CursorType = 0
rsDue.CursorLocation = 2
rsDue.LockType = 3
rsDue.Open()
rsDue_numRows = 0

1 个答案:

答案 0 :(得分:0)

如果您执行GROUP BY Instruments.Inst_ID,每个乐器只能获得一个结果:具有最新Calibrations的结果。

SELECT 
  Calibrations.Cert_No, 
  Calibrations.Cust_Ref, 
  Calibrations.Rec_Date, 
  Instruments.Inst_ID, 
  Instruments.Description, 
  Instruments.Model_no, 
  Instruments.Manufacturer, 
  Instruments.Serial_no, 
  Instruments.Status, 
  Instruments.Cust_Acc_No  
FROM 
  Instruments 
  INNER JOIN Calibrations ON Instruments.Inst_ID = Calibrations.Inst_ID  
WHERE 
  Instruments.Cust_Name = '" & Session("MM_Username") & "' 
  AND Instruments.Cust_Acc_No = '" & Session("MM_Password") & "' 
  AND Instruments.Cust_Acc_No = '" & Replace(rsDue__MMColParam, "'", "''") & "' 
  AND Instruments.Status IN ('N')
GROUP BY
  Instruments.Inst_ID  
ORDER BY 
  Calibrations.Rec_Date DESC