大虾:
我用delphi7开发了一个基于oracle数据库的报表查询程序,用BDE连接。
其中,我是用query组件来进行查询数据。程序运行刚开始根据输入的查询条件要删除一个临时表,然后紧接着再建立这个临时表。
如:with query1 do
....
drop table aa_Tbl
....
with query1 do
...
create table aa_tbl
as
select .....(因为每次输入的条件不同,该select返回的记录也不同,所以建立的该临时表内容也会变化。)
建立完之后,再用这个临时表联接另一个表,创建另一个查询语句,得出报表所要的记录。现在主要的问题是,这个程序要很多人使用,而且不排除他们是同时使用,万一当某个用户对该临时表进行删除操作,而另一个用户正刚创建完这个临时表并将要进行查询语句时,这个怎么办?而且每个用户输入的条件不一样,则他们所创建的临时表也不同,如何保证他们下一个查询所用的临时表是根据他们的输入条件建立的临时表,而不是另外用户所建的临时表?希望高手给予答复!谢谢!
我用delphi7开发了一个基于oracle数据库的报表查询程序,用BDE连接。
其中,我是用query组件来进行查询数据。程序运行刚开始根据输入的查询条件要删除一个临时表,然后紧接着再建立这个临时表。
如:with query1 do
....
drop table aa_Tbl
....
with query1 do
...
create table aa_tbl
as
select .....(因为每次输入的条件不同,该select返回的记录也不同,所以建立的该临时表内容也会变化。)
建立完之后,再用这个临时表联接另一个表,创建另一个查询语句,得出报表所要的记录。现在主要的问题是,这个程序要很多人使用,而且不排除他们是同时使用,万一当某个用户对该临时表进行删除操作,而另一个用户正刚创建完这个临时表并将要进行查询语句时,这个怎么办?而且每个用户输入的条件不一样,则他们所创建的临时表也不同,如何保证他们下一个查询所用的临时表是根据他们的输入条件建立的临时表,而不是另外用户所建的临时表?希望高手给予答复!谢谢!
解决方案 »
- 下面的程序为什么达不到预期效果!
- 悲剧啊,fastreport 内置insert函数的问题
- 大家看看这手机咋样?我想出手买一个...
- 求救高手,一个关于过滤字符串的问题.在线等.很急!!!!!!!!!!!!!!!!!!
- 登陆问题,大家帮帮我吧
- 在delphi里,哪个函数是计算一个表里有多少条记录的???
- 这个sql 语句怎么写?
- Undeclared identifier: 'TAboutBox'
- 各位高手,首先感谢大家对我的帮助,我想用一套中文的安装生成软件来做安装程序,不知道那里有!
- 如何给Delphi中用BDE做的数据库进行备份?
- 程序打包后有dephi的机子上可以运行,没有dephi的机子则不能运行
- 小弟想入门,那位前辈有DELPHI数据控件的电子帮助文档呀,属情方法之类的
delphi中的事务用Database实现,建议学习相关资料!
也可以用存储过程实现!
同样写SQL语句查询,但是是把SQL语句放到了数据库服务器上,delphi中利用TStoredProc控件实现!具体办法查看数据库编程的相关资料!
with query1 do
....
drop table aa_Tbl
....
with query1 do
...
create table aa_tbl
as
select .....
应放在以下这个事务处理过程的哪里呢?procedure TForm1.QueryApplyClick(Sender: TObject);
begin
with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates; //写入数据库
Database1.Commit; //写入成功,提交事务
except
Database1.Rollback; //写入失败,取消修改
raise;
end;
CommitUpdates; //写入成功后,清除数据库缓存
end;
end;
可以是多句一起执行!Database1.StartTransaction
with Query do
begin
Sql.clear
Sql.Add(str1);
Sql.Add(str2);
Try
ExecSql;
//扑获异常
if DataBase1.Errors.Count = 0 then
Database1.Commit; //成功,事务提交
else
Database1.Rollback; //失败,事务回滚
Except
Database1.Rollback; //失败,事务回滚
End;
end;