以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  狐爸看看 如何用代码改变外部表的对应关系。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23271)

--  作者:Fotable
--  发布时间:2012/9/7 13:49:00
--  狐爸看看 如何用代码改变外部表的对应关系。

我们知道一个外部表 会对应着一个外部数据源下的 一张具体的表

也就是这样的对应关系       外部表 ----外部数据源  ------外部数据库中的表

 

这种对应关系可以通过 下面这个窗口来更改

 

 


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 

有没有办法通过程序代码来控制更改

 外部表 ----外部数据源  ------外部数据库中的表 这种对应关系。

[此贴子已经被作者于2012-9-9 9:29:24编辑过]

--  作者:Fotable
--  发布时间:2012/9/7 14:26:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:20129713482763147.jpg
图片点击可在新窗口打开查看

--  作者:Fotable
--  发布时间:2012/9/8 23:36:00
--  

我来说说我为什么要用代码更改数据表的对应关系吧。

假设我的软件中有两张表。{订单表 }和 {库存表} 我的软件做好了之后 我准备发布给A销售公司和B销售公司使用。

A公司和B公司是独立没有关系的公司。但我让他们共享一个互联网数据库。所以就必须在这个共享的数据库里面建立4张表。

给A公司的软件 中 订单表 对应共享数据中的,{订单表A}  库存表对应 {库存表A}

给B公司的软件中  订单表 对应共享数据中的,{订单表B}  库存表对应 {库存表B}

 

同时我还可以把软件卖给C公司那么 又需要更改软件的对应关系

给c公司的软件中  订单表 对应共享数据中的,{订单表c}  库存表对应 {库存表c}

这样虽然不同的公司共享了同一个数据库,但对他们每个公司来说,数据时相互独立的。

所以我需要用代码 来一键操作这些修改。

[此贴子已经被作者于2012-9-8 23:37:28编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/9/9 9:57:00
--  
没有人这么做,你这是不负责任,不同公司应该不同的数据库。
--  作者:jspta
--  发布时间:2012/9/9 10:08:00
--  
以下是引用Fotable在2012-9-8 23:36:00的发言:

我来说说我为什么要用代码更改数据表的对应关系吧。

假设我的软件中有两张表。{订单表 }和 {库存表} 我的软件做好了之后 我准备发布给A销售公司和B销售公司使用。

A公司和B公司是独立没有关系的公司。但我让他们共享一个互联网数据库。所以就必须在这个共享的数据库里面建立4张表。

给A公司的软件 中 订单表 对应共享数据中的,{订单表A}  库存表对应 {库存表A}

给B公司的软件中  订单表 对应共享数据中的,{订单表B}  库存表对应 {库存表B}

 

同时我还可以把软件卖给C公司那么 又需要更改软件的对应关系

给c公司的软件中  订单表 对应共享数据中的,{订单表c}  库存表对应 {库存表c}

这样虽然不同的公司共享了同一个数据库,但对他们每个公司来说,数据时相互独立的。

所以我需要用代码 来一键操作这些修改。

[此贴子已经被作者于2012-9-8 23:37:28编辑过]

你换种思路,你不是有外部数据源吗?定义一个全局变量,以后在所有的数据源都引用这个。你想要修改数据源名称或换个数据源时,只需改这个变量,这样数据源就更改了。不同公司怎么能用同个数据源?万一出现程序错误,你这责任可不小


--  作者:Fotable
--  发布时间:2012/9/9 10:09:00
--  

狐狸爸爸,我们现在是讨论方法如何实现的,向您求教这样做的方法是否可行,用代码如何具体实现。

我举得例子是公司,但实际我是免费提供给两个公益组织使用的,公益组织没有经费,不会付给我设计费用,我还要贴钱租用数据库。只是为了减少成本 多做好事,尽量帮助到更多的人,应该可以吧。

 

 如果我是用来收费商用,自然这个租用数据库的费用,就是购买方来支付这些费用,费用也不多,我也不用这样大费脑子,去想办法来解决这个问题了。如果代码没有办法,我就只好 手工来实现这些操作了,多费点时间。

[此贴子已经被作者于2012-9-9 10:47:50编辑过]

--  作者:Fotable
--  发布时间:2012/9/9 10:14:00
--  
以下是引用jspta在2012-9-9 10:08:00的发言:

你换种思路,你不是有外部数据源吗?定义一个全局变量,以后在所有的数据源都引用这个。你想要修改数据源名称或换个数据源时,只需改这个变量,这样数据源就更改了。不同公司怎么能用同个数据源?万一出现程序错误,你这责任可不小

这个方法 我也想到的了,但租用空间 是只会给你一个数据源的。多个数据源 就有相当于租用多份空间,就没有起到降低成本的作用。另外安全问题,只要你表名对应的是不同的表 就没有问题。  这就和讨论 同一台服务器 租用给不同的人做虚拟服务器是一样的道理,我这个就相当于,一个数据库 虚拟成多个数据库。

[此贴子已经被作者于2012-9-9 10:15:47编辑过]

--  作者:布莱克朱
--  发布时间:2012/9/9 10:40:00
--  
我觉得简单的办法   用同一数据库没有问题    同样的表  表名 就必须不同了.
--  作者:Fotable
--  发布时间:2012/9/9 10:47:00
--  
对呀,我现在的实现思路就是 前台同样的表 对应后台不同的数据库表名,来实现虚拟数据库
--  作者:jspta
--  发布时间:2012/9/9 11:07:00
--  
以下是引用Fotable在2012-9-9 10:47:00的发言:
对呀,我现在的实现思路就是 前台同样的表 对应后台不同的数据库表名,来实现虚拟数据库

对表名用表进行管理,我没有使用你这个来加载表,我都是用窗口使用fill来实现的。以下是飞的代码,你可以试试看

 

\'此函数用于动态生成数据表
Dim TblName As String = Args(0)           \'要生成的表名称
Dim SQLStr As String = Args(1)            \'SQL语句
Dim CanEdit As Boolean = Args(2)          \'是否允许修改,用于权限控制

If DataTables.Contains(TblName ) Then
    DataTables(TblName ).Fill(SQLStr ,"Test",not CanEdit)
Else
    Dim TblBu As new OuterTableBuilder
    TblBu.TableCaption = TblName
    TblBu.TableName = TblName
    TblBu.C
    TblBu.SelectString = SQLStr
    TblBu.Build
End If
With DataTables(TblName )
    .AllowEdit = CanEdit                           \'根据权限设置是否允许编辑
    .GlobalHandler.PrepareEdit = True              \'开启全局表事件
    .GlobalHandler.DataRowAdding = True
    .GlobalHandler.BeforeShowContextMenu = True
    .GlobalHandler.DataColChanged = True
    If .Name Like "员工资料*" Then .GlobalHandler.BeforeAttachFile = True
    If .Name Like "成品资料维护*" Then .GlobalHandler.DataColChanged = True
End With
Tables(TblName ).AutoSizeCols
Tables(TblName ).Grid.AllowFiltering = True
Tables(TblName ).Grid.AllowFreezing = True
\'If TblName.Contains("录入") Then Tables(TblName).Grid.AllowAddNew = True
MainTable = Tables(TblName )