比如我要用到这样一个语句
adoquery1.sql.add('select * from table1 where name=:myname');
myname是动态参数,我是临时要创建这个参数,不想在adoquery1中parameters属性中进行创建,我想在程序中直接用语句添加,怎么创建动态参数myname??????
10 个解决方案
#1
使用字符串格式化,举个例子
adoquery1.sql.add(Format('select * from table1 where name=''%s'' and name1=''%s''',[myname, myname1]));
adoquery1.Open;
adoquery1.sql.add(Format('select * from table1 where name=''%s'' and name1=''%s''',[myname, myname1]));
adoquery1.Open;
#2
adoquery1.sql.add('select * from table1 where name=:myname');
这样不就创建了myname了么?
只要在程序里设置 参数 myname 的类型和值就可以了啊.
这样不就创建了myname了么?
只要在程序里设置 参数 myname 的类型和值就可以了啊.
#3
参数 myname 的类型和值也可以用代码来设置的啊.
一楼老大的办法还要考虑数据的类型哦.
一楼老大的办法还要考虑数据的类型哦.
#4
我好象看过一本书,程序中也是可以创建动态参数的!!当时忘了记下来!!!
现在只能在adoquery的parameters属性中添加了!!!
还有一个问题:(就是使用动态参数的问题)
(1)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1 where name=:name');
//用到动态参数,但是adoquery1还没有open;
adoquery1.execsql;
(2)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1');
adoquery1.open;//adoquery1在此open
adoquery1.sql.add('delete * from table1 where name=:name');
adoquery1.execsql;
两种是不是都可以?????????????????
现在只能在adoquery的parameters属性中添加了!!!
还有一个问题:(就是使用动态参数的问题)
(1)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1 where name=:name');
//用到动态参数,但是adoquery1还没有open;
adoquery1.execsql;
(2)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1');
adoquery1.open;//adoquery1在此open
adoquery1.sql.add('delete * from table1 where name=:name');
adoquery1.execsql;
两种是不是都可以?????????????????
#5
adoquery1中的sql的语句要是为空的话,能不能使用adoquery1.open呢?
#6
回楼上不能,用execsql
#7
adoquery1中的sql的语句要是为空的话,可以用execsql,但是它执行的空的代码,也就是说它不会执行,而用open则会出错????是这个意思么???
#8
Parameters.Add啊?
#9
我刚做过一个完整的动态添加参数的程序:
procedure ......
//首先在这里声明一个你要用到的变量
var
myname:string;
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
parameters.Clear;
parameters.AddParameter;
parameters[0].Name:=myname;
parameters[0].DataType:=ftString;//假设你的name字段是字符类型
parameters[0].Value:=Edit1.Text;//在Edit控件中写查询条件给myname动态赋值
//如果是其它类型的用转换函数转换一下即可
prepared;
open;
end;
end;
procedure ......
//首先在这里声明一个你要用到的变量
var
myname:string;
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
parameters.Clear;
parameters.AddParameter;
parameters[0].Name:=myname;
parameters[0].DataType:=ftString;//假设你的name字段是字符类型
parameters[0].Value:=Edit1.Text;//在Edit控件中写查询条件给myname动态赋值
//如果是其它类型的用转换函数转换一下即可
prepared;
open;
end;
end;
#10
procedure ......
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
myname:=Edit1.text;
prepared;
open;
end;
end;
我好象直接这样子就可以!!!!!!!!!
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
myname:=Edit1.text;
prepared;
open;
end;
end;
我好象直接这样子就可以!!!!!!!!!
#1
使用字符串格式化,举个例子
adoquery1.sql.add(Format('select * from table1 where name=''%s'' and name1=''%s''',[myname, myname1]));
adoquery1.Open;
adoquery1.sql.add(Format('select * from table1 where name=''%s'' and name1=''%s''',[myname, myname1]));
adoquery1.Open;
#2
adoquery1.sql.add('select * from table1 where name=:myname');
这样不就创建了myname了么?
只要在程序里设置 参数 myname 的类型和值就可以了啊.
这样不就创建了myname了么?
只要在程序里设置 参数 myname 的类型和值就可以了啊.
#3
参数 myname 的类型和值也可以用代码来设置的啊.
一楼老大的办法还要考虑数据的类型哦.
一楼老大的办法还要考虑数据的类型哦.
#4
我好象看过一本书,程序中也是可以创建动态参数的!!当时忘了记下来!!!
现在只能在adoquery的parameters属性中添加了!!!
还有一个问题:(就是使用动态参数的问题)
(1)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1 where name=:name');
//用到动态参数,但是adoquery1还没有open;
adoquery1.execsql;
(2)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1');
adoquery1.open;//adoquery1在此open
adoquery1.sql.add('delete * from table1 where name=:name');
adoquery1.execsql;
两种是不是都可以?????????????????
现在只能在adoquery的parameters属性中添加了!!!
还有一个问题:(就是使用动态参数的问题)
(1)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1 where name=:name');
//用到动态参数,但是adoquery1还没有open;
adoquery1.execsql;
(2)
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('delete * from table1');
adoquery1.open;//adoquery1在此open
adoquery1.sql.add('delete * from table1 where name=:name');
adoquery1.execsql;
两种是不是都可以?????????????????
#5
adoquery1中的sql的语句要是为空的话,能不能使用adoquery1.open呢?
#6
回楼上不能,用execsql
#7
adoquery1中的sql的语句要是为空的话,可以用execsql,但是它执行的空的代码,也就是说它不会执行,而用open则会出错????是这个意思么???
#8
Parameters.Add啊?
#9
我刚做过一个完整的动态添加参数的程序:
procedure ......
//首先在这里声明一个你要用到的变量
var
myname:string;
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
parameters.Clear;
parameters.AddParameter;
parameters[0].Name:=myname;
parameters[0].DataType:=ftString;//假设你的name字段是字符类型
parameters[0].Value:=Edit1.Text;//在Edit控件中写查询条件给myname动态赋值
//如果是其它类型的用转换函数转换一下即可
prepared;
open;
end;
end;
procedure ......
//首先在这里声明一个你要用到的变量
var
myname:string;
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
parameters.Clear;
parameters.AddParameter;
parameters[0].Name:=myname;
parameters[0].DataType:=ftString;//假设你的name字段是字符类型
parameters[0].Value:=Edit1.Text;//在Edit控件中写查询条件给myname动态赋值
//如果是其它类型的用转换函数转换一下即可
prepared;
open;
end;
end;
#10
procedure ......
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
myname:=Edit1.text;
prepared;
open;
end;
end;
我好象直接这样子就可以!!!!!!!!!
begin
with adoquery1 do
begin
if active then
active:=false;
sql.clear;
sql.add('select * from table1 where name=:myname');
myname:=Edit1.text;
prepared;
open;
end;
end;
我好象直接这样子就可以!!!!!!!!!