sql server -如何使用WinForm datetimepicker在sql数据库中搜索
本文关键字:sql 数据库 搜索 datetimepicker WinForm server 何使用 | 更新日期: 2023-09-27 17:52:17
我创建了一个连接SQLserver 2014和VisalStudio2013的模型。在VB中我有两个表单,在SQL中有一个表和记录。
在第一个Winform中,我使用类型为nvarchar(10)的textbox在SQL数据库中进行搜索。
**但是在第二个Winform中,我想在SQL数据库中使用"datetimepicker"进行搜索,其中列的类型是日期 **
对于这个搜索,我的代码中必须改变什么。因为给我操作符"=="不能应用于"System.DateTime?"类型的操作数。' and 'int
如果必须写新代码,应该写什么?
这是第一个表单中搜索
的代码 textKkKod1.Focus();
loadSearchData();
int kochani;
try
{
kochani = Convert.ToInt32(this.textKkKod1.Text);
}
catch
{
MessageBox.Show("Error 404");
return;
}
string kodNaKonduktor = this.textKkKod1.Text;
var koch = db.Koches.Where(k => k.CODEK == kochani).FirstOrDefault();
if (koch == null)
return;
this.textKkKod1.Text = Convert.ToString(koch.CODEK);
//this.textKkKochaniData1.Value = Convert.ToDateTime(koch.DATER);
this.textKkRazpiska1.Text = koch.Razpiska;
}
private void loadSearchData()
{
int kochani;
try
{
kochani = Convert.ToInt32(this.textKkKod1.Text);
}
catch
{
MessageBox.Show("Eror 404");
return;
}
kochBindingSource.DataSource = db.Koches.Where(k => k.CODEK == kochani).ToList();
this.gridKochaniKonduktor1.DataSource = this.kochBindingSource.DataSource;
}
您得到的错误是说您正在尝试将日期与整数进行比较。不能比较两个不同类型的对象
从你的问题中的代码,这是由行:
var koch = db.Koches.Where(k => k.CODEK == kochani).FirstOrDefault();
同样的错误也会出现在这里:
kochBindingSource.DataSource = db.Koches.Where(k => k.CODEK == kochani).ToList();
我们知道kochani
是一个整数,这意味着CODEK
一定是一个日期时间。(除非我错过了,否则你还没有向我们展示CODEK
是如何声明/初始化/赋值的。)
您需要将CODEK
转换为integer
:(我怀疑您实际上能够将日期存储为整数,最好使用long
)
long codekAsLong = long.Parse(CODEK.ToString("yyyyMMddHHmmss"));
或者将kochani
转换为datetime
来解决这个问题。
DateTime kochaniAsDT = new DateTime(1970, 1, 1).AddMilliseconds(kochani);
//This assumes kochani represents milliseconds
-I不能告诉你是哪个,因为我不知道这段代码使用的上下文。(我正在努力与变量名称足够,因为它是…)