delphi读取access表格的内容-异常标准表达式数据类型不匹配

delphi读取access表格的内容-错误标准表达式数据类型不匹配
我在测试delphi读取access的时候一直会出现“标准表达式数据类型不匹配”
delphi读取access表格的内容-异常标准表达式数据类型不匹配

我的代码是
var s1,s2,s3:string;
srate:string;
begin
srate:='0';
with ADOQuery1 do
 begin
 close;
 sql.Clear;
 ///sql.Add('SELECT * FROM `xdf_user` WHERE username ='+QuotedStr('admin')+' and password ='+QuotedStr('admin'));
 sql.Add('select * from cache where id = '+srate);
 ///showmessage(sql.Text);
try
open; ///查询的部分
s1:=trim(AdoQuery1.FieldByName('item1').AsString);//英文
s2:=trim(AdoQuery1.FieldByName('item2').AsString);//汉语
s3:=trim(AdoQuery1.FieldByName('item3').AsString);//词性
finally
close;
end;
end;
end;



在mysql中没有问题,但是在access中就出现了问题

我的access表格截图是

delphi读取access表格的内容-异常标准表达式数据类型不匹配

我的表格的格式类型是

var ssql:string;
begin       
with DataModule1.ADOQuery1 do
begin            
  Close;
  sql.Clear ;  
  ssql:='CREATE TABLE cache4 (id varchar(4),item1 longtext,item2 longtext,item3 varchar(20),item4 varchar(20))';
  sql.Text:=ssql;
  try
     ExecSQL;
  finally
    close;
  end;
end;
end;


请问我应该如何读取access中的内容 谢谢

------解决方案--------------------
id是varchar类型的话
你的SQL语句里是不是要带上引号
id = '+ srate ==>> id = '+ QuotedStr(srate)

with ADOQuery1 do
 begin
 close;
 sql.Clear;
 ///sql.Add('SELECT * FROM `xdf_user` WHERE username ='+QuotedStr('admin')+' and password ='+QuotedStr('admin'));
 sql.Add('select * from cache where id = '+ QuotedStr(srate));

------解决方案--------------------
sql.text:= format('select * from cache where id = ''%s''',[srate])

字段类型要注意