现在我用ADOstoredproc查询出一张表!
品名 完工支数 折算系数 件数 单价 总金额
G-2101红 10368 6912 1.5 0.3 0.45
G-2101红 10368 6912 1.5 0.3 0.45
G-737针管乌 8640 1728 5 0.3 1.5
MINI针管乌 784512 1728 454 0.3 136.2
MINI针管兰 153792 1728 89 0.3 26.7
MINI针管红 248832 1728 144 0.3 43.2
MINI针管乌 784512 1728 454 0.3 136.2
MINI针管兰 153792 1728 89 0.3 26.7
MINI针管红 248832 1728 144 0.3 43.2
MINI大头乌 335232 1728 194 0.3 58.2
MINI大头兰 190080 1728 110 0.3 33
MINI大头红 103680 1728 60 0.3 18
现在我想模糊查询定位,即:做一个编辑框:Edit,当输入‘大头’时,记录集自动指到符合的第一条记录!我知道用local可以,但是它只能实现输入记录的前面的字符:比如输入‘M’,‘Mi’,‘MINI’,……,不能实现:输入后面或中间字符!注意:这里只是对ADOstoredproc取出的数据集定位,不要重新去取数据!!!
品名 完工支数 折算系数 件数 单价 总金额
G-2101红 10368 6912 1.5 0.3 0.45
G-2101红 10368 6912 1.5 0.3 0.45
G-737针管乌 8640 1728 5 0.3 1.5
MINI针管乌 784512 1728 454 0.3 136.2
MINI针管兰 153792 1728 89 0.3 26.7
MINI针管红 248832 1728 144 0.3 43.2
MINI针管乌 784512 1728 454 0.3 136.2
MINI针管兰 153792 1728 89 0.3 26.7
MINI针管红 248832 1728 144 0.3 43.2
MINI大头乌 335232 1728 194 0.3 58.2
MINI大头兰 190080 1728 110 0.3 33
MINI大头红 103680 1728 60 0.3 18
现在我想模糊查询定位,即:做一个编辑框:Edit,当输入‘大头’时,记录集自动指到符合的第一条记录!我知道用local可以,但是它只能实现输入记录的前面的字符:比如输入‘M’,‘Mi’,‘MINI’,……,不能实现:输入后面或中间字符!注意:这里只是对ADOstoredproc取出的数据集定位,不要重新去取数据!!!
用数据集控件本身带的filter功能,
就是要写控件的 onFilterRecord事件
在事件代码中用一些技巧, 比如说要实现你的功能. 可以这样实现procedure TForm1.ADOStoredProc1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
if edit1.text = '' then
begin
Accept := true;
exit;
end; if pos(edit1.text, dataSet.fieldByName('品名').asString) > 0 then
Accept = true
else
Accept = false;
end;procedure TForm1.Edit1Change(Sender: TObject);
begin
ADOStoredProc1.Filtered := false;
ADOStoredProc1.Filtered := true;
end;edit1就可你输入'大头'的地方
MINI大头乌 335232 1728 194 0.3 58.2
MINI大头兰 190080 1728 110 0.3 33
MINI大头红 103680 1728 60 0.3 18
了!!其他数据都屏蔽了
FROM cumm7000
WHERE (Company_Name_native_Code_M LIKE '%大头%')
begin
判断是否符合你的条件; ADOstoredproc.next;
end;然后在你输入了 "大头" 后要调用这个函数
呵呵,我完善一下
在输入框的KEYPRESS里大概写如下:
if key=#13//如果是回车,则查找
then
begin
while not ADOstoredproc.eof do
begin
if pos(Trim(Edit1.text),ADOstoredproc.FieldByName('品名'1).asstring)>0 then Break
else
ADOstoredproc.next;
end;
差不多改改应该符合你了
select……into……where……只是每次操作前记得要drop