使用ADOQuery查询Access数据库(表中有20000条以上记录),为什么只能查询到前面10000条记录? ( 积分: 100 )

  • 主题发起人 主题发起人 meizhou_ren
  • 开始时间 开始时间
M

meizhou_ren

Unregistered / Unconfirmed
GUEST, unregistred user!
使用ADOQuery查询Access数据库(表中有20000条以上记录),为什么只能查询到前面10000条记录?10000条以后的记录查询不到,搞不懂了,请教高手指点。谢谢!
 
可以的吧?

你可以试试用ADO查询MSSQL的数据,试试能不能.....
 
没有这样的事情,一定是你系统的问题
 
但是事实啊,目前我就面临这样的问题,请高手多多指教。
 
把代码贴出来看一下
 
20万条都能查找出来,建议把几个控件删掉重放,这样参数肯定是初始的了。然后再试一下,再不行就贴出查询代码出来。
 
可能是你在设计数据库表的时候,数据长度出错了
它返回给你的值是前100000行,后面的就没显示出来!
 
可能是你的设置了过滤条件。
1、看一下SQL是否有WHERE过滤条件
2、看一下控件是否设置Filter/Filtered
 
说详细点啊~!!要不像他们说的那样把代码弄出来更好~!!
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From ERP '); //Acess数据库中表的名字为“ERP”

if (Edit1.Text <> '') and (Edit2.Text <> '') then
begin
ADOQuery1.SQL.Add(' where 存货编码 like :strP1 and (存货名称 like :strP2 or 规格型号 like :strP3) and not (优选等级 like :strP4)');
ADOQuery1.Parameters.ParamByName('strP1').Value := Edit1.Text + '%';
ADOQuery1.Parameters.ParamByName('strP2').Value := '%' + Edit2.Text + '%';
ADOQuery1.Parameters.ParamByName('strP3').Value := '%' + Edit2.Text + '%';
ADOQuery1.Parameters.ParamByName('strP4').Value := '%D%';
end;

if (Edit1.Text <> '') and (Edit2.Text = '') then
begin
ADOQuery1.SQL.Add(' where 存货编码 like :strP1 and not (优选等级 like :strP4)');
ADOQuery1.Parameters.ParamByName('strP1').Value := Edit1.Text + '%';
ADOQuery1.Parameters.ParamByName('strP4').Value := '%D%';
end;

if (Edit1.Text = '') and (Edit2.Text <> '') then
begin
ADOQuery1.SQL.Add(' where (存货名称 like :strP2 or 规格型号 like :strP3) and not (优选等级 like :strP4)');
ADOQuery1.Parameters.ParamByName('strP2').Value := '%' + Edit2.Text + '%';
ADOQuery1.Parameters.ParamByName('strP3').Value := '%' + Edit2.Text + '%';
ADOQuery1.Parameters.ParamByName('strP4').Value := '%D%';
end;

if (Edit1.Text = '') and (Edit2.Text = '') then
begin
ADOQuery1.SQL.Add(' where not (优选等级 like :strP4)');
ADOQuery1.Parameters.ParamByName('strP4').Value := '%D%';
end;
ADOQuery1.SQL.Add(' order by 存货编码 ');
ADOQuery1.Open;
end;
 
后退
顶部