在Delphi开发数据库时
来源:百度知道 编辑:UC知道 时间:2024/05/24 18:24:19
power:=DM.ADOQuery1.FieldValues['权限']
if power='管理员'这句总不成立,
在数据库中,权限 字段定义的为char(10)
请问有什么办法可以解决下
我想是字符长度不符,但数据库里面的字符长度不修改,应当怎么样解决
varchar(10) 和char(10)有什么区别啊
trim是什么意思啊?
if power='管理员'这句总不成立,
在数据库中,权限 字段定义的为char(10)
请问有什么办法可以解决下
我想是字符长度不符,但数据库里面的字符长度不修改,应当怎么样解决
varchar(10) 和char(10)有什么区别啊
trim是什么意思啊?
power:=DM.ADOQuery1.FieldValues['权限'].AsString;
或者改成
power:=DM.ADOQuery1.Fieldbyname('权限').AsString;
再加一句调试的话
showmessage(power); //看看power取值..
[补充: 这决不是数据库字段长度不够的问题]
我想可能是这个原因搞成的.你现在数据库的字段类型是char(10).
这个字段类型有个问题,假定你这个字段存的是'管理员' 是6个字符
不足10个,那么存放数据库会给你补4个空格.补够10个.
那么你从数据库取出这个power ='管理员xxxx' (x代表空格)
去跟'管理员'匹配,当然不成了.
一是修改数据库字段类型为 varchar(10) ,这是一劳永逸的做法
另外一个是你加一个trim.
power:=trim(power);
if power='管理员' 就应该成立了..
调试的时候你看看 length(power) 的程度.以及power的值.
按F5设置断点,F8单步跟踪,很容易找到原因.
[补充]:
char,和varchar 的区别是 char会自动补空格.
比如都是10的长度,存字符串 '12345'
char(10) 会存 '12345*****' *号代表空格
varchar(10) 存 '12345'
所以用char的话取出来必须trim一下..
power:=DM.ADOQuery1.Fieldbyname('权限').AsString;
if power='管理员' then
be