如何用DBgrid实现Microsoft SQL Server 7.0的数据表的录入(200分)

  • 主题发起人 主题发起人 xingshen2
  • 开始时间 开始时间
X

xingshen2

Unregistered / Unconfirmed
GUEST, unregistred user!
要求:用DBgrid录入已有的Microsoft SQL Server 7.0的数据表,不显示已有的数据,
只显示、修改本次、本用户的记录。我用query,SQL=“select * from 数据表 where 2<1”
实现了不显示以前的记录,但一刷新,本次的记录也不见了。请问如何实现?
注意:要考虑多用户环境。
 
先问一下,您用的是BDE还是ADO连接。
如果是BDE,建议你将数据集处在缓存状态才进行数据修改,修改完毕之后
进行缓存更新。
如果是ADO,同样要进行缓存更新。
 
>>只显示、修改本次、本用户的记录。
数据库中要有主键,还要记录个人信息。
SQL=“select * from 数据表 where 。。。”
在where 。。。处写相应的条件。

 
数据库中添加字段:操作员编码,操作时间.
select ... from 表 where opid=操作员编码 and optime>=程序中保留的登录时间
 
private
FKey: ..关键字段的类型
SQL=“select * from 数据表 where 关键字段=:Key”
如果一次输入多条则关键词的值一样.
在数据向Microsoft SQL Server 7.0提交前:
begin
Fkey:=数据表 .FieldbyName('关键字段').value;
end;
在数据向Microsoft SQL Server 7.0提交后:
begin
数据表.close;
数据表.open;
end;

在数据表的Beforeopen中写:
数据表.ParamByname('Key').value:=Fkey;


 
告诉你一个办法:
创建一个和你的数据表完全一样的临时表,DBGrid 连接到这个临时表上。
每次进入程序时把这个表清掉,如果考虑到多用户环境的话,就把这个临时表建立在本地,
就用 Paradox 的 .DB 就行了,目的是方便连结。
编辑完成后,用 BatchMove 控件一次性向服务器上的数据表添加,这个临时表清不清除
就看你自己了,如果不清除,下一次保存的时候就要注意先把本程序上次保存的数据删掉
再添加,这时需要为记录打上一个诸如“批次”的标志,先把这一批的数据全部删掉,然后
再全部添加。“批次”可以用用户名和登录时间组合起来,在程序启动的时候生成。
Clear ?

btw:
其实用 DBGrid 同服务器以直通方式录入数据,我真的不赞成,不过好像很多朋友都喜欢
这样做,如果坚持这样做的话,就只有用上面的办法了。
From: BaKuBaKu
 
同意BaKuBaKu说的方法。
 
同意BaKuBaKu说的方法
 
接受答案了.
 
后退
顶部