我开发了一个库存管理应用程序。它已经使用了差不多1年。但我决定测试一些报告,所以我备份了在SQL Server 2008 express中运行的数据库。当我在我的电脑上运行应用程序时,我得到空行,但是当我在商店中运行时,我得到结果,如果我删除日期时间范围,它会给我数据。
我使用报告的下一个代码:
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中的区域设置,但没有任何反应。
感谢您的帮助。
答案 0 :(得分:1)
:(太傻了。
错误在于:
string query = "SELECT * from [SAIV].[dbo].Vista_MovInv ";
我将备份命名为我恢复如下:
[SAIV_TAM];
所以我试图从数据库中获取信息,而不是新数据。
此外,我修改库存的存储过程指向我的开发数据库而不是备份,并且由于我工作场所和我家的数据库具有相同的名称,我在重命名时会遇到问题。
感谢您的帮助,对不起我的愚蠢。
答案 1 :(得分:0)
也许你的PC与数据库有不同的日期时间(语言)格式。你应该将datetime formate改为'yyyy-MM-dd'。
答案 2 :(得分:0)
更改以下行:
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);