VB NET中Access数据库中MAX和MIN的不同值

时间:2017-01-04 13:51:18

标签: sql vb.net ms-access

我试图通过以更易读的方式安排生物识别读卡器的考勤数据来帮助人力资源。读者的输出汇总在Access数据库中。输出看起来像图像:

enter image description here

每位员工每天可以有1个IN和1个退出(f_ReaderName列)。其中一些卡多次刷卡,并记录多个IN或EXIT。我如何查询数据库或按编程方式安排每个Data列值,每个f_CardNO和2列的单个记录:Ora的最大值f_ReaderName } = 1-1 [In]和Ora的MIN f_ReaderName = 1-1 [退出]?

我能以任何方式实现这一目标吗?提示将不仅有用。非常感谢!

LE:管理来获取此查询,但无法解析,我在语法中做错了什么:

SELECT
  CR.f_CardNO,
  Format(CR.f_ReadDate, 'Short Date') AS Data,
  CR.f_ConsumerName,
  CR.f_GroupName,
  CR.f_ReaderName,
  (
    SELECT
      ISNULL(MAX(FORMAT(CR.f_ReadDate, 'Long Time')), 0) AS Expr1 
    FROM
      v_d_CardRecord CR1 
    WHERE
      (
        CR.f_ReadDate = CR1.f_ReadDate 
        AND CR.CardNO = CR1.CardNO 
        AND CR1.F_ReaderName = # 1 - 1[In] # 
      )
  )
  As OraIntrare,
  (
    SELECT
      ISNULL(MIN(FORMAT(CR.f_ReadDate, 'Long Time')), 0) AS Expr1 
    FROM
      v_d_CardRecord CR1 
    WHERE
      (
        CR.f_ReadDate = CR1.f_ReadDate 
        AND CR.CardNO = CR1.CardNO 
        AND CR1.F_ReaderName = # 1 - 1[Exit] # 
      )
  )
  As OraIesire 
FROM
  v_d_CardRecord CR 
WHERE
  (
    CR.f_ReadDate > # 12 / 1 / 2016 # 
  )
ORDER BY
  CR.f_ConsumerName,
  Format(CR.f_ReadDate, 'Short Date') 
GROUP BY
  CR.f_CardNO,
  Data,
  CR.f_ConsumerName,
  CR.f_GroupName,
  CR.f_ReaderName,
  OraIntrare,
  OraIesire

1 个答案:

答案 0 :(得分:0)

这是我在Distinct Database中的Visual Basic中的代码。如果我错了,请纠正我。

你可以把它放在表单加载上。我认为这只适用于组合框。 (不确定),但它在我的组合框中工作,它与我的数据库不同。

  

Dim da As New OleDbDataAdapter(“select distinct [FULL NAME] from   EmpInfo“,con1)

    Dim table As New DataTable()
    da.Fill(table)
    ComboBox1.DataSource = New BindingSource(table, Nothing)
    ComboBox1.DisplayMember = "FULL NAME"