VB中怎么动态创建access数据库以及数据库表

VB中怎么动态创建access数据库以及数据库表,第1张

access可以使用复制空白数据库的方式来省成新的数据库。

首先需要有一个空白数据库,没有任何表。例如000.mdb。

通过fso把000.mdb复制到制定路径,并改名为text1

然后用CREATE TABLE创建表text2

用UPDATE添加纪录就行了text3

CREATE TABLE和UPDATE都是标准的SQL

一、 创建数据库:

在DAO中用CreatDataBase方法可以根据用户需求动态的创建数据库。这一点在程序中是非常有用的。用户可以根据要求实时建立数据库。建立过程如下:

Private Sub Com_creat_Click()

On Error GoTo Err100

CreatDataBase "数据库名称.mdb" ,dbLangGeneral

Msgbox "数据库建立完毕"

Exit Sub

Err100:

MsgBox "不能建立数据库! " &vbCrLf &vbCrLf &Err.Description, vbInformation

End Sub

这样,数据库便在当前默认的路径下建立了。

二、 创建表与字段

建立数据库后,则需要在该数据库中建立表,这要用到TableDef 对象。先定义一个TableDef类型的对象,然后用TableDef集合中Append方法将之追加到数据库当中去。并且同时定义一个Field对象,用CreatFiele的方法创建一个Field对象,向表中添加字段。例如:

Private Sub Com_table_Click()

On Error GoTo Err100

Dim Defdb As DataBase

Dim NewTable As TableDef

Dim NewField As Field

Set Defdb = Workspaces(0).OpenDatabase (App.path &"\数据库名称.mdb" ,0, False)

Set NewTable = DefDataBase.CreateTableDef("表名")

Set NewField = DefTable.CreateField( "字段名" , dbText ,6) ′创建一个字符型的字段,长度为6个字符

DefTableFields.Append NewField ′字段追加

DefDatabase.TableDefs.Append NewTable ′表追加

Msgbox " 表建立完毕 "

Exit Sub

Err100:

MsgBox "对不起,不能建立表。请先再建表前建立数据库?", vbCritical

End Sub

那只是创建表.还不算动态,动态要二维数组,表达行和列.

如: Dim myDB As DAO.Database

Set myDB = DAO.Workspaces(0).CreateDatabase("d:\md\lll.mdb", dbLangGeneral)

myDB.Execute "Create Table " &表名 &"(" &"id Counter," &mm1 &" Text(10))"

'生成一个d:\md\lll.mdb数据库存

myDB.Close

打断它:. 表名=数组 字段= combo2数组 字段属性= combo3数组

for..i=0 to combo2.ListCount-1'主工部分处理

myDB.Execute "Create Table " &表名 &"(" & combo2.list(i) & combo3.list(i) ")"

next

这样生成的表就是一个完全动态的表名,行 列 字段都能自己定义的动态表,

调用查询/删/增/修改.都分别以数组

如:

cn.Open "provider=Microsoft.jet.OLEDB.4.0data source=" &ur

sq = "select * from " &uyu &" where " &stm(3) &"='" &Form2.Text1(3) &"'"

rs.Open sq, cn, adOpenKeyset, adLockOptimistic

If rs.RecordCount >0 Then

MsgBox "" &stm(3) &"重复,不能添加数据", vbExclamation, "查询"

rs.Close

cn.Close

查询:

For i = 1 To rs.RecordCount

Set Fliv = Form1.ListView1.ListItems.Add()

Fliv.Text = rs.Fields(stm(1))

For r = 1 To sn - 1

Fliv.SubItems(r) = rs.Fields(stm(r + 1))

Next

rs.MoveNext

Next i

'sts = stm(1) &"='" &Form3.Text1(1) &"', " &stm(2) &"='" &Form3.Text1(2) &"', " &stm(4) &"='" &Form3.Text1(4)

For r = 1 To sn - 1

rn = rn + stm(r) &"='" &Form3.Text1(r) &"', "

Next

sts = rn &stm(sn) &"='" &Form3.Text1(sn)

' Form3.Text1(sn).Enabled = False

sq = "Update " &uyu &" set " &sts &"' where " &stm(3) &"='" &Form3.Text1(3) &"'"

cn.Execute (sq)

MsgBox "数据修改完成", vbInformation, "修改"

cn.Close

Set cn = Nothing

Form1.ListView1.ListItems.Clear '先清空表格里的数据

加载列表数据

设成公用变量,全换成数组之后,反面简单明了..

只用提供表名,及字段马上就可以生成你需要数据库..动态数组的交集就是所需字

记录.查询和调用都极为便利.更重要的是大大减小了数据库负担


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9614724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存