大家好,我想用Delphi编一个程序,请大家帮我看看下面这段代码哪里出错了。 我用的是Delphi7,操作系统是XP,分别使用:TADOTable、TDataSource、TEdit、TRichEdit、TComboBox、TLabel、TButton,DataControls标签页下的组件只有一个:TDBGrid。 数据库名:HDDB.mdb(Access数据库);表名:“Record”。字段有:隐患编号、检查日期、被检单位、负责人、隐患内容、整改措施、检查人、检查日期、整改期限、复查人、复查日期、整改情况。(以上字段:编号、整改期限为Integer类型;检查日期、复查日期为TDateTime类型,其余全部为String类型)。 目的是这样:
每月月底单击“统计”按钮(按钮名字:fmCOBtnCollect20)时:①分别统计各队组隐患数量 ②本月所有隐患总数。
但我不会用TADOTable进行统计,网上有人说要用TADOQuery,所以用TADOQuery来实现这个目的,代码如下: IF fmCOdsRecord.DataSet.State = dsInsert Then
begin
MessageDlg('对不起,新建隐患时,不能统计数据!' + #13#10 + #13#10 +
' 本次操作将被取消!', mtWarning, [mbOK], 0);
end
ELSE IF fmCOdsRecord.DataSet.State = dsEdit Then
begin
MessageDlg('对不起,修改隐患时,不能统计数据!' + #13#10 + #13#10 +
' 本次操作将被取消!', mtWarning, [mbOK], 0);
end
ELSE
begin
fmCOStartDates := fmCOCBoxCSStartYear13.Text + '年' + fmCOCBoxCSStartMonth14.Text + '月' + fmCOCBoxCSStartDay15.Text + '日';
fmCOEndDates := fmCOCBoxCSEndYear16.Text + '年' + fmCOCBoxCSEndMonth17.Text + '月' + fmCOCBoxCSEndDay18.Text + '日';
With fmCOADOqyRecord Do
begin
Active := False;
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
' Data Source=F:\井东通风工作\2012\井东煤业通风队隐患排查记录系统\DataBase\HDDB.mdb;' +
'Persist Security Info=False';
Close;
SQL.Clear;
SQL.Add('Select Count (*) From Record Where 检查日期 Between #fmCOStartDates# And #fmCOEndDates# GroupBy 被检单位');
Open;
end;
end; 按F9后,单击“统计”按钮,出现:“语法错误(操作符丢失)”在查询表达式‘检查日期 Between #fmCOStartDates# And #fmCOEndDates# Group By 被检单位'中。 这是为什么? 本人Delphi水平属于没入门水平,平时由于工作繁忙也没时间去系统的学习。由于工作需要,这是我的第一个程序,可能数据库表的建立、组件命名、代码编写规则等存在一些问题,请各位高手帮我检查、指教,本人不胜感激。
每月月底单击“统计”按钮(按钮名字:fmCOBtnCollect20)时:①分别统计各队组隐患数量 ②本月所有隐患总数。
但我不会用TADOTable进行统计,网上有人说要用TADOQuery,所以用TADOQuery来实现这个目的,代码如下: IF fmCOdsRecord.DataSet.State = dsInsert Then
begin
MessageDlg('对不起,新建隐患时,不能统计数据!' + #13#10 + #13#10 +
' 本次操作将被取消!', mtWarning, [mbOK], 0);
end
ELSE IF fmCOdsRecord.DataSet.State = dsEdit Then
begin
MessageDlg('对不起,修改隐患时,不能统计数据!' + #13#10 + #13#10 +
' 本次操作将被取消!', mtWarning, [mbOK], 0);
end
ELSE
begin
fmCOStartDates := fmCOCBoxCSStartYear13.Text + '年' + fmCOCBoxCSStartMonth14.Text + '月' + fmCOCBoxCSStartDay15.Text + '日';
fmCOEndDates := fmCOCBoxCSEndYear16.Text + '年' + fmCOCBoxCSEndMonth17.Text + '月' + fmCOCBoxCSEndDay18.Text + '日';
With fmCOADOqyRecord Do
begin
Active := False;
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
' Data Source=F:\井东通风工作\2012\井东煤业通风队隐患排查记录系统\DataBase\HDDB.mdb;' +
'Persist Security Info=False';
Close;
SQL.Clear;
SQL.Add('Select Count (*) From Record Where 检查日期 Between #fmCOStartDates# And #fmCOEndDates# GroupBy 被检单位');
Open;
end;
end; 按F9后,单击“统计”按钮,出现:“语法错误(操作符丢失)”在查询表达式‘检查日期 Between #fmCOStartDates# And #fmCOEndDates# Group By 被检单位'中。 这是为什么? 本人Delphi水平属于没入门水平,平时由于工作繁忙也没时间去系统的学习。由于工作需要,这是我的第一个程序,可能数据库表的建立、组件命名、代码编写规则等存在一些问题,请各位高手帮我检查、指教,本人不胜感激。
红色字体那地方错了,没空格。应是:Group By
日期的语法错误 在查询表达式'检查日期 Between #2012年4月1日# And # 2012年4月30#'中。
fmCOADOqyRecord.first;
label1.caption:=IntToStr(fmCOADOqyRecord.fields[0].AsInteger);
我的Record数据表中,检查日期这个字段设置的格式是:长格式,yyyy年mm月dd,在程序中设为yyyy-mm-dd,有影响吗?真诚谢谢你!!!你的QQ是多少,能告诉我吗?
设置为:yyyy-MM-dd