三层 主从表数据录入问题 ??
用的是delphi2010方法是:
服务器端:
1、 连接数据库
2、放置ADODataSet,假设命名为ADSMaster,主表
Sql=select * from inhead where 1=2
3、放置DataSouce,DataSet设为ADSMaster;
4、放置另外一个ADODataset,假设命名为ADSDetail,从表,设置DataSouce为刚才主表的Datasource,
这样在从表与主表建立连接关系, 然后在MasterFields 的Field Link Designer主表从表关联的字段
Sql=select * from inhouse where 1=2
5、放置DataSetProvider,DataSet连接ADSMaster
客户端:
1、 建立的服务器连接
2、放置两个DataSouce、两个ClientDataSet,其中一个连接到服务器 (ADSMaster) 的DatatSetProvider,将所有字段 加入到Fields Editor中,将看到有一个ADSDetail的字段
3、在另外一个ClientDataSet中的DataSetField中加入ADSDetail,大致 是这样的字样ClientDataSet1ADSDetail
4 新增按钮事件
begin
ADSMaster.close;
ADSMaster.open;
ADSMaster.append;
ADSDetail.close;
ADSDetail.open;
ADSDetail.append;
Adsspbm.close;
Adsspbm.open;
end;
执行新增时就出错 提示 stack overflow ; 我这样两层结构是可以的 请问三层应怎么设置呢?? 谢谢!!
[解决办法]
帮你顶顶帖子
可能是 连接数据库的字符串 有问题吧
[解决办法]
数据录入还是采用B/S结构中的录入方式吧,即:用Insert-SQL 命令来完成数据录入,其优点是无需像Dataset那样将部分或全部数据传送到前端。
[解决办法]
从表的ADODataset里面的SQL语句必须传一个参数进去,必须为主表的一个外键或者主键
[解决办法]
客户端不能直接操作服务器中的ADSMaster,而是通过ClientDataSet读写数据。
[解决办法]
1.Clientdataset是否open
2.Append语句都改为ClientDataSet.Append,在客户端执行
[解决办法]
主从表 从表 不能直接 使用类似 adoquery.insert 因为是从表......所以乃还是用sql 插入吧