SQL Server查询问题:a.查询条件不确定;b.要求查询结果可修改,并且修改结果不会存到库中。(100分)

  • 主题发起人 主题发起人 lan2001
  • 开始时间 开始时间
L

lan2001

Unregistered / Unconfirmed
GUEST, unregistred user!
按部门查询人员的工资,用户选择的部门个数不确定。
select * from gz where 部门=:param1 or 部门=:param2......
我用Query.SQL.Add()组合出这一Sql语句,并能查询正确。
但是用户要求查询结果可以修改,并且修改后的结果不进行保存。
1. Query查询的结果,用DBGrid显示,用户修改后回存回到库中去。请问该怎么做?
2.如果用存储过程,我有不知道输入参数个数不确定该怎么做?
create procedure chaxun @param
as
select *
insert into #tmp
from gz
where 部门=@param
go
select * from #tmp
请问该怎么办?
a.查询条件不确定;b.要求查询结果可修改,并且修改结果不会存到库中。
用Query不能做到b,用存储过程和临时表做不到a。请问该怎样解决?
 
1、select * from gz where 部门 in ('bm1', 'bm2', 'bm3', ...'bmn');
2、用临时表。或者用非数据感应控件。
 
a,用缓存更新模式,退出时不更新就行了。
b,不要用存储过程,在客户端写程序,根据查询条件动态写sql语句
如:
sql.add(select * from where )
if ???? then
sql.add()
if ???? then
sql.add()
 
综合上面两位的就是很好的回答:

1、select * from gz where 部门 in ('bm1', 'bm2', 'bm3', ...'bmn');

2、用缓存更新模式,退出时不更新就行了。


 
你的程序中的部门数量是固定的吧?在procedure 中定义与部门数一样的过程变量
create procedure pro1 @bm1 varchar(10),@bm2 varchar(10)... as

1、select * from gz where @bm1 in ('bm1', 'bm2', 'bm3', ...'bmn') or @bm2 in ('bm1', 'bm2', 'bm3', ...'bmn') or @bmn in ('bm1', 'bm2', 'bm3', ...'bmn') ;

2、用缓存更新模式,退出时不更新就行了。

 
1。 in ('bm1', 'bm2', 'bm3', ...'bmn')我的参数个数是不定的。
2。用缓存,如果select 对一个表查询时可以的。但是如果我是多个表的连接查询呢?
 
但是用户要求查询结果可以修改,并且修改后的结果不进行保存
easy,查询结果导出到excel,随便怎么修改也不影响,数据库的数据
 
问题仍然没有解决
 
1.in 后面用个字符串,这个字符串包括你的要查询的部门,至于有哪些部门,让用户自己指定。
2.把查询出来的数据写到内存表里。
 
用dev或者rx里的内存表控件就可以了
 
to 左右手,
Rx的内存表控件怎么用?好象没有示例。
另,有没有支持SQL查询的内存表呢?谢谢
 
Rx的内存表的使用就和一般的table差不多,你把字段设计好,然后把查询出来的数据一条一条
的写进内存表控件就可以了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部