ACCESS-VBA编程
cat.ActiveConnection = appAccess
路径改成自己的,如果有密码则在红色的Password=后面写上正确的密码,别的照抄就行了 如何更该链接表的设置 来源:ALEX
例如,数据库当前的路径可以用application.CurrentProject.Path得到,然后
用 application.CurrentProject.Path + \就可以指向数据库安装目录下面 link子目录下的ABC.MDB。
从文本框里输入新的数据库路径,然后更新链接。 Private Sub Command0_Click() Dim cat As ADOX.Catalog Dim tdf As ADOX.Table Me.txtDBnewNAME.SetFocus Set cat = New ADOX.Catalog
Set cat.ActiveConnection = CurrentProject.Connection Set tdf = cat.Tables(\
tdf.Properties(\End Sub
如何在ADP启动时,判断数据库连接是否有效并重新连接
这是微软MSDN中,在ADP项目中创建ADP的数据库的默认连接的代码
Public Function sCreateConnection(sSvrName As String, sUID As String, sPWD As String, sDatabase As String) As String
'该函数在ADP中检查连接,如果没有,它将通过输入参数创建一个连接
'输入:sSvrName 数据库服务器名sUID 用户名sPWD 口令sDatabase MSDE数据库名 '输出:连接状态
On Error GoTo sCreateConnectionTrap:
If Application.CurrentProject.BaseConnectionString = \'表示ADP处于无连接状态
sConnectionString = \& \INITIAL CATALOG=\Application.CurrentProject.OpenConnection sConnectionString sCreateConnection = \创建了到 \数据库的连接!\Else '连接已存在
sCreateConnection = \已经存在到 \数据库的连接!\End If
sCreateConnectionExit: Exit Function
sCreateConnectionTrap:
sCreateConnection = Err.Description Resume sCreateConnectionExit End Function
此例程将从 ADP 删除连接,使其处于无连接状态。 Sub MakeADPConnectionless()
Application.CurrentProject.CloseConnection '关闭连接
Application.CurrentProject.OpenConnection '将连接设置为无 End Sub
重新定位链接表二步走
来源:爱赛思应用俱乐部 kevindeng
31
ACCESS-VBA编程
尽管Accxp网上有很多关于定位链接表的贴子,但还是有很多的朋友询问这方面的问题。应letter网友的提议,结合Alex总版主的重新定位链接表文件源码,现将这方面的具体操作介绍如下: 假设前台数据库文件名为frontBase.mdb 后台数据库文件名为backData.mdb
frontBase当中有链接表tbl1, tbl2, tbl3, ?,链接到backData.mdb中
首先我们要在前台数据库文件的启动窗体加载事件中判断链接是否正确,方法是打开任意一个链接表,假设为tbl1,代码如下:
Public Function CheckLinks() As Boolean
' 检查到后台数据库的链接;如果链接存在且正确的话,返回 True 。 Dim dbs As Database, rst As DAO.Recordset Set dbs = CurrentDb()
' 打开链接表查看表链接信息是否正确。 On Error Resume Next
Set rst = dbs.OpenRecordset(“tbl1”) rst.Close
' 如果没有错误,返回 True 。 If Err = 0 Then
CheckLinks = True Else
CheckLinks = False End If End Function
启动窗体的加载事件: Private Sub FORM_Load() If CheckLinks = False then Docmd.OpenFORM “frmConnect” End If End Sub
frmConnect 连接窗体如下图 [img]f:\\m.bmp[/img]
接下来的事情就是如何刷新链接表了。
上面的窗体右边的按钮是用用来调用API打开文件对话框,具体代码如下:
Declare Function GetOpenFileName Lib \PENFILENAME) As Boolean Type OPENFILENAME
lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String
lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long
lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long
nFileOffset As Integer
32
ACCESS-VBA编程
nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long
lpTemplateName As String End Type
Private Sub FileOpen_Click() Dim ofn As OPENFILENAME Dim rtn As String
ofn.lStructSize = Len(ofn) ofn.hwndOwner = Me.hwnd
ofn.lpstrFilter = \数据库文件 (*.mdb)\ ofn.lpstrFile = Space(254) ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space(254) ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = CurrentProject.Path ofn.lpstrTitle = \后台数据文件为\ ofn.flags = 6148
rtn = GetOpenFileName(ofn)
FileName.SetFocus If rtn = True Then
FileName.Text = ofn.lpstrFile FileName.Text = FileName.Text OK.Enabled = True Else
FileName.Text = \ End If End Sub
连接按钮刷新链接表,代码如下: Private Sub OK_Click() Dim tabDef As TableDef
For Each tabDef In CurrentDb.TableDefs If Len(tabDef.Connect) > 0 Then
tabDef.Connect = \后台数据库密码 tabDef.RefreshLink End If Next
MsgBox \连接成功!\
DoCmd.Close acFORM, Me.Name End Sub
其实很简单只有两步,判断链接是否正确和刷新链接表。
清空表记录的方法
1、CurrentDb().Execute \表名\2、docmd.runsql \语句\
33
ACCESS-VBA编程
3,RunSQL \表名\VB语句删除记录: For I = 1 To 20
SQL = \订单明细ID FROM 订单明细 WHERE 订单明细ID=\DoCmd.RunSQL SQL Next 或:
CurrentProject.Connection.Execute \要删除记录的表\用VBA编程把Excel表中数据追加到Access表中 Private Sub Command0_Click()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, \End Sub
SQL--JOIN之完全用法 来源:ACCESS设计在线
外联接。外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定: LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任
何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。
Microsoft? SQL Server? 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字: LEFT OUTER JOIN 或 LEFT JOIN
RIGHT OUTER JOIN 或 RIGHT JOIN
FULL OUTER JOIN 或 FULL JOIN
SQL Server 支持 SQL-92 外联接语法,以及在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。由于 SQL-92 语法不容易产生歧义,而旧式 Transact-SQL 外联接有时会产生歧义,因此建议使用 SQL-92 语法。
使用左向外联接
假设在 city 列上联接 authors 表和 publishers 表。结果只显示在出版商所在城市居住的作者(本例中为 Abraham Bennet 和 Cheryl Carson)。
若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用 SQL-92 左向外联接。下面是 Transact-SQL 左向外联接的查询和结果: USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a LEFT OUTER JOIN publishers p ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC 下面是结果集:
au_fname au_lname pub_name
34
ACCESS-VBA编程
------------------- ------------------------------ ----------------- Reginald Blotchet-Halls NULL Michel DeFrance NULL Innes del Castillo NULL Ann Dull NULL
Marjorie Green NULL Morningstar Greene NULL Burt Gringlesby NULL Sheryl Hunter NULL Livia Karsen NULL
Charlene Locksley NULL Stearns MacFeather NULL Heather McBadden NULL Michael O'Leary NULL Sylvia Panteley NULL Albert Ringer NULL Anne Ringer NULL Meander Smith NULL Dean Straight NULL Dirk Stringer NULL Johnson White NULL Akiko Yokomoto NULL
Abraham Bennet Algodata Infosystems Cheryl Carson Algodata Infosystems (23 row(s) affected)
不管是否与 publishers 表中的 city 列匹配,LEFT OUTER JOIN 均会在结果中包含 authors 表的所有行。注意:结果中所列的大多数作者都没有相匹配的数据,因此,这些行的 pub_name 列包含空值。 使用右向外联接
假设在 city 列上联接 authors 表和 publishers 表。结果只显示在出版商所在城市居住的作者(本例中为 Abraham Bennet 和 Cheryl Carson)。SQL-92 右向外联接运算符 RIGHT OUTER JOIN 指明:不管第一个表中是否有匹配的数据,结果将包含第二个表中的所有行。
若要在结果中包括所有的出版商,而不管城市中是否还有出版商居住,请使用 SQL-92 右向外联接。下面是 Transact-SQL 右向外联接的查询和结果: USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a RIGHT OUTER JOIN publishers AS p ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC 下面是结果集:
au_fname au_lname pub_name
-------------------- ------------------------ -------------------- Abraham Bennet Algodata Infosystems Cheryl Carson Algodata Infosystems NULL NULL Binnet & Hardley
NULL NULL Five Lakes Publishing NULL NULL GGG&G
NULL NULL Lucerne Publishing NULL NULL New Moon Books NULL NULL Ramona Publishers NULL NULL Scootney Books (9 row(s) affected)
35
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Access - VBA编程(使用技巧大全)[1](8)在线全文阅读。
相关推荐: