在字符串中要想再字符'必须多加一个'就是这个意思,所以''''表示一个字符串中的一个',例如: I'm a student.这句话要是用单引号引起来就是:'I''m a student' 如果中间没有字符的话就变成'''',表示' 这个sql语句意思是: where kumu_name='combobox1.text+'
更正:where kumu_name='combobox1.text'
adoquery1.Sql.Add('Select * from '+tablename+'); adoquery1.sql.add('where kumu_name='''+combobox1.text+''''); 这样稍简单一些,但这是格式没办法,就向我们写别的代码一样不符格式就通过一样的。
那为什么combobox1.text旁边要加两个+号
sql.add('select * from 计算机1'); sql.add('where kemu_name='''+edit1.text+'''and time='''+edit2.text+'''');运行时说类型不匹配,我的time是长整型,在这个句子怎样才能让time等于edit2.text
sql.add('select * from 计算机1'); sql.add('where kemu_name='''+edit1.text+'''and time=:time'); parambyname('time').asinteger:=strtoint('edit2.text'); 这是用参数的方法
这个方法在ADOquery中不行,我试了很多次了我这个方法太麻烦了,有没有其他更简单的方法
adoquery1.Sql.Add('Select * from '+tablename); adoquery1.sql.add('where kumu_name='+''''+Trim(combobox1.text)+'''');改为这样
哎,你应该说清楚你的字段是什么类型,如果是整数型那就这样: adoquery1.Sql.Add('Select * from tablename'); adoquery1.sql.add('where 表字段=:name1 and time=:name2'); parameters.ParamByName('name1').value:=edit1.text; parameters.ParamByName('name2').value:=strtoint(edit2.text); open;上边都不用改,只改这一行。 parameters.ParamByName('name').value:=strtoint(combobox.text); 如果字段是日期型: parameters.ParamByName('name').value:=strtodatetime(combobox.text); 如果你还不明白,把你的代码发给我。我帮你改。
你也可以写成这样
adoquery1.Sql.Add('Select * from '+tablename);
adoquery1.sql.add(' where kumu_name='+''''+combobox1.text+'''');
中间的两个引号的第一个引号是字符转义符号,把中间第二个引号字符串标示意义去掉了。
所以 ''''的结果是只有一个'号的字符串。
其实你这样写是比较麻烦的!可以这样写:
combo_value:=combobox1.text
adoquery1.Sql.Add('Select * from '+tablename);
adoquery1.sql.add('where kumu_name='+#39+combo_value+#39);
adoquery1.sql.add('where 表字段=:name');
parameters.ParamByName('name').value:=combobox.text;
open;
出错[Error] Unit1.pas(123): Undeclared identifier: 'asstring'
I'm a student.这句话要是用单引号引起来就是:'I''m a student'
如果中间没有字符的话就变成'''',表示'
这个sql语句意思是:
where kumu_name='combobox1.text+'
adoquery1.sql.add('where kumu_name='''+combobox1.text+'''');
这样稍简单一些,但这是格式没办法,就向我们写别的代码一样不符格式就通过一样的。
sql.add('where kemu_name='''+edit1.text+'''and time='''+edit2.text+'''');运行时说类型不匹配,我的time是长整型,在这个句子怎样才能让time等于edit2.text
sql.add('where kemu_name='''+edit1.text+'''and time=:time');
parambyname('time').asinteger:=strtoint('edit2.text');
这是用参数的方法
adoquery1.sql.add('where kumu_name='+''''+Trim(combobox1.text)+'''');改为这样
adoquery1.Sql.Add('Select * from tablename');
adoquery1.sql.add('where 表字段=:name1 and time=:name2');
parameters.ParamByName('name1').value:=edit1.text;
parameters.ParamByName('name2').value:=strtoint(edit2.text);
open;上边都不用改,只改这一行。
parameters.ParamByName('name').value:=strtoint(combobox.text);
如果字段是日期型:
parameters.ParamByName('name').value:=strtodatetime(combobox.text);
如果你还不明白,把你的代码发给我。我帮你改。
根据这个意思,你好好体会,就明白了。
parambyname('time').asinteger:=strtoint('edit2.text');
这种参数付值方法是错误的,这种适合与BDE,ADO中应该采用:
parameters.ParamByName('name').value:=strtoint(combobox.text);
必须增加为parameters.ParamByName