怎样查询(100分)

  • 主题发起人 主题发起人 zhj_nc
  • 开始时间 开始时间
Z

zhj_nc

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL语句SELECT...FROM...WHERE...中,WHERE的条件是否不能带变量参数如 A>B 。其中A是字段,B是变量。如果我想实现这样的功能,该怎样做?
 
可以这样:
Query1.Sql.Add('Select * from TableName where A>:p1');
Query1.ParamByName('P1').Value := B;
 
g:starbzj Or
Query1.Sql.Add('Select * from TableName where A>'''+B+'''');
//B:string;
//other:
Query1.Sql.Add('Select * from TableName where A>'+B);

 
带参数的查询
 
做talbe2
select *
from table1
where a in
(select a
from table2
where table1.a>table2.b)
呵呵,没试过。
 
也可在用table的filter,在onfilter的even中设:
accept:=(a=b);
 
to starbzj:'p1'是什么,我运行时,提示‘query:parameter 'p1' not found'
 
‘p1’就是
Query1.Sql.Add('Select * from TableName where A>:p1');
这个语句里的参数 p1 啊
 
孔枫说的对,p1就是'A>:p1'里的参数。
 
是要用数据库中的变量还是程序中的变量赋值?
 
p1必须指明数据类型
如Query1.ParamByName('P1').AsString := 'B';
 

Query1.Sql.Add('Select * from TableName where A>:p1');
Query1.ParamByName('A').Value := Form1.Edit1.Text;
Query1.ParamByName('P1').Value := Form1.Edit2.Text;
 
我同意 starbzj 的看法,但Query1.ParamByName('P1').Value := B;
应改成query1.ParamByName('p1').asstring:=b;

wumeng 的做法也对。
 
query1.close;
query1.sql.clear;
query1.sql.add('select *from tablename where fieldname like or = or > value;
 
Query1.close;
Query1.sql.clear;
Query1.Sql.Add('Select * from TableName where A>:p1');
query1.ParamByName('p1').asstring:='ypy';
Query1.open;
//说明:A为字段名,p1为字符串型变量。整型变量这样写
query1.ParamByName('p1').asinteger:=12345;
//以次类推
 
如何在Query的属性页的Params项内增加内容?谢谢!
 
to:lieyuan 如何在Query的属性页的Params项内增加内容?谢谢!
在TQuery的SQL里写:
Select * from TableName where A>:p1
完成后,双击Params即可设置。若在Query的属性页的
Params项内增加内容,必须增加SQL里的Params内容,
若动态SQL则不需要管Query的属性页的Params项的内容。
这样即可:
Query1.Sql.Add('Select * from TableName where A>:p1');
Query1.ParamByName('P1').Value := B;



 
定义
const
SQLStr1='SELECT * From TableName WHERE A>%d';
var B:integer; mysql:string;

程序中:
B:=任意int;
mysql:=format(SQLStr1,);

执行此mysql即可。

 
后退
顶部