用select语句查询Access表格的奇怪问题
用以下select语句查询Access表格时出现问题
sqlstring="SELECT 序号,日期,用户名,"+sqlfields+" FROM "+TableName; //这句出问题
//sqlstring="SELECT * FROM "+TableName; //换成这句没问题
DataModule1->ADOQuery1->SQL->Clear();
DataModule1->ADOQuery1->SQL->Add(sqlstring);
DataModule1->ADOQuery1->Active=true; //运行到这里时出现错误提示
其中 " 序号,日期,用户名,"是固定的,sqlfields根据用户的设置不同,我发现字段名为中文、纯字母、字母起头数字结尾的字段名没问题,其他形式的字段名查询时就有问题。但在建立表格或修改表格结构时,都没有问题。我是用 ALTER TABLE 修改表格结构。
问题 1 :如果字段名为纯数字组合时,查询结果显示在DBGrid时,字段名的位置不显示这个纯数字组合,而是显示类似 expr1003,expr1004之类的,原本应该显示查询内容的位置却显示这个纯数字组合。例如:4878 这个字段,原本字段名的地方显示 expr1003 ,而内容却不显示正确的内容,显示的是 “4878”。
问题 2:如果字段名为子母数字组合且数字起头,一旦开始查询,就出现错误提示:语法错误(操作符丢失)在查询表达式 87saf中。( 87saf 在这里是举例的具体的字段名)
百思不解,如果我的字段名定义的有问题,在用 ALTER TABLE 增加或修改字段名时,应该有提示啊!!???
[解决办法]
这个正常,所以尽量用标准的标识来做字段名.
不过,这个可以这样解决的,在你的SQL的字段名加[]号
如:
select [4878],[87saf] form 表