C++builder使用Datetimepicker控件查询SQL数据库出错了,SQL表中Daytime字段类型datetime,请高手指教!
StringBeginDate,BeginTime,EndDate,EndTime,BeginDT,EndDT;BeginDate=Form1->DateTimePick...
String BeginDate,BeginTime,EndDate,EndTime,BeginDT,EndDT;
BeginDate=Form1->DateTimePicker6->DateTime.DateString();
BeginTime=Form1->DateTimePicker7->DateTime.TimeString();
BeginDT=BeginDate+" "+BeginTime;
EndDate=Form1->DateTimePicker5->DateTime.DateString();
EndTime=Form1->DateTimePicker8->DateTime.TimeString();
EndDT=EndDate+" "+EndTime;
DataModule2->ADO_Set->Active=false;
DataModule2->ADO_Set>CommandText="";
DataModule2->ADO_Set>CommandText="select * from Resbackup_Set where Cast="+Form1->DBEdit1->Text+" and Daytime>='"+BeginDT+"' and Daytime<='"+EndDT+"' order by Daytime";
DataModule2->ADO_Set_Mou_Water->Active=true;
还请您说详细点,我是新手,最好能给出程序具体该怎么改,先行谢过!
最后一行是DataModule2->ADO_Set->Active=true;提问的时候写错的,程序里没错。 展开
BeginDate=Form1->DateTimePicker6->DateTime.DateString();
BeginTime=Form1->DateTimePicker7->DateTime.TimeString();
BeginDT=BeginDate+" "+BeginTime;
EndDate=Form1->DateTimePicker5->DateTime.DateString();
EndTime=Form1->DateTimePicker8->DateTime.TimeString();
EndDT=EndDate+" "+EndTime;
DataModule2->ADO_Set->Active=false;
DataModule2->ADO_Set>CommandText="";
DataModule2->ADO_Set>CommandText="select * from Resbackup_Set where Cast="+Form1->DBEdit1->Text+" and Daytime>='"+BeginDT+"' and Daytime<='"+EndDT+"' order by Daytime";
DataModule2->ADO_Set_Mou_Water->Active=true;
还请您说详细点,我是新手,最好能给出程序具体该怎么改,先行谢过!
最后一行是DataModule2->ADO_Set->Active=true;提问的时候写错的,程序里没错。 展开
4个回答
展开全部
你直接将
Form1->DateTimePicker6->Time=Form1->DateTimePicker7->Time;
BeginDT=Form1->DateTimePicker6->DateTime.FormatDateTime("YYYY-MM-DD hh:nn:ss");
Form1->DateTimePicker5->Time=Form1->DateTimePicker8->Time;
EndDT=Form1->DateTimePicker5->DateTime.FormatDateTime("YYYY-MM-DD hh:nn:ss");
就行了,没必要再加BeginDate,BeginTime,EndDate,EndTime;
另外Cast=是干什么用,Cast是一个字段名称吗?Cast是关键字,最好不要用作字段名称,如果非要用,可以将sql语句改为where [Case]= ,将Case字段保护起来。
Form1->DateTimePicker6->Time=Form1->DateTimePicker7->Time;
BeginDT=Form1->DateTimePicker6->DateTime.FormatDateTime("YYYY-MM-DD hh:nn:ss");
Form1->DateTimePicker5->Time=Form1->DateTimePicker8->Time;
EndDT=Form1->DateTimePicker5->DateTime.FormatDateTime("YYYY-MM-DD hh:nn:ss");
就行了,没必要再加BeginDate,BeginTime,EndDate,EndTime;
另外Cast=是干什么用,Cast是一个字段名称吗?Cast是关键字,最好不要用作字段名称,如果非要用,可以将sql语句改为where [Case]= ,将Case字段保护起来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DataModule2->ADO_Set>CommandText="select * from Resbackup_Set where Cast="+Form1->DBEdit1->Text+" and Daytime>='"+BeginDT+"' and Daytime<='"+EndDT+"' order by Daytime";
这一句中使用了DateTime类型,在数据库中这种类型的处理经常出错,而不好掌握,最好对ADO_Set使用参数进行编程。如:
DataModule2->ADO_Set->Close();
DataModule2->ADO_Set->SQL->Clear();
DataModule2->ADO_Set->SQL->Add("select * from Resbackup_Set where Daytime=:a");
DataModule2->ADO_Set->Parameters->ParamByName("a")->Value=DateTimePicker1->DateTime;
DataModule2->ADO_Set->Open();
这一句中使用了DateTime类型,在数据库中这种类型的处理经常出错,而不好掌握,最好对ADO_Set使用参数进行编程。如:
DataModule2->ADO_Set->Close();
DataModule2->ADO_Set->SQL->Clear();
DataModule2->ADO_Set->SQL->Add("select * from Resbackup_Set where Daytime=:a");
DataModule2->ADO_Set->Parameters->ParamByName("a")->Value=DateTimePicker1->DateTime;
DataModule2->ADO_Set->Open();
追问
您好,我需要查询一个时间段的数据怎么使用参数编程呢?比如我想查2012-6-3 09:30:01到2012-6-3 11:30:00,我的SQL数据是一个实时监测数据库,每一秒钟就会采集一个数据的。
追答
语句改为:
DataModule2->ADO_Set->SQL->Add("select * from Resbackup_Set where Daytime Between :a And :b");
DataModule2->ADO_Set->Parameters->ParamByName("a")->Value=DateTimePicker1->DateTime;
DataModule2->ADO_Set->Parameters->ParamByName("b")->Value=DateTimePicker2->DateTime;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看看数据类型是不是有问题
datetime类型值一般很奇怪 连接字符串添加经常出错
我测试过 从数据库读出值保存再用保存的值添加都出问题
解决方法 在建表时给datetime默认值 getDate()
datetime类型值一般很奇怪 连接字符串添加经常出错
我测试过 从数据库读出值保存再用保存的值添加都出问题
解决方法 在建表时给datetime默认值 getDate()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
围观
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询