FieldDatabase

FieldDatabase class

实现 DATABASE 字段。

public class FieldDatabase : Field

构造函数

姓名 描述
FieldDatabase() 默认构造函数。

特性

姓名 描述
Connection { get; set; } 获取或设置与数据的连接。
DisplayResult { get; } 获取表示显示字段结果的文本。
End { get; } 获取代表字段end的节点。
FileName { get; set; } 获取或设置数据库的完整路径和文件名
FirstRecord { get; set; } 获取或设置要插入的第一条数据记录的整数记录号。
Format { get; } 得到一个FieldFormat提供对字段格式的类型化访问的对象。
FormatAttributes { get; set; } 获取或设置格式的哪些属性将应用于表格。
InsertHeadings { get; set; } 获取或设置是否将数据库中的字段名称作为列标题插入 结果表中。
InsertOnceOnMailMerge { get; set; } 获取或设置是否在合并开始时插入数据。
IsDirty { get; set; } 获取或设置字段的当前结果是否由于对文档的其他修改而不再正确(陈旧)。
IsLocked { get; set; } 获取或设置字段是否被锁定(不应重新计算其结果)。
LastRecord { get; set; } 获取或设置要插入的最后一条数据记录的整数记录号。
LocaleId { get; set; } 获取或设置字段的LCID。
Query { get; set; } 获取或设置一组查询数据库的 SQL 指令。
Result { get; set; } 获取或设置字段分隔符和字段结尾之间的文本。
Separator { get; } 获取表示字段分隔符的节点。可以为空。
Start { get; } 获取表示字段开始的节点。
TableFormat { get; set; } 获取或设置要应用于数据库查询结果的格式。
virtual Type { get; } 获取 Microsoft Word 字段类型。

方法

姓名 描述
GetFieldCode() 返回字段开始和字段分隔符之间的文本(或字段结束,如果没有分隔符)。 包括子字段的字段代码和字段结果。
GetFieldCode(bool) 返回字段开始和字段分隔符之间的文本(如果没有分隔符,则返回字段结束)。
Remove() 从文档中删除字段。在字段之后返回一个节点。如果字段的结尾是其父节点的最后一个 child ,则返回其父段落。如果该字段已被删除,则返回 无效的.
Unlink() 执行字段取消链接。
Update() 执行字段更新。如果该字段已被更新,则抛出。
Update(bool) 执行字段更新。如果该字段已被更新,则抛出。

评论

将数据库查询的结果插入到 WordprocessingML 表中。

例子

演示如何从数据库中提取数据并将其作为字段插入到文档中。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 此 DATABASE 字段将对数据库运行查询,并将结果显示在表中。
FieldDatabase field = (FieldDatabase)builder.InsertField(FieldType.FieldDatabase, true);
field.FileName = MyDir + @"Database\Northwind.mdb";
field.Connection = "DSN=MS Access Databases";
field.Query = "SELECT * FROM [Products]";

Assert.AreEqual($" DATABASE  \\d \"{DatabaseDir.Replace("\\", "\\\\") + "Northwind.mdb"}\" \\c \"DSN=MS Access Databases\" \\s \"SELECT * FROM [Products]\"", 
    field.GetFieldCode());

// 插入另一个具有更复杂查询的 DATABASE 字段,该查询按总销售额降序排列所有产品。
field = (FieldDatabase)builder.InsertField(FieldType.FieldDatabase, true);
field.FileName = MyDir + @"Database\Northwind.mdb";
field.Connection = "DSN=MS Access Databases";
field.Query =
    "SELECT [Products].ProductName, FORMAT(SUM([Order Details].UnitPrice * (1 - [Order Details].Discount) * [Order Details].Quantity), 'Currency') AS GrossSales " +
    "FROM([Products] " +
    "LEFT JOIN[Order Details] ON[Products].[ProductID] = [Order Details].[ProductID]) " +
    "GROUP BY[Products].ProductName " +
    "ORDER BY SUM([Order Details].UnitPrice* (1 - [Order Details].Discount) * [Order Details].Quantity) DESC";

// 这些属性与 LIMIT 和 TOP 子句具有相同的功能。
// 将它们配置为仅显示字段表中查询结果的第 1 到第 10 行。
field.FirstRecord = "1";
field.LastRecord = "10";

// 此属性是我们要用于表格的格式的索引。表格格式列表位于“表格自动套用格式...”菜单中
// 当我们在 Microsoft Word 中创建一个 DATABASE 字段时会显示。索引 #10 对应于“彩色 3”格式。
field.TableFormat = "10";

// FormatAttribute 属性是存储多个标志的整数的字符串表示形式。
// 我们可以通过在该属性中设置不同的标志来应用 TableFormat 属性指向的格式。
// 我们使用的数字是表格样式不同方面对应的值组合的总和。
// 63 代表 1(边框)+ 2(阴影)+ 4(字体)+ 8(颜色)+ 16(自动调整)+ 32(标题行)。
field.FormatAttributes = "63";
field.InsertHeadings = true;
field.InsertOnceOnMailMerge = true;

doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.DATABASE.docx");

也可以看看