通用表编辑器






4.86/5 (111投票s)
2000年2月16日

1760780

12297
用于从您的IIS/PWS可访问的任何数据库中的任何表的查看器和编辑器。
本文内容
1 概述
Universal Table Editor 是一个 ASP 应用程序,用于查看和编辑您可以通过 ADO 从 IIS 访问的任何数据库中的数据。兼容的数据库例如有 MS Access™、MS SQL Server™ 或 Oracle™。UTE 还能够将表的数据导出为逗号分隔的文本文件 (.CSV
),这些文件例如可以被 MS Excel™ 读取。
UTE 是一组文件,它们只代表一个 VBScript 类 clsUTE
,该类可用于简单的 ASP 页面或最复杂的环境。UTE 使用的所有内容都封装在 clsUTE 类中,因此应该完全没有命名空间问题。UTE 正确定义了所有变量,因此它符合 option explicit
规范。UTE 的布局完全由样式表驱动,因此很容易调整为任何布局。
以前的 UTE 版本(<= 1.4)广泛使用会话变量。现在这已成为历史!UTE 不再使用任何会话变量。UTE 包含一个 .inc
文件,用于定义所有依赖于语言的设置和字符串。它已经附带了许多预定义的语言文件(英语、德语、法语、意大利语、西班牙语),但您可以通过自己的语言文件扩展此列表,这并不困难。
2 功能
- 在表中插入、编辑和删除记录。
- 定义任意数量的过滤器以减少记录数量。
- 将完整的表内容导出为
.CSV
文件。 - 显示精确的字段定义。
- 每列的排序。
- 自动主键检测。
- 显示当前用于从数据库读取数据的 SQL 语句。
- UTE 是一个 VBScript 类,具有一些易于使用的公共属性和函数。
- 在实际操作中,UTE 通过 URL 参数进行控制。
- 布局完全由样式表驱动。
- 所有显示的字符串都在特殊的语言包含文件中定义。
- 错误管理。
- UTE 符合
option explicit
规范。 - 二进制数据类型将不显示且不可编辑。
3 详情
3.1 如何安装 UTE
要安装 UTE,您只需将 ZIP 中的所有文件(包括子目录)复制到一个 IIS 虚拟目录(例如 ute30
)。就这样。启动 index.html 页面以编辑附带的演示数据库。
UTE 使用 ADO (ActiveX Data Objects - 已安装在服务器上) 来访问数据库。我推荐访问 Microsoft ADO Pages 获取有关此技术的更多信息。我已使用基于 MS Access™、MS SQL Server™ 和 Oracle™ 的许多数据库测试了 UTE。如果您在安装 UTE 后遇到任何问题,您应该检查最新的 MDAC (Microsoft Data Access Components) 版本和数据库提供程序,它们可以在 这里 找到。
3.2 如何使用 UTE
3.2.1 列出数据库中的表
通过不带任何 URL 参数调用 ute.asp 页面或使用上述工具栏按钮,UTE 将列出当前数据库中的所有表。点击它们后,该表的表编辑器将打开。
https:///ute30/ute.asp
3.2.2 查看表
要打开具有特定表的 UTE,您只需设置 name
URL 参数以定义表的名称
https:///ute30/ute.asp?name=OrderDetails
UTE 附带一个小型演示数据库,取自 Microsoft Northwind 演示。如果您想连接到另一个数据库,您需要修改 ute.asp
文件(参见章节 4 UTE 参考)。
通过使用“页面”链接,您可以在整个表中导航。通过使用“每页记录数”,您可以选择一页上显示的记录数量。
UTE 尝试检测表的所有 primary key fields
并在最左侧的列中以“斜体样式”显示它们。这并非在所有情况下都有效。有些 OLEDB 提供程序不返回这些信息(无论是直接调用还是通过 ODBC)。如果 UTE 无法检测到您表的 primary key fields
,您应该尝试另一种连接类型(参见章节 4.3.1 连接类型)或在 URL 中使用 pkey[counter]
URL 参数定义它们
https:///ute30/ute.asp?name=OrderDetails&pkey1=OrderID&pkey2=ProductID
UTE 能够通过单击每列的标题来按任何列(字段)对表内容进行排序。此外,可以指定任意数量的字段作为 URL 参数来对表进行排序。为此,请使用 sort[counter]
URL 参数。默认排序方向为 ascending
。另外使用 sortdir[counter]
URL 参数来指定另一个排序顺序
https:///ute30/ute.asp?name=OrderDetails&sort1=CustomerID&
sort2=EmployeeID&sortdir2=desc
请注意,通过点击列标题,您将丢失所有高于“1”的排序参数。
UTE 按照字段在数据库中定义的顺序显示表中的字段。早期版本的 UTE 按字母顺序排序。如果您现在希望它们按字母顺序排序,则需要设置 sorted
URL 参数
https:///ute30/ute.asp?name=OrderDetails&sorted=1
有关所有 URL 参数的参考,请参阅 4.1 URL 参数 一章。
3.2.3 查看定义
通过在表格或表单视图中使用上述工具栏按钮,UTE 将显示表中字段的定义。
3.2.4 添加/编辑/删除数据
通过在表格视图中使用 、
和
链接,可以插入、编辑和删除表格中的记录。
点击“确定”后,更改将在数据库中永久生效。点击“取消”后,将返回到表格视图,数据库中不进行任何更改。UTE **不**进行任何字段验证,而是简单地返回从 ADO 接收到的错误消息。如果错误可分配给特定字段,错误消息将直接显示在该字段旁边,否则将显示在页面顶部。
3.2.5 定义过滤器
通过使用上述工具栏按钮,您将能够定义**任意**数量的过滤器来减少表中记录的数量。尽管当前对话框只提供 10 个过滤器,但这只是 UTE 中的一个常量定义。
每个过滤器将被视为一个 `WHERE` 子句。过滤器可以通过 `AND` 或 `OR` 连接。要再次移除过滤器(并从表中获取所有记录),只需使用“清除”按钮。
您为过滤器输入的值没有直接的验证。如果您为过滤器字段定义了无效值,UTE 将从其中创建一个无效的 SQL 语句,获得 ODBC 错误并重定向回此页面并显示原始的 ODBC 错误消息。
3.2.6 导出数据
通过使用上述工具栏按钮,UTE 将把表内容导出为“逗号分隔”文本文件 (.CSV
),该文件可以被其他应用程序(例如 MS Excel™)导入。文件将如下所示
"OrderID","ProductID","Discount","Quantity","UnitPrice" "10248","42","0","10","9,8" "10248","72","0","5","34,8" "10248","11","0","12","14" "10249","14","0","9","18,6" "10249","51","0","40","42,4" ...
UTE 将即时创建数据并将其发送到浏览器。通过设置 ContentType 和附加的 Header,浏览器将能够按需启动 MS Excel™。
Response.Buffer = TRUE
Response.Clear
Response.ContentType = "text/csv"
Response.AddHeader "Content-Disposition", "inline;filename=" & m_sTable & ".csv"
3.2.7 显示 SQL 语句
通过使用上述工具栏按钮,UTE 也会显示用于从数据库读取数据的 SQL 语句。这在处理过滤器时可能很有用。
3.3 如何将 UTE 包含到您的网页中
请使用 ute.asp
文件作为如何将 UTE 包含到任何网页中的一个非常简单的示例。需要做的事情不多
<%@ language = "VBScript" %>
<% option explicit %>
<!--#include file ="ute_definition.inc"-->
<%
Dim sDSN
sDSN = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=" & Server.MapPath("test.mdb")
Dim ute
Set ute = new clsUTE
ute.Init sDSN
%>
<!doctype html public "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title><%=ute.HeadLine%> - Universal Table Editor</title>
<link rel="stylesheet" type="text/css" href="ute_style.css">
</head>
<body bgcolor="#FFFFFF" link="#0000A0" vlink="#0000A0" alink="#0000A0">
<%
ute.Draw
Set ute = Nothing
%>
</body>
</html>
第 4 UTE 参考 章列出了 clsUte
类导出的所有公共属性和函数,并解释了如何连接到数据库。
所有定义和类本身都将通过 ute_definition.inc
文件包含。如果您遇到问题,例如 UTE 使用的 URL 参数名称,您可以在此处简单地给它们其他名称。我已尽可能灵活地编写了 UTE,因此您可以进行大量更改,而无需深入了解其逻辑。布局完全由文件 ute_style.css
中的样式表驱动。
3.4 如何使用不同语言的 UTE
在 UTE 中,所有要显示在屏幕上的字符串都在单独的*语言包含文件*中定义:ute_language_*.inc
。UTE 已经附带了许多预定义的语言文件
语言 | 文件 |
![]() |
ute_language_en.inc |
![]() |
ute_language_de.inc |
![]() |
ute_language_fr.inc (由 Evelyn Berkemeier 提供) |
![]() |
ute_language_it.inc (由 Marco De Sortis 提供) |
![]() |
ute_language_es.inc (由 Agustin Vega 提供) |
默认情况下,UTE 使用英文文件。它是 `ute_definition.inc` 文件中的第一个 include 语句。因此,您所要做的就是更改此 include 语句来更改 UTE 的语言。如果您将 UTE 翻译成另一种语言,请与我们其他人分享(有关如何分享您的作品,请参阅 6 最后的一些话 章)!
4 UTE 参考
4.1 URL 参数
UTE 参数有两种:*公共*参数和*私有*参数。URL 参数并非真正的公共和私有,但它们是这个意思。公共参数应该由您使用,私有参数不应该使用。它们仅由 UTE 创建和使用。
请注意,当您打开包含 UTE 的页面时,UTE 将保留您设置的所有额外 URL 参数。
4.1.1 公共 URL 参数
名称 | 默认值 | 描述 |
![]() name |
要查看/编辑的表的名称。 注意:某些数据库在此处可能区分大小写。 | |
![]() pkey[counter] |
如果 UTE 无法检测到表的主键字段,您应该使用此参数设置所有主键字段,其中 [counter] 是您要定义的字段的整数计数器,从 1 开始。注意:某些数据库在此处可能区分大小写。 请勿在计数中定义间隔! 您还会注意到,UTE 在浏览表格时会自行设置这些参数。这是为了简化代码。 | |
![]() sort[counter] |
要让 UTE 按照特定列对表内容进行排序,您可以使用此参数(任意数量)来指定排序字段。这将导致生成一个 ORDER BY 子句。[counter] 是从 1 开始的字段的整数计数器。默认情况下,所有字段都将按升序排序。如果您希望字段具有不同的排序顺序,则需要使用 sortdir[counter] URL 参数。 | |
![]() sortdir[counter] |
asc |
默认情况下,UTE 按升序对所有排序的列中的记录进行排序。要按降序对字段进行排序,您需要使用此 URL 参数并将其值设置为 desc 。[counter] 是从 1 开始的字段的整数计数器。如果您希望第一个和第二个字段按升序排序,而第三个字段按降序排序,则必须添加参数 sortdir3=desc 。 |
![]() sorted |
0 |
UTE 按照字段(列)在数据库中定义的顺序显示它们(主键字段除外,它们将始终显示在最左侧的列中)。如果您希望 UTE 按字母顺序显示字段/列,请将此参数设置为 1 。 |
4.1.2 私有 URL 参数
名称 | 默认值 | 描述 |
![]() page |
1 |
显示的页码 |
![]() pagesize |
10 |
页面的记录数大小。 |
![]() mode |
0/1 |
UTE.ASP 页面的视图模式。有三种模式可能
name 参数未设置,则默认为 0 ,否则为 1 。 |
![]() formmode |
1 |
如果处于视图模式 2 (表单模式),则为 UTE.ASP 页面的表单模式。有三种表单模式可能
|
![]() record |
要编辑或删除的记录号。此值仅在没有已知主键(检测到或手动设置)时由 UTE 使用。在这种情况下,UTE 使用记录的**所有**字段来识别(选择)数据库中的记录。当表中存在包含某些特殊字符的文本(备注)字段时,这可能会导致问题。您应该确保 UTE 知道您表的主键! | |
![]() sql |
0 |
显示 UTE 用于从数据库获取所有记录的当前 SQL 语句。有效值为 0 和 1 。 |
![]() definitions |
0 |
显示表的字段定义。它们将显示在两种视图模式(表格和表单)中。有效值为 0 和 1 。 |
![]() submitted |
0 |
表示表单在表单视图模式下是否已提交。两个按钮(确定和取消)都会提交表单。 |
![]() fltcount |
1 |
当前选择定义的过滤器数量。 |
![]() fltfield[counter] |
|
定义过滤器的字段名称。[counter] 是从 1 开始的字段的整数计数器。 |
![]() fltcomp[counter] |
= |
过滤器的比较定义。值取自过滤器定义页面上的组合框。目前可用的值有:= 、> 、>= 、< 、<= 、LIKE 、IS 、IS NOT 。[counter] 是从 1 开始的字段的整数计数器。 |
![]() fltvalue[counter] |
|
过滤器的值。[counter] 是从 1 开始的字段的整数计数器。 |
![]() fltcomb[counter] |
AND |
这是不同过滤器组合的方式。值取自过滤器定义页面上的组合框。目前可用的值有:AND 和 OR 。[counter] 是从 1 开始的字段的整数计数器。 |
![]() flterror |
|
如果 UTE 根据无效的过滤器定义创建了无效的 SQL 语句,此参数将保存原始 ODBC 错误消息的文本。它将用于显示在过滤器定义页面上。 |
4.2 公共属性
名称 | 类型 | 读/写 | 描述 |
![]() DBName |
字符串 |
读/写 |
当前数据库的名称。这仅用于显示目的。如果 UTE 显示当前数据库中所有表的列表,则 DBName 将显示在页面标题中。 |
![]() HeadLine |
字符串 |
R |
UTE 页面的标题。这可以在您的 ASP 页面的 <title> 标签中使用。 |
![]() TableName |
字符串 |
R |
当前显示/编辑的表的名称。这与通过 name URL 参数传递的字符串相同。 |
![]() ReadOnly |
布尔值 |
W |
将此属性设置为 True 后,UTE 将不显示任何修改记录的链接,并且如果用户操作 URL 参数,也将阻止修改数据库。默认值: False |
![]() ListTables |
布尔值 |
W |
使用此属性可以显示和隐藏**列出数据库中的表**工具栏按钮。此外,可以不带任何 URL 参数启动 UTE 并列出所有表。如果此参数设置为 False 且在不带 URL 参数的情况下调用 UTE,您将收到错误消息。默认值: True |
![]() Filters |
布尔值 |
W |
使用此属性可以显示和隐藏**定义过滤器**工具栏按钮。 默认值: True |
![]() Export |
布尔值 |
W |
使用此属性可以显示和隐藏**另存为 CSV (Excel) 文件**工具栏按钮。 默认值: True |
![]() SQL |
布尔值 |
W |
使用此属性可以显示和隐藏**显示/隐藏当前 SQL 语句**工具栏按钮。 默认值: True |
![]() Definitions |
布尔值 |
W |
使用此属性可以显示和隐藏表格和表单视图中的**显示/隐藏字段定义**工具栏按钮。 默认值: True |
![]() ImageDir |
字符串 |
读/写 |
UTE 图像所在的目录名称。这可以是绝对路径或相对路径。重要的是末尾的 / (斜杠)!默认值: images/ |
4.3 公共方法
名称 | Returns | 参数 | 描述 |
![]() Init |
|
sDSN |
初始化 UTE。这包括以下步骤
参数 |
![]() Draw |
|
|
使用 Response.Write 将表格或表单的 HTML 代码直接绘制到 HTML 输出流中。 |
![]() getHTML |
字符串 |
|
以字符串形式返回表格或表单的 HTML 代码。 |
4.3.1 连接类型
您可以使用 **dsn** (ODBC) 或所谓的 **无 dsn** 连接。请注意,根据连接类型,UTE 并非总能检测到表的主键字段,因为所使用的驱动程序存在差异。如果您遇到问题,请尽可能切换到其他连接类型。
dsn (ODBC) 连接
如果您在计算机上创建了 ODBC 数据库并将其连接到数据库,则可以使用数据源名称作为连接字符串
ute.Init("myDatabase")如果您需要登录数据库,登录信息也可以放置在连接字符串中
ute.Init("dsn=myDatabase;uid=myName;pwd=myPassword")
dsn-less 连接
连接数据库的另一种方法是使用所谓的 OLE-DB 提供程序而不是 ODBC。如果您的 Web 服务器无法创建 ODBC 数据源,这会很有用。OLE-DB 提供程序将直接连接到数据库,而无需使用 ODBC。最常见的情况是连接到位于您网站某个目录中的 MS Access™ 数据库。在这种情况下,无 dsn 连接字符串将如下所示
ute.Init("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("test.mdb")
其他无 dsn 连接字符串的示例可以在 ADO 连接字符串示例 页面上找到,该页面由 Able Consulting, Inc. 编译。
4.4 文件
UTE 中的文件连接方式如下
ute_definitions.inc
定义所有全局常量并包含以下文件
ute_language_*.inc
所有与语言相关的字符串定义。ute_adolib.inc
许多处理 ADO 的辅助函数。
ute_class.inc
定义了clsUTE
类,其中包含一些在页面加载时使用的私有函数,并包含以下文件
ute_class_database.inc
定义了“数据库”模式下使用的所有函数。ute_class_table.inc
定义了在“表”模式下使用的所有函数。ute_class_form.inc
定义了在“表单”(添加/编辑)模式下使用的所有函数。ute_class_export.inc
定义了在“导出”(创建 CSV 文件)模式下使用的所有函数。ute_class_filter.inc
定义了在“过滤器”(定义过滤器)模式下使用的所有函数。
5 UTE 实时演示
要了解 UTE 在实际生活中如何运作,请访问我的 UTE 页面:
6 最后的几句话
如果您想学习 ASP 和/或 ADO,此应用程序可能是一个值得仔细研究的好选择。另一方面,对于初学者来说,它可能有点复杂,所以您可以决定是简单地使用它,还是修改它。
从 2.0 版本开始,我将 UTE 置于 GNU 通用公共许可证 (GPL) 之下。这主要是为了确保没有人从他人的工作中获取巨额利润,而不同时与我们其他人分享自己的工作和/或隐藏 UTE 不是他自己的作品这一事实。我认为这很公平,不是吗?
由于我的工作非常繁忙,我还决定为 UTE 的未来开发创建一个新位置,并邀请所有人参与其中!简单的关键词是
如果您对 UTE 有一些好主意并希望实现和分享它们,或者您创建了一个新的语言文件,请随时加入**ute-asp**项目:
请随时加入 CodeProject 或 SourceForge 上的讨论区,如果您愿意,也可以访问我的 主页 并在我的留言簿中留下小纸条。
感谢您的关注,希望您喜欢 UTE!
7 修订历史
1.0 | 16.02.2000 | 首次发布 |
| ||
1.1 | 08.08.2000 | |
| ||
1.2 | 12.02.2001 | |
| ||
1.3 | 08.03.2001 | |
| ||
1.4 | 14.03.2001 | |
| ||
2.0 | 23.11.2002 | |
| ||
2.1 | 14.01.2003 | |
| ||
3.0 | 28.04.2003 | |
| ||
3.01 | 07.05.2003 | |
|