条件查询问题.
在一个SQL表中:
用户编号 用户地址 投诉日期 用户投诉内容
1 似的 2002-1-23 似的地方
2 围绕不 2002-1-30 士大夫法
.
.
.
.
12 方法年 2002-2-1 搞活们
其中字段:用户编号 数据类型是char
用户地址 数据类型是varchar
投诉日期 数据类型是datatime
用户投诉内容 数据类型是varchar
在界面上放2个combobox,一个edit1,一个button,一个dbgrid1,一个table1
在combobox1中选择字段名称,在combobox2中选择条件如>,>=,=等,在edit1中输入条件值,点击button进行查询.
如果数据类型是char我想应该没问题,我想请问数据类型是varchar和datatime的话应该怎样解决.
比如我在combobox1中选择投诉日期 在 combobox2中选择条件> 在edit1输入条件2002-1-25,点击button,我希望在表中出现日期2002-1-25以后的数据,该怎样实现!
问题点数:50、回复次数:15Top
1 楼solar(天哪,忘了我是什么时候注册的了!)(int argc, char *argv[])回复于 2002-01-31 16:05:29 得分 3
加上引号Top
2 楼ljun1979(江南云)回复于 2002-01-31 16:08:33 得分 0
如果只是char的话,查询已经基本解决,就是着个转换问题,在哪里转换!Top
3 楼phosphor(蜗牛)回复于 2002-01-31 16:10:57 得分 4
datetimepicker控件or'''+2001-1-25+'''Top
4 楼ljun1979(江南云)回复于 2002-01-31 16:15:36 得分 0
to:phosphor(蜗牛)
你能说的具体一点吗!在哪里加!~举个例子吧!Top
5 楼ljun1979(江南云)回复于 2002-01-31 16:17:13 得分 0
应为是对所有的字段查询,所以是不是先要判断字段呀!Top
6 楼Lion_sj(一棵葱)回复于 2002-01-31 16:21:08 得分 3
如果写在查询条件里,应该加上‘
不是的话,可以将edit.text转换为日期型Top
7 楼ljun1979(江南云)回复于 2002-01-31 16:24:30 得分 0
最主要的是,也有char型的,所以我是不是先要判断字段,才能将edit.text转换为日期型 .Top
8 楼Lion_sj(一棵葱)回复于 2002-01-31 16:31:11 得分 0
我觉得应该是的Top
9 楼dregs2002(伤心人渣)回复于 2002-01-31 16:31:18 得分 0
http://www.csdn.net/Expert/topic/511/511105.shtmTop
10 楼ljun1979(江南云)回复于 2002-01-31 16:46:22 得分 0
to:Lion_sj(一棵葱)
应该 是怎么样的呀! Top
11 楼ljun1979(江南云)回复于 2002-01-31 16:52:51 得分 0
我的代码这样的.
var
//myfield记录字段名称,myopt记录条件符号,myval记录条件值
myfield,myopt,myval:string;
procedure TForm3.FormActivate(Sender: TObject);
var
i:integer;
begin
for I:=0 to Table1.Fields.Count-1 do
begin
ComboBox1.Items.Add(Table1.Fields[i].FieldName);
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Table1.Filtered:=False;
myfield:=ComboBox1.Text;
myopt:=ComboBox2.Text;
myval:=Edit1.Text;
Table1.Filtered:=True;
end;
procedure TForm3.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
if myopt='=' then
Accept:=Table1[myfield] = myval;
if myopt='>' then
Accept:=Table1[myfield] > myval;
if myopt='<' then
Accept:=Table1[myfield] < myval;
if myopt='>=' then
Accept:=Table1[myfield] >= myval;
if myopt='<=' then
Accept:=Table1[myfield] <= myval;
if myopt='<>' then
Accept:=Table1[myfield] <> myval;
end;
Top
12 楼rexwang(品味咖啡)回复于 2002-01-31 17:10:28 得分 5
对于日期的判断,只有一种办法,那就是使用变量,如:
select* from yourdb
where request_date> :date1
其中::date1就是变量,你可以在编码时通过query组件Params 设置,也可以在编译时设置。
而且我希望你不要通过Edit得到日期,因为这不仅不方面,而且需要让使用者了解输入格式,所以最好另外加一个控件(好像是叫做datapicker?你可以在sample页中找到,它可以弹出日期对话框),它有独有属性,可以直接获得日期。
希望你能尽快找到方法。
Top
13 楼ljun1979(江南云)回复于 2002-01-31 17:45:29 得分 0
to:rexwang()
谢谢你!那对于varchar呢??在edit中输入可以吗??Top
14 楼lishen(lishen)回复于 2002-01-31 19:28:47 得分 5
建议使用Query比较简单?Top
15 楼tangyong_delphi()回复于 2002-02-08 12:36:25 得分 30
我有一个SQL查询的示例 请给我电子邮件
tangyon3199_cn@sina.comTop




