通用数据链接文件 (*.UDL) 的创建 (转)

本文介绍如何使用Visual Basic创建通用数据链接文件(*.UDL),包括编写代码来生成和读取UDL文件的方法,适用于需要配置数据源的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通用数据链接文件 (*.UDL) 的创建 (转)[@more@]引用 microsoft OLE db Service Component 1.0 Type Library
Option Explicit
Private Sub Command1_Click()
Dim x As New MSDASC.DataLinks
x.hWnd = Me.hWnd
Dim s As String
On Error GoTo ErrorHandler
s = x.PromptNew
On Error GoTo 0
If VBA.Len(VBA.Trim(s & "")) > 0 Then
Dim CommonDialog1 As New M SCOmDlg.CommonDialog
CommonDialog1.DefaultExt = ".udl"
CommonDialog1.Filter = "通用数据链接 文件 (*.UDL)|*.udl"
CommonDialog1.DialogTitle = "保存为通用数据链接文件"
CommonDialog1.Flags = cdlOFNOverwritePrompt
CommonDialog1.CancelError = True
On Error GoTo ErrorHandler
CommonDialog1.ShowSave
On Error GoTo 0
s = "[oledb]" & vbCrLf _
& "; Everything after this line is an OLE DB initstring" & vbCrLf _
& s & vbCrLf
Dim BytesBuffer() As Byte
BytesBuffer = VBA.StrConv(VBA.StrConv(s, vbUnicode), vbFromUnicode)
Dim i As Long
ReDim BytesBuffer0(1) As Byte
BytesBuffer0(0) = 255 '&HFF
BytesBuffer0(1) = 254 '&HFE
If VBA.Len(VBA.Trim(VBA.Dir(CommonDialog1.FileName))) > 0 Then
VBA.Kill CommonDialog1.FileName
End If
On Error GoTo ErrorHandler
i = VBA.FreeFile
Open CommonDialog1.FileName For Binary Access Write As #i
Put #i, , BytesBuffer0
Put #i, , BytesBuffer
Close #i
On Error GoTo 0
If VBA.MsgBox("Test?", vbYesNo) = vbYes Then
Dim adoConnection As New ADODB.Connection
adoConnection.Open "File Name=" & CommonDialog1.FileName
VBA.MsgBox "OK!"
End If
End If
Exit Sub
ErrorHandler:
If Err.Number <> 91 And Err.Number <> 32755 Then
VBA.MsgBox Err.Number & ":" & vbCrLf & Err.Description
End If
End Sub
Private Sub Command2_Click()
Dim CommonDialog1 As New MSComDlg.CommonDialog
CommonDialog1.DefaultExt = ".udl"
CommonDialog1.Filter = "通用数据链接文件 (*.UDL)|*.udl"
CommonDialog1.DialogTitle = "打开通用数据链接文件"
'CommonDialog1.Flags = cdlOFNOverwritePrompt
CommonDialog1.CancelError = True
On Error GoTo ErrorHandler
CommonDialog1.ShowOpen
On Error GoTo 0
If VBA.Len(VBA.Trim(VBA.Dir(CommonDialog1.FileName))) > 0 Then
VBA.MsgBox GetConnectionStringFromUDL(CommonDialog1.FileName)
End If
Exit Sub
ErrorHandler:
If Err.Number <> 91 And Err.Number <> 32755 Then
VBA.MsgBox Err.Number & ":" & vbCrLf & Err.Description
End If
End Sub
Public Function GetConnectionStringFromUDL(UDLFileName As String) As String
If VBA.Len(VBA.Trim(VBA.Dir(UDLFileName & ""))) > 0 Then
Dim BytesBuffer() As Byte
ReDim BytesBuffer(VBA.FileLen(UDLFileName) - 133) As Byte
Dim i As Long
i = VBA.FreeFile
Open UDLFileName For Binary Access Read As #i
Get #i, 129, BytesBuffer
Close #i
GetConnectionStringFromUDL = VBA.Trim(VBA.StrConv(VBA.StrConv(BytesBuffer, vbFromUnicode), vbUnicode))
End If
End Function

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-992183/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-992183/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值