65.9K
CodeProject 正在变化。 阅读更多。
Home

通用表编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (111投票s)

2000年2月16日

viewsIcon

1760780

downloadIcon

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 页面的视图模式。有三种模式可能
  • 0 - 列出当前数据库中的所有表。
  • 1 - 表格模式,显示当前表格。
  • 2 - 表单模式,显示用于插入、编辑或删除记录的表单。
  • 3 - 导出数据模式,将当前表中的数据导出到 .CSV 文件。
请注意:如果 name 参数未设置,则默认为 0,否则为 1
formmode 1 如果处于视图模式 2(表单模式),则为 UTE.ASP 页面的表单模式。有三种表单模式可能
  • 1 - 插入记录
  • 2 - 编辑记录
  • 3 - 删除记录
record   要编辑或删除的记录号。此值仅在没有已知主键(检测到或手动设置)时由 UTE 使用。在这种情况下,UTE 使用记录的**所有**字段来识别(选择)数据库中的记录。当表中存在包含某些特殊字符的文本(备注)字段时,这可能会导致问题。您应该确保 UTE 知道您表的主键!
sql 0 显示 UTE 用于从数据库获取所有记录的当前 SQL 语句。有效值为 01
definitions 0 显示表的字段定义。它们将显示在两种视图模式(表格和表单)中。有效值为 01
submitted 0 表示表单在表单视图模式下是否已提交。两个按钮(确定和取消)都会提交表单。
fltcount 1 当前选择定义的过滤器数量。
fltfield[counter] 定义过滤器的字段名称。[counter] 是从 1 开始的字段的整数计数器。
fltcomp[counter] = 过滤器的比较定义。值取自过滤器定义页面上的组合框。目前可用的值有:=>>=<<=LIKEISIS NOT[counter] 是从 1 开始的字段的整数计数器。
fltvalue[counter] 过滤器的值。[counter] 是从 1 开始的字段的整数计数器。
fltcomb[counter] AND 这是不同过滤器组合的方式。值取自过滤器定义页面上的组合框。目前可用的值有:ANDOR[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。这包括以下步骤
  • 读取并验证所有 URL 参数。
  • 根据视图模式和表单模式设置标题。
  • 打开数据库连接。
  • 分析表的主键和其他字段。
  • 从数据库加载表(记录集)。
  • 如果在 export 视图模式下,创建 .CSV 文件并重定向到它。
  • 如果在 form 视图模式下且表单已提交,则执行所有必要的更新操作。
此函数必须在您的 ASP 页面首次 HTML 输出*之前*调用!

参数 sDSN 是要使用的数据库的连接字符串。有关更多信息,请参见 4.3.1 连接类型 一章。

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 的未来开发创建一个新位置,并邀请所有人参与其中!简单的关键词是

SourceForge.net Logo

如果您对 UTE 有一些好主意并希望实现和分享它们,或者您创建了一个新的语言文件,请随时加入**ute-asp**项目:

请随时加入 CodeProject 或 SourceForge 上的讨论区,如果您愿意,也可以访问我的 主页 并在我的留言簿中留下小纸条。

感谢您的关注,希望您喜欢 UTE!

 

7 修订历史

1.0 16.02.2000 首次发布
  • 此版本赢得了首届 CodeProject 文章竞赛。
1.1 08.08.2000
  • Bug 修复:打开空表。
  • Bug 修复:保存 NULL 字段。
1.2 12.02.2001
  • 改进了主键字段检测。
  • 按定义顺序显示字段(而不是按字母顺序)。
1.3 08.03.2001
  • 改进了主键字段检测。
  • Bug 修复:字符串字段中使用单引号 (') 的问题。
1.4 14.03.2001
  • Bug 修复:更新记录时 SQL 语句中日期格式错误。
2.0 23.11.2002
  • 完全重写。
  • 不再使用会话变量。
  • 只需一个 VBScript 类即可包含到自己的网页中。
  • 支持本地化为任何语言。已附带多种语言。
  • 显式选项证明。
  • 以及过去报告的许多错误修复。
  • UTE 的所有未来开发将在 SourceForge 上协调:http://sourceforge.net/projects/ute-asp/
    欢迎加入!
2.1 14.01.2003
  • 如果未将表名设置为 URL 参数,则列出数据库中的所有表。
  • 用于对表进行排序的任意数量的字段:sort[n], sortdir[n]。
    为了兼容性,单个参数“sort”和“sortdir”仍然有效。
  • 下拉列表选择页面和页面大小,而不是链接。
  • 自定义 URL 参数在表格导航时将保留。
  • 表格视图中 MEMO 字段的固定宽度。
3.0 28.04.2003
  • 定义(任意数量的)过滤器以搜索记录。
  • 表格视图上方有一个工具栏,而不是下方的一些链接。
  • 显示用于获取表格数据的 SQL 语句。
  • 将表格数据导出为 CSV 文件将不再在“/export/”文件夹中创建 CSV 文件。数据将“即时”创建并发送到用户的浏览器。
  • 意大利语定义文件(作者:Marco De Sortis)
  • 西班牙语定义文件(由 Agustin Vega 编写)
  • 将布尔字段显示为复选框,而不是 TRUE 和 FALSE。
  • Bug 修复:移除了表格缓存。这是导致打开大表格时严重延迟的原因。
  • Bug 修复:当使用排序参数“sort”和“sortdir”时,在切换表格使用 LIST TABLES 模式时,定义的数值没有被重置。
  • Bug 修复:在非德语或英语环境中无法更新布尔字段。
3.01 07.05.2003
  • Bugfix
    !!! 语法错误 ute_class.inc 第 1010 行 (v2.10) !!!
    !!! 语法错误 ute_class_filter.inc 第 127 行 (v3.00) !!!
    由于 SourceForge 的 CVS 系统处理不当,我得到一个 UNIX 格式和一个 MAC 格式的 INC 文件。这些格式显然*不*受 NT4 PWS/IIS 支持。所有文件现在都是纯 MS-DOS 格式。
  • Bug 修复:调用 UTE 时带“pkey”参数时出错。
  • 主键检测方面的改进。
通用表格编辑器 - CodeProject - 代码之家
© . All rights reserved.