关于数据表的几个问题(100分)

  • 主题发起人 主题发起人 3h
  • 开始时间 开始时间
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
近日编写一电话用户管理应用程序,遇到一点问题。
此库分为两个表,TELEDATA和USERDATA。格式为ACCESS97。
设想是这样的,这两表利用共有的USERID字段连接。
前表有主关键字TELENO,USERID则是有重复的索引,
后者USERID为主关键字,无重复,
也就是说前者多个电话可以对应一个用户资料(同址装机)。

1、在新加用户时,要同时对这两个表进行操作。(理所当然吧?)
这时问题似乎不是很大,因为可以分别加,但如果要编辑一个用户,
可以用QUERY,进行SQL查询,然后将一个DATASOURCE指向QUERY,
并用一个DBGRID与之连接。问题是此网格此时处在READONLY状态,
可能是SQL的结果只能查询?
如果用TABLE,那么发现它只能连接一个表。有没有办法实现如上的操作?
就是先指定一个记录,然后可以同时对两表进行操作。我觉得,
这种操作应该是非常广泛使用的,为什么TABLE中没有?
可能我不知道,故请教。

2、客户想将USERID做成自动增量,可有什么良策?
用 RecordCount+1 总觉得不大好。
 
1.因为数据库的一条SQL只能更新一个表中的数据,
所以是不支持对多表查询结果的更新的。只能你
一个一个表地去操作你的数据了。

2.用USERID+1就是了
 
1. 还是用Query吧.
2. RecordCount+1和USERID+1 都挺好
 
可以用自动增量类型字段,不过我从来不用,我觉的它挺讨厌的.
 
1、用两个Table, 两个Datasource,两个DbGrid。
DbGrid对好位置, 手工同步。

2、RecordCount+1 不好,一但需要删除中间一条记录, 就Trouble了。

 
"自动增量字段"是比较讨厌,不过有时候不用他还真不行.
 
可以做视图吗?
 
1.就那么也没事,做个编辑键,按一下新增加个窗体,让用户输入,然后手工写SQL
或者干脆搞两个TABLE得了,反正是ACCESS数据库。
2.可以用现成的自增类型:)或者就把最后一条记录+1
 
1. 用master-detail不就可以了吗? 很简单呀!
2. 自增字段access带呀, 没问题. 还可以select max(id) from usertable, 然后
id=max+1;
 
第二个问题解决了,用cytown的MAX函数,避免了删除某一记录造成错误的危险,
同时也不用自动增量带来的麻烦。

第一个问题看来有点难度,master-detail是什么?
 
不难, 用query+requestlive := true+cachedupdates+updatesql+OnUpdateRecord
 
master-detail几乎任何数据库(delphi)书上都有, 看看吧:-)
很简单的:-)
 
1)别偷懒使用DBGRID,用SQL语句查询出所需记录
使用其它数据集组件修改
2)USERID可以使用自动增量字段
 
1)别偷懒使用DBGRID,用SQL语句查询出所需记录使用其它数据集组件修改

我正是这样做的。 :-(
 
master-detail,从入门到精通也没有这个内容耶。
能给点例程吗?不够钱就加!
 
hhhe老兄,我觉得可以这么做
你把数据查询显示后,
用一些标准的edit之类的控件把数据取到edit中
我的意思是 上面 方一个 dbgrid,下面方一系列edit
把数据 用 edit.text:=query1.fieldbyname().asstring取过来
然后编辑,确定后
再将 edit中的数据 写回库里
例如:
query1.sql.clear
query1.sql.add('update table1 set a=:a,b=:b');
query1.parambyname('a').astring:=edit1.text;
...
query1.execsql
最后
query1.sql.add('select * from t1')
query1.active:=true;
不过,你得注意 edit中的数据要随记录的移动更新
 
用midas,服务段主细结构.client段两表同时作修改.
例子demos/midas/alctest
很好
 
1,正如cytown所言,用主-零结构搞定了。
2,仍如cytown所言,用max搞定了。

有关此问题的其它讨论,请在另一问题:
<a href="DispQ.asp?LID=147978">结束事务数据一半不能保存?</a> (88分)
中继续发挥,仍有机会得分!!!
 
例子:
table1.tablename='master';
datasource1.dataset=table1;
table2.tablename='detail';
table2.mastersource=datasource1;
table2.masterfields添加关联的字段名, 如id...
ok!!!!

 
后退
顶部