sql.add('');
sql.add('PIVOT 表2.nian In (2000,2001,2002)');
这样写是通过的。程序运行没问题
现在想把年的2000,2001等按变量传递过去。不知道怎么写?
比如有变量y1,y1:=2000,那么应该怎么写?以下的写法通不过sql.add('pivot 表2.nian in (=:y,2001,2002) );
parameters.fieldbyname('y').value:=y1;
sql.add('PIVOT 表2.nian In (2000,2001,2002)');
这样写是通过的。程序运行没问题
现在想把年的2000,2001等按变量传递过去。不知道怎么写?
比如有变量y1,y1:=2000,那么应该怎么写?以下的写法通不过sql.add('pivot 表2.nian in (=:y,2001,2002) );
parameters.fieldbyname('y').value:=y1;
parameters.ParamByName('y').value:=y1;不好意思 刚才敲错了 就是这样写的 通不过
我感觉问题出在这里 ,不知道这样的sql里怎么写的
sql.add('PIVOT 表2.nian In (2000,2001,2002)');
以上没问题这样写还是通不过,提示数据类型不匹配。表2.nian这个字段是数字类型
sql.add('');
sql.add('PIVOT 表2.nian In (:y,2001,2002)');
parameters.ParamByName('y').value:=2000;
sql.add('PIVOT 表2.nian & "年" In ("2000年","2001年","2002年")');
以上也没问题 且与
sql.add('PIVOT 表2.nian In (2000,2001,2002)'); 查询结果一样,就是表标题头不一样。是不是因为交叉表的缘故呢。2000既要做查询的条件(为数字类型),又要做表头(文本类型)。我数据库里的表2.nian的数据类型改为文本就通过了。
可是我的数据库类型是不能改的。
这种情况怎么做阿?
...
stringgrid1.Cells[0,i]:=Fieldbyname('2000').AsString;以上都通过的,可是怎么变量传进去再把值取出来啊
Parameters.ParamByName('y').Value:=inttostr(y1)+'年';这样总算通过了
可是把值取出来Fieldbyname('2000年')括号里面变量怎么写呢stringgrid1.Cells[0,i]:=Fieldbyname(???).AsString;