DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: eyang11
今日帖子: 2
在线用户: 10
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 17:24:10
标题:
新手求救!~数据查询问题!~在线等!~~还在等!~ 浏览:1738
加入我的收藏
楼主: procedure TForm9.Button1Click(Sender: TObject);
var
  sqlstr:string;
begin
  sqlstr:='select * from 成绩表  where (1=1)';
  if Edit1.Text<>'' then
  sqlstr:=sqlstr+'and (st01='''+edit1.text+''')';
  if Edit2.Text<>'' then
  sqlstr:=sqlstr+'and (c01='''+edit2.text+''')';
  if Edit3.Text<>'' then
  sqlstr:=sqlstr+'and (grade='''+edit3.text+''')';
  if Edit5.Text<>'' then
  sqlstr:=sqlstr+'and (kssj='+edit5.text+')';
  if combobox2.Text <>'' then
   sqlstr:=sqlstr+'and (remark='''+combobox2.text+''')' ;
  if combobox1.Text<>'' then
   sqlstr:=sqlstr+'and (kslx='''+combobox1.text+''')';
   dm.ADOQuery1.Close ;
   dm.ADOQuery1.SQL.Clear ;
   dm.ADOQuery1.SQL.Add(sqlstr); 
   dm.ADOQuery1.Open ;
   Edit1.Text:='';
   Edit2.Text:='';
   Edit3.Text:='';
   Edit5.Text:='';
   combobox1.Text:='';
   combobox2.Text:='';
end;
在运行时,edit3处输入数字(如:55)和在edit5处输入日期(如:2001-02-01)点击Button1这个按钮时弹出“标准表达式中数据类型不匹配”!
grade在Access表中的数据类型是数字型,kssj在Access表中是日期型!~
请问是那里错了,该怎么改!~谢谢了!~~~~


我在做毕业设计,还有好多问题做不通!~还得请大家多多帮忙!~

----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
作者:
男 jfyc (酷光头) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 17:30:31
1楼: edti3中的字符串要转成数字类型,edti5中的字符转成日期类型就行了.
----------------------------------------------
-
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 17:34:55
2楼: 我就是不知道怎么转换啊?请你说一说可以吗?我知道函数,但是不知道写在那里!~~~谢谢了!~~~~~~~~~
----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
作者:
男 waterstone (waterstone) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 18:39:33
3楼: 如果是比较数字就不用多写两个引号!
  'and (grade='''+edit3.text+''')';
  'and (grade=  '+edit3.text+  ')';

----------------------------------------------
我来自农村广阔的田野我的每一个动作都很夸张http://waterstone.51r.com
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 19:03:33
4楼: 日期型的哪个怎么解决啊???
谢谢楼上的那位仁兄了!~
----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 21:03:16
5楼: 日期型的哪个该怎么解决啊?
谢谢了!~我都要急出病了!~
----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
作者:
男 lzdx (dx) ★☆☆☆☆ -
盒子活跃会员
2004/4/14 23:14:31
6楼: 改成如下格式试一下。
  if Edit5.Text<>'' then
  sqlstr:=sqlstr+'and (kssj='+StrToDate(edit5.text)+')';

StrToDate是把字符串转型数据换成日期型数据。
----------------------------------------------
-
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/15 1:51:05
7楼: 我改了连编译都通不过?
----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
作者:
男 lcjclj (lcj) ★☆☆☆☆ -
盒子活跃会员
2004/4/15 3:15:53
8楼: lzdx (dx)的方法是错误的:字符型的怎么可以和日期型的相加呢?

你可以用下述的方法:
sqlstr:=sqlstr+'and (kssj= :kssj)';

dm.ADOQuery1.Close ;
dm.ADOQuery1.SQL.Clear ;
dm.ADOQuery1.SQL.Add(sqlstr); 
if Edit5.Text<>'' then
  dm.ADOQuery1.ParamByName('kssj').AsDate := StrToDate(edit5.text);
dm.ADOQuery1.Open ;

或者你可以用下述的方法:
查看一下ACCESS中日期型字段的存储方式,比如是mm/dd/yy,那么你直接以相同的格式把日期蚶当作字符来处理也是可以的。
sqlstr:=sqlstr+'and (kssj= '+ edit5.text + ')';

----------------------------------------------
-
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/15 3:54:49
9楼: 问题解决了,我用的第二中方法,在ACCESS中将kssj该成了文本型,在有效性规则加了一个Date()函数,我想应该没有问题了吧!~我现在只测试了一下!~顺利通过!~
语句还是用的:
sqlstr:=sqlstr+'and (kssj='''+ edit5.text +''')';
谢谢你了!~不然我把头想爆也不知道该怎么办!~呵呵!~~~
真心的谢谢你!~~~~~~~

----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2004/4/15 8:37:39
10楼: 不要重复发帖,不然删无赦!
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 jiangjingang (金刚) ★☆☆☆☆ -
盒子活跃会员
2004/4/15 11:25:58
11楼: 不好意思啊,我实在是太着急了!~下次不了!~~~~~
----------------------------------------------
人生如计算机,添加、删除是为了更好的运行!~
QQ:58025451
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS