在Delphi开发数据库时

来源:百度知道 编辑:UC知道 时间:2024/05/24 18:24:19
power:=DM.ADOQuery1.FieldValues['权限']
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