如何访问,求和,然后将PostGres表中的特定值传递给方法

时间:2015-09-03 08:17:12

标签: c# sql database postgresql npgsql

我目前正在尝试编写一个考勤系统,允许员工使用postgre database C# and NPGSQL来检查他们的加班时间。

问题是SUM()和GROUP BY似乎都不会产生任何结果,只会产生错误。这是我桌子的一小部分

http://imgur.com/LfdS8p8

我想要达到的目标是获得每天工作时间的总和,而不是每天获得2个或更多的较小值。一旦我得到了这个,我想得到所有日子的工作小时数的总和,然后乘以8乘以独特天数,然后从working_hours的总和中减去它们。

完成所有这些后,我只需要以某种方式访问​​加班值,然后我可以将它传递给我的DecimalToTime方法。 我的代码如下:

    namespace OvertimeCalculator
    {
        public partial class Form1 : Form
        {
            public static string DecimalToTime(double time)
            {
                var getDecimalMinutes = time - Math.Floor(time);
                var decimalMinutesToTime = getDecimalMinutes * 60;
                return Math.Floor(time) + " Hours and " +   Math.Round(decimalMinutesToTime, 0) + " Minutes";
            }
    private DataSet ds = new DataSet();
    private DataTable dt = new DataTable();
    public Form1()
    {
        InitializeComponent();
    }
    private void button2_Click(object sender, EventArgs e)
    {
        var employee_ID = textBox2.Text; 
        try
        {
            var connstring = String.Format("Host=localhost;Username=postgres;Password=123456;Database=test");

            var conn = new NpgsqlConnection(connstring);
            conn.Open();
              var sql = @"SELECT DISTINCT employee_id, worked_hours, name  
                        FROM hr_attendance  
                        WHERE name >= '20150801' AND name < '20161201'
                        AND employee_id = " 
                        + employee_ID + 
                        @"AND worked_hours != 0 
                        ORDER BY name";

            var da = new NpgsqlDataAdapter(sql, conn);

            ds.Reset();

            da.Fill(ds);

            dt = ds.Tables[0];

            dataGridView1.DataSource = dt;
            conn.Close();
        }
        catch (Exception ErrorMessage)
        {
            MessageBox.Show(ErrorMessage.ToString());
            throw;
        }
      }
    }
  }

0 个答案:

没有答案