数据库是Access
我有一个表保存信息如下:
Name Birth
张三 1982-7-7
李四 1983-1-24
王二
刘五 1978-2-5
…… ……我设计了一个视图,来计算表中人的年龄,如下:
SELECT DATEDIFF('y',FORMAT([Employee.E_Birth],'YYYY'),FORMAT(now(),'YYYY')) AS 年龄
FROM Employee;
视图产生正常。我用DBChart来显示指定年龄段的分布,语句如下:
procedure TMainForm.Btn_AgeRefreshClick(Sender: TObject);
begin
Self.PieSeries1.Clear;
Self.ADOQuery_Age.SQL.Clear;
Self.ADOQuery_Age.SQL.Add('select Count(*) as 年龄 from 年龄视图 where 年龄>'+''''+'18'+''''+' and 年龄<'+''''+'25'+'''');
Self.ADOQuery_Age.Open;
if Self.ADOQuery_Age.RecordCount<>0 then
begin
Self.PieSeries1.Add(Self.ADOQuery_Age.FieldByName('年龄').AsInteger,'18-25岁');
end;
end;但是程序在显示分布比例时提示:标准表达式中数据类型不匹配。因为我的员工表中有些记录是没有输入出生日期的。如果是有日期,那么运行就不会出问题。那么应该怎么办?
我有一个表保存信息如下:
Name Birth
张三 1982-7-7
李四 1983-1-24
王二
刘五 1978-2-5
…… ……我设计了一个视图,来计算表中人的年龄,如下:
SELECT DATEDIFF('y',FORMAT([Employee.E_Birth],'YYYY'),FORMAT(now(),'YYYY')) AS 年龄
FROM Employee;
视图产生正常。我用DBChart来显示指定年龄段的分布,语句如下:
procedure TMainForm.Btn_AgeRefreshClick(Sender: TObject);
begin
Self.PieSeries1.Clear;
Self.ADOQuery_Age.SQL.Clear;
Self.ADOQuery_Age.SQL.Add('select Count(*) as 年龄 from 年龄视图 where 年龄>'+''''+'18'+''''+' and 年龄<'+''''+'25'+'''');
Self.ADOQuery_Age.Open;
if Self.ADOQuery_Age.RecordCount<>0 then
begin
Self.PieSeries1.Add(Self.ADOQuery_Age.FieldByName('年龄').AsInteger,'18-25岁');
end;
end;但是程序在显示分布比例时提示:标准表达式中数据类型不匹配。因为我的员工表中有些记录是没有输入出生日期的。如果是有日期,那么运行就不会出问题。那么应该怎么办?
解决方案 »
- DELPHI导入EXCEL数据后处理问题
- 帮我看看自动保存Excel的问题,急,在线等啊?
- 【投诉】ari大版主,有人倒分……
- 如何在delphi下看mp3文件的代码
- delphi实现界面定制方案在“校园信息管理”中的应用
- 怎样在Delphi当中获得Sql—server2000中表的PramaryKey,Index和字段的Not Null属性值,下面两个我已经知道DataType(数据类型)和Size(
- 急,请教SQL语句怎么写?欢迎切磋, 每人有分。
- 关于电子签名的问题
- 如何从c函数中传结构指针到pascal
- <<如何用DELPHI或者VB来提取并且编辑MP3文件中的歌曲信息啊???>>
- 如何处理#0
- HTTP服务器开发,如何判别客户端请求发送结束
FROM Employee;
//null都替换成getdate()
但这样会造成数据不准确的问题。另外一个方式就是select的时候用where条件字句去除字段为null的记录。
access中 插入-〉查询-〉设计视图 确定-〉右健 sql视图
FROM Employee where Employee.E_Birth is not null;这样写还是要出错