Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]如何建立一个窗体可以修改链接表的所有对象属性

茼蒿  发表于:2015-03-04 11:45:05  
复制

大家新年好!好久没来问问题了,问一个看看有没有答的。

我想做一个界面用来新增后台的数据表,和修改数据表中的字段属性。遇到2个难点:

1、ACCESS分前台和后台,即2个数据库,我要在本地数据库修改远程链接表中的字段数据,如字段名称,字段数据类型等。不知如何实现

2、如何通过本地数据库窗体设计表结构,并新增到远程数据库中,实现链接表模式。


以上希望大神多多指点,最好能有个实例。如果盟威能将此功能做在开发平台里面更好,每次都要打开DATA修改表,太麻烦了。

 

Top
煮江品茶 发表于:2015-03-04 13:48:49
用sql或ado、dao均可实现吧?

茼蒿 发表于:2015-03-04 15:09:38

大神,既然说的如此简单,不如帮人帮到底,给我写一个呗。模版我都做好了,如附件点击下载此附件

前台是front,后台back。

打开front,把窗体里的数据实现一下,完善这个实例就行了。谢谢!



煮江品茶 发表于:2015-03-04 16:31:12
1、创建、修改、删除数据表,可参见:http://www.accessoft.com/blog/article-show.asp?userid=10802&Id=4437


2、以上示例为对本地表的编辑方法,如果需要对后台数据库文件进行操作,只需在上例的基础上,引入一个adodb.Connection,设置这个连接指向后台文件,然后用这个连接的Execute方法执行示例中的新建、修改、删除数据表的SQL语句即可。


3、创建数据库后,将数据表链接到前台执行DoCmd.TransferDatabase语句即可。


4、除了以上处理方法外,用ADOX.Catalog对象也可进行处理(需要引用Mocrosoft ADO Ext 2.8 for DDL and Securty),至于怎么个玩法,可以自己查阅系统内置的资料(在vb视图中,于搜索栏输入Catalog便可找到)。


煮江品茶 发表于:2015-03-04 17:08:21
1、假设在前台的同一个目录中存在一个后台文件为Data.mdb,如果打算用ADOX.Catalog来创建一个部门表,并将创建后的部门表立刻连接到前台中,则运行以下代码即可:


    Dim cn As ADODB.Connection
    Dim clx As ADOX.Column
    Dim cat As ADOX.Catalog
    Dim tb As ADOX.Table
    
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\Data.mdb"


    Set cat = New ADOX.Catalog
    Set cat.ActiveConnection = cn
    Set tb = New ADOX.Table
    
    Set clx = New ADOX.Column


    tb.Name = "部门表"
    clx.ParentCatalog = cat
    
    clx.Type = adInteger
    clx.Name = "部门id"
    clx.Properties("AutoIncrement") = True


    tb.Columns.Append clx
    tb.Columns.Append "部门", adVarWChar, 10
    cat.Tables.Append tb
    
    tb.Keys.Append "部门id", adKeyPrimary, "部门id"
    
    DoCmd.TransferDatabase acLink, "Microsoft Access", CurrentProject.Path & "\Data.mdb", acTable, "部门表", "部门表", False
    
    Set clx = Nothing
    Set cat = Nothing
    cn.Close
    Set cn = Nothing




2、删除表,可以:
cat.Tables.Delete "部门表"


3、修改表字段,可以用tb.Columns的各种属性,以及tb.Keys修改主键和外键


茼蒿 发表于:2015-03-05 14:27:55

大师,非常感谢您的代码,大受启发。但是有一疑问:

在您的代码中,建立字段是固定名称的,假如我是要把一个临时表里面的一列数值作为字段名写入代码,该怎么写呢?

例如临时表列名为“字段名”,值为“部门ID”,“部门名”,“部门类型”,要把这三个值作为创建新表的字段名,该怎么写?



何保辛 发表于:2015-03-08 07:54:48

孺子不可教也!


    tb.Columns.Append clx
    tb.Columns.Append "部门", adVarWChar, 10
    cat.Tables.Append tb


名字都随便你定了,还要问!



茼蒿 发表于:2015-03-08 13:22:41

楼上大师,我说的是动态表名和字段名。换句话讲先把表名和字段名存放在一个数据表内,然后用代码生成创建表。

tb.Columns.Append clx
    tb.Columns.Append "部门", adVarWChar, 10
    cat.Tables.Append tb

只能说明把部门字段生成到表里,我要把一个数据表里多个字段放入,这个问题还是没解决啊



何保辛 发表于:2015-03-10 05:27:30

tb.Columns.Append clx

tb.Columns.Append "部门", adVarWChar, 10

cat.Tables.Append tb


是告诉你,你自己写 for next 代码来加入,如果你 读取recordset 不会,for...next 不会的话,最好还是先去上课!




茼蒿 发表于:2015-03-10 11:53:42
呵呵,你答对了,就是FOR不会写,我要问的就是FOR里面怎么写,因为FOR要调用字段属性,函数怎么写不知道。上课记不住,请教大师更实际。

总记录:9篇  页次:1/1 9 1 :