二个关于数据库的编辑与刷新的问题(100分)

  • 主题发起人 主题发起人 Amoyer
  • 开始时间 开始时间
A

Amoyer

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库1:Tableaaa[code:A,price:$]==A表示字符型,$表示金额型,下同
数据库2:Tablecode[code:A,Name:A]
在Form1上有DBGrid1连接Qurey1从Tableaaa根据SQL取列表,
同时有DBGrid2连接Query2也从Tableaaa按SQL条件显示列表。

Form2上有DBEdit和构件TTable编辑Tablaaa,在TTable的Fields Editors增加
一个字段NAME用于显示code对应Tablecode里的name,该功能通过Lookup实现自动
从Tablecode找到对应的name,当然FORM2上也放置了Tablecode的TTable与TDataSource构件.
Form2上的DBEdit1、DBEdit2、DBEdit3对应分别显示Tableaaa中的code、name和price

问题1:在Form2上用TNavigator对Tableaaa增加一个记录时,如果Tablecode
中对应code没找到,DBEdit2显示为空,记录添加正常;若Tablecode里的code
有对应值时,DbEdit2显示对应的name值,但按TNavigator增加新记录时,则总是出错。

问题2:在Form2上增加一条记录后,Form1上的DBGrid1和DBGrid2里怎么
才能实现自动刷新(不用Query1.Close+Open或Avtive.True+False功能,因为每次关闭
后Form1总是要清空栅格数据再重刷)

对不起,表达能力有限,啰啰嗦嗦一大堆。
 
问题1: 出什么错, KEY 冲突么?
问题2: dbgrid1.invalidate 重画
如你是更新了数据集后要求将更新反映出来的话,而又不愿意用
CLOSE/OPEN方法刷新表,那么将QUERY1的CACHE UPDATE属性设为TRUE
挂一个UPDATE SQL 控件给QUERY1,也可以

哈哈,罗嗦一大堆
 
refresh一次啦?
 
1.DBEdit中的内容并不能作为添加的依据,其功能只能用来显示与修改数据库库
已存在的记录。若插入/添加记录在不使用DBNavigator时可用赋值语句来实现,使用
DBNavigator,则不要使用DBedit即可。
2.由于增加/删除记录后,RecordCount也要发生变化,因此可在检索一遍数据库进行
人为的刷新不就得了。
 
光看这个问题就够我受了。
 
table控件用table1.refresh
query控件用query1.close;query1.open;
不同应用程序之间还须用flashbuffer来更新现调用以上的方法

 
question 1: do you set the lookup field "Name" properly? where is the lookup table "tablecode"?

question 2: i guess that you think the two TDataset component linked to the same physical table should be resynchronized. That's wrong, they maintain the record in their own session, you must refresh to resyn them. but there is a way call "clone" cursor handle to resyn several dataset, if you are interested in it please mail me for detail info.

my mail: lzok@hotmail.com
 
是我的问题表述不清楚,造成大家回答困难,
现在我自己已经解决了。
对热情回答的五个人各给20分

 
多人接受答案了。
 
后退
顶部