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;提问的时候写错的,程序里没错。
展开
 我来答
sjzhyzhou
2012-06-03
知道答主
回答量:8
采纳率:0%
帮助的人:9.2万
展开全部
你直接将
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字段保护起来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wu_zhenjiu
科技发烧友

2012-06-03 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:3.1万
采纳率:79%
帮助的人:1.2亿
展开全部
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();
追问
您好,我需要查询一个时间段的数据怎么使用参数编程呢?比如我想查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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tonsr
2012-06-04 · 超过38用户采纳过TA的回答
知道答主
回答量:144
采纳率:36%
帮助的人:53.1万
展开全部
你看看数据类型是不是有问题
datetime类型值一般很奇怪 连接字符串添加经常出错
我测试过 从数据库读出值保存再用保存的值添加都出问题
解决方法 在建表时给datetime默认值 getDate()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MIZYIEKR
2012-06-02 · 超过12用户采纳过TA的回答
知道答主
回答量:141
采纳率:0%
帮助的人:62万
展开全部
围观
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式