关于Adodataset带参数的问题! 找用友财务软件官网
adodataset1.Close;
adodataset1.CommandText:=(''select * from bas14 where :s1 = :s2'');
adodataset1.Parameters.ParamByName(''s1'').DataType:=ftstring;
adodataset1.Parameters.ParamByName(''s1'').Value:=''+str1+'';
adodataset1.Parameters.ParamByName(''s2'').Value:=str2;
adodataset1.Open;
运行时查询不出值来,而直接这样写却可以,为什么?
adodataset1.CommandText:=(''select * from bas14 where ''+str1+'' = :s2'');
2楼: String類型參數在實際轉成SQL語句時會帶上單引號,假如str1=''FieldName'',str2=''clwlyc'',轉換出來應該是這樣:
select * from bas14 where ''fieldName''=''CLWLYC'',這肯定是錯誤的. 如批发零售软件
3楼: adodataset1.Parameters.ParamByName(''s1'').Value:=''+str1+'';將這~{>dSP~}語~{7(~}錯誤~{5CP^8D~}為adodataset1.Parameters.ParamByName(''s1'').Value:=str1;~{>M?IRTAK!#~}
4楼: adodataset1.Parameters.ParamByName(''s1'').Value:=str1
我这样试过了也不行的!
5楼: adodataset1.Close;
adodataset1.CommandText:=(''select * from bas14 where :s1 = :s2'');
adodataset1.Parameters.ParamByName(''s1'').DataType:=ftstring;
adodataset1.Parameters.ParamByName(''s1'').Value:=''+str1+'';
adodataset1.Parameters.ParamByName(''s2'').Value:=str2;
adodataset1.prepare; //加上这句试试
adodataset1.Open;
6楼: 建议楼主不要用动态赋值语句,这样容易产生莫名其妙的错误
销售管理软件版7楼: 那要怎么做?那两个地方要动态变化,我是用来做查询的
8楼: adodataset1.CommandText:=format(''select * from bas14 where %s = %s'',[str1,QuotedStr(str2)]);
9楼: 要先create参数呀,然后才能赋值呀。adodataset1.Parameters CreateParameter() ;
10楼: ADOQUERY里SQL引号的用法
''''''+string1+'''''' //字符型变量
11楼: adodataset1.Close;
adodataset1.CommandText:=(''select * from bas14 where :s1 = :s2'');
adodataset1.Parameters.ParamByName(''s1'').DataType:=ftstring;
adodataset1.Parameters.ParamByName(''s1'').Value:=str1;
adodataset1.Parameters.ParamByName(''s2'').Value:=str2;
12楼: 自已搞定!
结贴~ 如用友财务软件官网