我正试图找出tables.DBF
的名称,这些名称在硬盘目录中。
随后,我需要知道它们的列的名称,但是即使是表的名称,我也不知道如何找出。标准的SQL工具不起作用,这是合乎逻辑的。该脚本在IIS(Windows Server 2008),VBScript下的站点上运行。对于连接,我使用驱动程序:AccessDatabaseEngine_X64。
从特定表中进行的选择有效,可以创建,删除该表-它可以工作。连接代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE=1251%>
<%
Function OpenDBFConn(Path)
Dim Conn: Set Conn = CreateObject("ADODB.Connection")
Conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Path & ";" & _
"Extended Properties=""DBASE IV;"";"
Set OpenDBFConn = Conn
End Function
Dim DBConn
Set DBConn = OpenDBFConn("C:\update")
Dim Lel
Set Lel = DBConn.Execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_type='BASE TABLE'")
%>
脚本结果:
Microsoft Access数据库引擎找不到对象“ INFORMATION_SCHEMA.TABLES”。确保对象存在,并且正确拼写了它的名称和路径名。如果“ INFORMATION_SCHEMA.TABLES”不是本地对象,请检查您的网络连接或与服务器管理员联系。
这是合乎逻辑的。在这里,用于访问系统表的方法将无效,因为它们无效。问题-如何知道“更新”文件夹中的表名称?文件夹的屏幕截图:
答案 0 :(得分:0)
1)表名。如前所述,使用FileSystemObject获取表名(即M1072R,M10201等):
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set fo=fs.GetFolder("C:\update")
For Each x in fo.files
If LCase(fs.GetExtensionName(x.path)) = "dbf" Then
Response.Write fs.GetBaseName(x.path) & ";"
End if
Next
2)列名:
'Dim Lel
'Set Lel = DBConn.Execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_type='BASE TABLE'")
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "M1072R", DBConn
'-- where M1072R is your table/dbf file
For Each f In rs.Fields
Response.Write "Column=" & f.Name & ";"
Next
获取列的另一种方法是使用OpenSchema
Set rs=DBConn.OpenSchema(4, Array(Null, Null, "M1072R"))
'-- where M1072R is your table/dbf file,
'-- 4 stands for adSchemaColumns
Do While Not rs.EOF
Response.Write "Column=" & rs.Fields("COLUMN_NAME").Value & ";"
rs.MoveNext
Loop