我有一个Access数据库,它使用WScript查询来获取用户提供的文件路径的目录信息。我希望能够将结果输出到SQL或Access表中。
例如,如果我将WScript设置为使用DIR命令获取C:上的文件内容,我希望将其输出放在SQL Server或Access表中。
我知道xp_cmdshell对于这种类型的命令来说是更好的选择,但是我们的环境已禁用此功能而无法使用它。您可以提供的任何帮助将不胜感激。
感谢。
答案 0 :(得分:1)
您可以使用FileSystemObject获取有关文件夹/文件的所有信息。然后,您可以查看文件夹中的所有文件和文件夹中的子文件夹,以填充内存中的ADO记录集。将此记录集设置为表单的记录集。
Public Function GetFolderContents(path As String) As ADODB.Recordset
Dim fso As New FileSystemObject
Dim folderRecordSet As ADODB.Recordset
If Not fso.FolderExists(path) Then
Set GetFolderContents = Nothing
Exit Function
End If
Dim fol As Folder, fil As File, subFol As Folder
Set fol = fso.GetFolder(path)
Set folderRecordSet = GetNewFolderRecordset
For Each fil In fol.Files
If fil.Type <> "System file" Then
folderRecordSet.AddNew
folderRecordSet("Name") = fil.Name
folderRecordSet("Size") = fil.Size
folderRecordSet("Date modified") = fil.DateLastModified
folderRecordSet("Type") = fil.Type
folderRecordSet.Update
End If
Next fil
For Each subFol In fol.SubFolders
folderRecordSet.AddNew
folderRecordSet("Name") = subFol.Name
folderRecordSet("Size") = null
folderRecordSet("Date modified") = subFol.DateLastModified
folderRecordSet("Type") = subFol.Type
folderRecordSet.Update
Next subFol
Set GetFolderContents = folderRecordSet
End Function
Function GetNewFolderRecordset() As ADODB.Recordset
Set GetNewFolderRecordset = New ADODB.Recordset
With GetNewFolderRecordset
.Fields.Append "Name", adVarWChar, 255
.Fields.Append "Size", adInteger, , adFldIsNullable
.Fields.Append "Date modified", adDate
.Fields.Append "Type", adVarWChar, 255
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Open
End With
End Function
然后在您的Open事件中,您可以将它们整合在一起。这个片段只是列出你的临时目录内容。
Private Sub Form_Open(Cancel As Integer)
Set Me.Recordset = Module1.GetFolderContents(Environ("temp"))
End Sub
表单的控件必须绑定到记录集的列,如下所示
在数据表视图中运行它时,它将如下所示
您可以捕获相应的OnClick事件以打开文件,或者如果Type = "File Folder"
,则可以重置记录集以进一步深入。您可以添加人工..
以上升一级。或者制作自己的界面。如果您需要更多,File
和Folder
对象中还有很多其他文件/文件夹属性。