WScript查询的输出结果在Microsoft Access中

时间:2015-01-28 16:07:26

标签: ms-access

我有一个Access数据库,它使用WScript查询来获取用户提供的文件路径的目录信息。我希望能够将结果输出到SQL或Access表中。

例如,如果我将WScript设置为使用DIR命令获取C:上的文件内容,我希望将其输出放在SQL Server或Access表中。

我知道xp_cmdshell对于这种类型的命令来说是更好的选择,但是我们的环境已禁用此功能而无法使用它。您可以提供的任何帮助将不胜感激。

感谢。

1 个答案:

答案 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

表单的控件必须绑定到记录集的列,如下所示

enter image description here

在数据表视图中运行它时,它将如下所示

enter image description here

您可以捕获相应的OnClick事件以打开文件,或者如果Type = "File Folder",则可以重置记录集以进一步深入。您可以添加人工..以上升一级。或者制作自己的界面。如果您需要更多,FileFolder对象中还有很多其他文件/文件夹属性。