《delpi5开发人员指南》p998页(编写桌面数据库应用程序),第20行accept:=table1state.value=filterform.dbedit1.text;是何意义?编译总通不过!!! accept接收的应该是一个Boolean,该表达式的意思应该是将table1state.value与filterform.dbedit1.text比较的值赋给accept。也不知道理解的对不对,请高手指正。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请热心的朋友指点迷津!!email: [email protected] 对!按程序意图应该是accept接受一个条件判断的boolean来做为过滤器,但我搞不清table1state.value的含义,filterform.dbedit1.text是取表的某一栏位的值。该段代码如下:procedure tdm.table1filterrecord(dataset:tdataset;var accept:boolean)begin accept:=table1state.value=filterform.dbedit1.text;end; 可改为Accept := (table1state.value = filterform.dbedit1.text);就看得清楚了!table1state.value是取Table1中的State字段的当前值(字符串型),此State字段是固定字段.你的问题可能在于没有建立此固定字段.可双击table1,在出现在窗口中右击,在菜单中选Add all Fields(大概是这几个单词),窗口中加入的即为Table1对应表中的字段,这样就建产了固定字段. 该表本来就没有state字段table1state.value好像是 table1.state但又不像 相当于:if table1state.value = filterform.dbedit1.text then Accept := Trueelse Accept := False; table1为表名出错[Error] datamod.pas(28): Undeclared identifier: 'table1state'有没有那位曾试过此书该程序段! 难到《delpi5开发人员指南》都说是好书,而没人好好读吗? 你要双击那个Table,然后选择Add All Fields。 按weizhi hyphoon两位大侠指点,编译通过!可我还是不太明白此行程序含义,能不能解释一下? 相当于:if table1state.value = filterform.dbedit1.text then Accept := Trueelse Accept := False; Table1State是一个固定字段对象的名字,它就是Table1的State字段,当Table1打开后它就有值了,其值就是Table1的当前记录的State字段的值.它是TField类型的.Table1State.Value相当于Table1.FieldByName('State').Value,还可这样用:Table1State.AsString它与Table1.FieldByName('State').AsString相同.Delphi中字段分为两种,一种是非固定字段,一种是固定字段,对于前者,DELPHI自动建立,后者需手工建立,方法前面已讲了.默认情况下每个TABLE或QUERY在OPEN之后DELPHI都会从它们对应的表中找到字段并建立相应的字段对象.如果你没有给此TABLE或QUERY建立固定字段,则Delphi建立非固定字段,如果有固定字段,则DELPHI使用建产的固定字段,对此TAble或Query中的非固定字段的字段将被Delphi儿忽略. 非固定字段的优点在于,方便灵活,改变Table或Query对应的数据集后,它能自动变的与此数据集的实际字段集一致. 固定字段的优点在于,由于固定字段是在设计期建立的对象,可在属性编辑器中对每个固定字段设定属性,指定事件等.可控制的程度比较大.但是当此Table或Query对应的数据集变化后,如果新的数据集中没有以前的固定字段,此会触发异常.此Table或Query也不能正常打开. 大概就是这样了,你可以在查其它一些资料. 所以此例中,如果你没建固定字段,也可改为:accept:=(table1.FieldByName('state').Asstring=filterform.dbedit1.text); 小问题。。请指教 delphi中调用vc开发com组件运行时报内存错误 有关MDI窗口的创建问题! pm是什么? 截获了键盘的按键,现在要把回车等信息转换一下,具体内容请进 如何得到本机计算机名 请教,怎么用DELPHI写录音程序?? 用Delphi编写CGI问题 求助,使用AT指令向手机发短消息(PDU模式),怎样知道对方已接收(或已读取)?接收到短消息有什么事件? 关于豪杰的播放器的控制问题!! 怎样写代理软件? 作项目时,建立类模块是以什么为准则?
email: [email protected]
该段代码如下:
procedure tdm.table1filterrecord(dataset:tdataset;var accept:boolean)
begin
accept:=table1state.value=filterform.dbedit1.text;
end;
table1state.value是取Table1中的State字段的当前值(字符串型),此State字段是固定字段.
你的问题可能在于没有建立此固定字段.可双击table1,在出现在窗口中右击,在菜单中选
Add all Fields(大概是这几个单词),窗口中加入的即为Table1对应表中的字段,这样就建产了固定字段.
table1state.value好像是 table1.state但又不像
if table1state.value = filterform.dbedit1.text then
Accept := True
else
Accept := False;
出错[Error] datamod.pas(28): Undeclared identifier: 'table1state'有没有那位曾试过此书该程序段!
可我还是不太明白此行程序含义,能不能解释一下?
if table1state.value = filterform.dbedit1.text then
Accept := True
else
Accept := False; Table1State是一个固定字段对象的名字,它就是Table1的State字段,当Table1打开后它就有值了,其值就是Table1的当前记录的State字段的值.它是TField类型的.
Table1State.Value相当于Table1.FieldByName('State').Value,还可这样用:Table1State.AsString它与Table1.FieldByName('State').AsString相同.Delphi中字段分为两种,一种是非固定字段,一种是固定字段,对于前者,DELPHI自动建立,后者需手工建立,方法前面已讲了.
默认情况下每个TABLE或QUERY在OPEN之后DELPHI都会从它们对应的表中找到字段并建立相应的字段对象.如果你没有给此TABLE或QUERY建立固定字段,则Delphi建立非固定字段,如果有固定字段,则DELPHI使用建产的固定字段,对此TAble或Query中的非固定字段的字段将被Delphi儿忽略. 非固定字段的优点在于,方便灵活,改变Table或Query对应的数据集后,它能自动变的与此数据集的实际字段集一致.
固定字段的优点在于,由于固定字段是在设计期建立的对象,可在属性编辑器中对每个固定字段设定属性,指定事件等.可控制的程度比较大.但是当此Table或Query对应的数据集变化后,如果新的数据集中没有以前的固定字段,此会触发异常.此Table或Query也不能正常打开.
大概就是这样了,你可以在查其它一些资料.
accept:=(table1.FieldByName('state').Asstring=filterform.dbedit1.text);