刚学DELPHI两天,动手做了一个小程序.数据库access,表只有一个,名称是sj,现在要实现"性别"."民族"."所在地区"."年龄阶段"四个字段的任意组合综合查询.前三个字段好办,数据库中有现成的,但"年龄阶段"分了四个阶段让我比较头痛!我实现的办法是条件累加,即让用户自己累加条件.如:select * from sj where &getstr;其中getstr是用户自己选择添加的条件.现在的问题是:1、年龄无法写入库中。我用的是当前日期减数据库中出生年月(csny)字段的方法:(年龄字段(nl)在建库时已在表中,是个空字段)。
update sj set nl =strtoint(copy(datetostr(date),1,4))-strtoint(copy(datetostr(csny),1,4));
运行时老编译不过去,是不是还要加个循环呀?2、条件累加时,edit1.text = edit1.text+ "and" +combobox1.text +combobox2.text +edit2.text;
getstr := edit1.text
用户可以添加一次查询条件也可以添加几次。其中,combobox1中是字段名称,combobox2中是条件,如:= < > like等,edit2中是用户自己输的值。数据显示用的是DBgrid,控件用的是ADOQuery,datasouce;请高手们不吝指教!(别骂我笨,呵呵!)
update sj set nl =strtoint(copy(datetostr(date),1,4))-strtoint(copy(datetostr(csny),1,4));
运行时老编译不过去,是不是还要加个循环呀?2、条件累加时,edit1.text = edit1.text+ "and" +combobox1.text +combobox2.text +edit2.text;
getstr := edit1.text
用户可以添加一次查询条件也可以添加几次。其中,combobox1中是字段名称,combobox2中是条件,如:= < > like等,edit2中是用户自己输的值。数据显示用的是DBgrid,控件用的是ADOQuery,datasouce;请高手们不吝指教!(别骂我笨,呵呵!)
2、'select * from sj where 1=1 '+getstr你会发现方便不少
编译过去了,但在运行程序的时候,报"invalid variant type conversion"错,我一点头绪都没有,不知道是那里错了,是程序的问题么?请大家给予指点!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nl=inttostr(date-form4.adoquery1.fieldbyname('csny').asinteger)/365
我完整的语句是这样的:
form4.adoquery1.sql.add('update sj set nl="'nl=inttostr(date-form4.adoquery1.fieldbyname('csny').value)/365'" ');
另外问一句,什么控件可以显示表中的所有字段名称,而且是汉字的,如表中字段是"XM",我想在控件中显示"XM"为中文的"姓名"字段,是不是要编写代码呀?能帮忙么?