【问题标题】:C# SqlDbType.Datetime getting empty rowsC# SqlDbType.Datetime 获取空行
【发布时间】:2013-05-09 07:44:33
【问题描述】:

我开发了一个库存管理应用程序。它已经使用了将近 1 年。但我决定测试一些报告,所以我备份了在 SQL Server 2008 Express 中运行的数据库。当我在我的电脑上运行应用程序时,我得到了空行,但是当我在商店中运行它时,我得到了结果,如果我删除了 datetime 范围,它也会给我数据。

我为报告使用下一个代码:

frmReporteSurtido repmi = new frmReporteSurtido();
 string query = "SELECT * from [SAIV].[dbo].Vista_MovInv ";

query = query + "WHERE (FechaHora BETWEEN  @Horai AND @Horaf ) and idTiposdeMovimiento=1 and Concepto='TRANSFERENCIA DE ALMACÉN'";

            if (!cbTS.Checked)
                query = query + " AND SUCURSAL='" + idSucursalesComboBox.Text + "' ";
            if (!cbTA.Checked)
                query = query + " AND ALMACÉN='" + idAlmacenesComboBox.Text + "' ";
            if (!cbTU.Checked)
                query = query + " AND UBICACIÓN='" + comboBox1.Text + "' ";

            this.DSTCON.Vista_MovInv.Clear();
            try
            {
                SqlConnection conn = new SqlConnection(clsData.strConexion);
                SqlDataAdapter adapter = new SqlDataAdapter();

                adapter.SelectCommand = new SqlCommand(query, conn);
                DateTime d1 = new DateTime(dateTimePicker1.Value.Year, dateTimePicker1.Value.Month, dateTimePicker1.Value.Day, 00, 00, 00);
                DateTime d2 = new DateTime(dateTimePicker2.Value.Year, dateTimePicker2.Value.Month, dateTimePicker2.Value.Day, 23, 59, 59);
                adapter.SelectCommand.Parameters.Add("@Horai",SqlDbType.DateTime).Value= d1;
                adapter.SelectCommand.Parameters.Add("@Horaf",SqlDbType.DateTime).Value=d2;
                adapter.Fill(DSTCON.Vista_MovInv);
            }
            catch (Exception ec) { DataControl.Guardar_Error(ec, this.Name); }

            repmi.crptSurtido1.SetDataSource(this.DSTCON);
            repmi.MdiParent = this.MdiParent;
            repmi.Show();

我认为是日期时间问题,但我找不到。两台服务器(一台在商店,另一台在我家)具有相同的排序规则。此外,我更改了我的家庭服务器和 myu pc 中的区域设置,但没有任何反应。

感谢您的帮助。

【问题讨论】:

标签: c# sql-server-2008 datetime report sqldataadapter


【解决方案1】:

:(太傻了。

错误就在这里:

string query = "SELECT * from [SAIV].[dbo].Vista_MovInv ";

我这样命名我恢复的备份:

[SAIV_TAM];

所以我试图从没有新数据的数据库中获取信息。

另外,我修改库存的存储过程指向我的开发数据库而不是备份,因为我工作场所和我家的数据库具有相同的名称,所以我在重命名时遇到了问题。

感谢您的帮助,并为我的愚蠢感到抱歉。

【讨论】:

    【解决方案2】:

    也许您的 PC 与数据库的日期时间(语言)格式不同。您应该将日期时间格式更改为 'yyyy-MM-dd'。

    【讨论】:

    • 我插入一条新记录来检查日期时间值我得到了这个
    • datetime的两台服务器设置是dd/MM/yyyy,我的电脑是MM/dd/yyyy,所以我改了,但是没有任何反应。反向中的日期时间值也是这样的:2013-05-08 21:05:18.827
    • 你应该在你的电脑和数据库之间设置相同的日期时间格式。
    【解决方案3】:

    更改以下行:

    adapter.SelectCommand.Parameters.Add("@Horai",SqlDbType.DateTime).Value= d1;
    adapter.SelectCommand.Parameters.Add("@Horaf",SqlDbType.DateTime).Value=d2;
    

    adapter.SelectCommand.Parameters.Add("@Horai",SqlDbType.DateTime).Value= new SqlDateTime(d1);
    adapter.SelectCommand.Parameters.Add("@Horaf",SqlDbType.DateTime).Value= new SqlDateTeim(d2);
    

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 2012-11-24
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多