Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在oledb命令中基于当前月份获取月份?_C#_Oledb_Oledbcommand_Oledbdatareader - Fatal编程技术网

C# 如何在oledb命令中基于当前月份获取月份?

C# 如何在oledb命令中基于当前月份获取月份?,c#,oledb,oledbcommand,oledbdatareader,C#,Oledb,Oledbcommand,Oledbdatareader,我现在遇到了一个问题,我需要完成我作为一名学生正在为在职培训工作的系统。我想使用oledbdatareader在excel中根据当前月份获取月份,并将其放在标签上 例如: 我有2018年8月18日到2018年12月18日,我需要获得2018年10月18日的记录 这是我的密码 string path = Server.MapPath("login.xlsx"); String conString = "provider=Microsoft.ACE.O

我现在遇到了一个问题,我需要完成我作为一名学生正在为在职培训工作的系统。我想使用oledbdatareader在excel中根据当前月份获取月份,并将其放在标签上

例如:

我有2018年8月18日到2018年12月18日,我需要获得2018年10月18日的记录

这是我的密码

            string path = Server.MapPath("login.xlsx");
            String conString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;ReadOnly=True;HDR=Yes;\"";

            using (OleDbConnection con = new OleDbConnection(conString))
            {

                OleDbCommand com = new OleDbCommand("select [Sheet2$].[EMPLOYEE_NO],[Sheet2$].[EMPLOYEE_NAME],[Sheet2$].[HIRED_DATE],[Sheet2$].[REGULIZED_DATE],[Sheet2$].[POSITION]," +
                    "[Sheet3$].[EMPLOYEE_NO],[Sheet3$].[DATE],[Sheet3$].[REM_BALANCE]," +
                    "[Sheet4$].[EMPLOYEE_NO],[Sheet4$].[DATE],[Sheet4$].[REM_BALANCE]" +
                    " from ([Sheet2$] INNER JOIN [Sheet3$] ON [Sheet2$].[EMPLOYEE_NO]=[Sheet3$].[EMPLOYEE_NO] )" +
                    "INNER JOIN [Sheet4$] ON [Sheet3$].[EMPLOYEE_NO]=[Sheet4$].[EMPLOYEE_NO] where [Sheet2$].[EMPLOYEE_NO]=" + session + "", con);

                con.Open();
                OleDbDataReader read = com.ExecuteReader();

                while (read.Read())
                {
                    Label8.Text = read["EMPLOYEE_NAME"].ToString();
                    Label9.Text = read["POSITION"].ToString();
                    Label10.Text = string.Format("{0:dd/MM/yyyy}", read["HIRED_DATE"]);
                    Label11.Text = string.Format("{0:dd/MM/yyyy}", read["REGULIZED_DATE"]);
                    Label12.Text = Convert.ToDateTime(read["Sheet3$.DATE"]).ToString("dd/MM/yyyy");
                    Label13.Text = read["Sheet3$.REM_BALANCE"].ToString();
                }

注意会话变量如何插入到该sql语句中。您的代码现在容易受到SQL注入攻击。考虑使用命令参数。我仍然在阅读SQL注入,但是现在我只需要对命令进行帮助,我尝试了命令参数,但是它仍然显示第一个月是01 / 18/2018,它就像我需要什么东西在哪里语句[SHIET3$] [DeD] =当前月份No()。为什么不提供一些示例数据和所需的输出?您正在对employee_no=someValue的3个表进行选择组合。考虑到employee_no是主键,这可能会产生1行或N行(取决于数据的真实外观,将工作表命名为sheet2、sheet3、sheet4……无助于猜测它们包含的内容)。如果它返回N行(如预期的那样),那么在循环中的表单上设置标签值的目的是什么。实际上,您将它们设置为最后一行的值。我只需要获取当前月份,以便[sheet3$].[rem_balance]显示假期的剩余余额,我通过[sheet3$].[DATE]=month(NOW())交易订单,但它只显示2018年5月18日至2018年5月18日的记录,我需要获取[sheet3$].[rem_balance]八月份的月份,也就是现在的月份。有什么帮助吗?我将8月18日的值更改为8月27日,这是excel中的当前日期,当我使用com.Parameters.AddWithValue(“@date”,DateTime.Now.ToString(“dd/MM/yyyy”))时会显示出来;我的问题是我想得到18而不是27,但仍然是基于当前月份,有什么帮助吗?