问题标签 [system.data.datatable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1326 浏览

vb.net - 在 System.Data.DataTable 中显示货币

我正在处理一些旧的 VB 代码,它创建System.Data.DataTable并定义了一些列。它工作正常,除了我需要某个列显示为货币,而不仅仅是浮点数。我该怎么做?

将行更改为:

没有区别,我的意思是显示 1234567.89,而不是 1,234,567.89

0 投票
1 回答
987 浏览

c# - 尝试将身份数据列从 XML 添加到数据表时出现错误“无法添加嵌套关系”?

尝试将数据列添加到数据表时出现以下错误:无法将嵌套关系或元素列添加到包含 SimpleContent 列的表中。当我第一次点击此代码时会发生这种情况mt.Columns.Add("IdentityId", typeof(int));

奇怪的是,当我在上一个错误之后在调试器中查看数据表时,该列就在那里。当我点击继续时,错误是:名为“IdentityId”的列已属于此 DataTable。似乎它添加了它,然后生成错误。

这是代码:

我知道这与数据表来自 XML 的事实有关,而且我发现的少数解决方案更多地处理 xml 而不是数据表。XML 无法更改。

0 投票
1 回答
648 浏览

c# - 使用格式自定义从 Google.DataTable.Net.Wrapper 返回的表

我正在使用 Google Visualization API 制作自定义报告。它将有 6 个部分,每个部分的两侧都有表格,中间有一个图表。

由于格式略有不同,我花了很多时间为每个一次性案例定义类。

我决定尝试Google.DataTable.Net.Wrapper 3.1.0.0

我创建了一个返回数据集的存储过程,然后遍历控制器中的数据集并传递我需要的每个表。

数据看起来像这样

有时图表会有货币格式或其他显示格式,有时还有日期等。我不知道如何添加/修改单元格的“f”部分,它提供了一个字符串格式的显示。我的控制器代码如下所示

有一个更好的方法吗?

0 投票
0 回答
134 浏览

c# - C# windows 应用程序绑定一个gridview

在我的应用程序中,我有 2 个数据表。一个是 NameTable (Id,Name),另一个是 FriendsTable(NameId,Name)。FriendsTable 的 NameId 是 NameTable 的 Id。现在在我的应用程序中,我想在 gridview 中显示数据,如下所示: Gridview 应该显示 NameTable 行,即 Id 和 Name,并且还显示好友数。所以 gridview 必须包含 3 列,2 个显示 NameTable 列,第三个是计数。当我双击一行 datagridview 时,应用程序必须打开其他窗口,该窗口在表格中显示所有朋友。我被困在显示计数列的第一部分。请帮忙。提前致谢。

0 投票
0 回答
704 浏览

c# - 如何使用来自后期绑定库的数据从动态 linq 查询中检索结果到数据表中?

我正在开发一个自动生成报告的库。这些报告在高级情况下是未知的,但调用它们的方式是在 Oracle 数据库中配置的。每个报告都有自己的类;在每个类中,都有一个返回 DataTable 的数据库查询。

报告生成过程效果很好,但我需要为每个创建一个报告索引文件。该配置也在数据库中找到,格式如下:

REPORT_ID / QUERY / ELEMENT_NAME

由于每个报表的配置不同,我需要动态查询数据表的内容。那时我看到了来自ScottGu 的博客帮助动态 Linq 查询的信息,让我到达了我需要去的地方。我确实修改了一些代码以满足我的需要,但这就是我所拥有的:

在代码中,m_DataSource 在我的类中定义为一个 DataTable,它应该包含最终结果。

这是来自 Microsoft 的 System.Linq.Dynamic 类的摘录:

我的代码在这部分失败,并出现错误“指定的转换无效”,每当它尝试查找查询对象的元素时:

我需要一个解决方案,因为我知道:

  1. 我必须在 Framework 3.5 中工作(没有机会改变这一点)。
  2. 所有调用都是动态的,因为报表类是通过后期绑定调用的,而且我事先永远不知道要使用哪个聚合(配置从一个报表更改为下一个报表)。
  3. 我必须限制第三方库的数量。如果一切都可以在我的代码中完成而不受外部影响,那就更好了。
  4. 我无权访问数据库以使用聚合生成辅助查询,因为数据来自报告类。

我缺少什么来获取我的数据表所需的值?最初的示例是否有缺陷,以至于找不到可以枚举我需要的数据行的演员表?

0 投票
1 回答
110 浏览

c# - 是否可以在运行时在 DataTable 中定义列类型?

我想创建一个 DataTable 但在编译时我不知道列的类型。因此,我希望在运行时确定列类型。

我试过的:

首先,我从 Excel 中获取一些数据:

然后我尝试使用该类型来创建一个列。

我得到错误:

找不到类型或命名空间名称“tempCheck”(您是否缺少 using 指令或程序集引用?)

0 投票
0 回答
343 浏览

oracle - 将 Oracle SYSTEM.DATA.DATATABLE 结果作为参数传递给另一个 powershell 脚本时出错

我正在编写一个预期执行以下操作的脚本:

  1. 连接到 Oracle DB 并运行主查询以提取原始数据。- 已经作为单元测试工作
  2. 将原始数据导入 Microsoft access 数据库模板 (.mdb) - 像单元测试一样工作,但在与脚本 1 集成时遇到错误。
  3. 连接到 MS Access 数据,运行过滤(子)查询并将结果导出到单独的 Excel 选项卡中。- 已经作为单元测试工作

*直接在 Oracle 数据库上运行(子)查询是不可行的,因为在 Oracle 数据库(原始数据)上执行的查询大约需要 5 小时,因此原始数据首先导入到 Microsoft 访问进行处理,然后运行(子)查询。

我已经为每个项目创建了 Powershell 脚本和一个主脚本,它调用并提供每个项目的参数。它们已经过单元测试。

1 - 01.dbquery.ps1[Parameter: NONE; Returns: RAW DATA]

2 - 02.mdbimport.ps1[Parameter: RAW DATA(from 1),MDB FILE Return: NONE]

3 - 03.mdb 导出.ps1[Parameter: EXCEL FILE, MDB FILE; Return: NONE]

主脚本.ps1

但是,在集成脚本 1 和 2 时,我收到错误System.Management.Automation.ParameterBindingException: A positional parameter cannot be found that accepts argument 'System.Data.DataRow'. 请注意,脚本 1 从 Oracle DB 上的查询结果返回 System.Data.Datatable 值,我试图弄清楚为什么脚本 2 似乎不接受这个值. 我也尝试过System.data.datarow在参数声明中说明类型,但仍然无济于事,因为我收到了错误

以下是每个脚本的代码片段

主脚本.ps1

01dbquery.ps1

02mdbimport.ps1

03mdbexport.ps1

提前致谢!

0 投票
0 回答
690 浏览

c# - 如何在不导致所有行使用默认值的情况下处理单行上的 DataColumn 表达式异常?

我正在尝试使用 DataTable 使用 DataColumns 上的 Expression 属性对数据行执行计算。微软

我发现如果将表达式应用于行时出现异常,将使用默认值。这正是我想要的有问题的行。问题是每个后续行都将使用默认值而不是评估表达式。

在此示例中,从包含两列和 10 行的基表开始。第一列是自动递增的列,范围为 -5 到 5。第二列始终为 3。

我添加了第三列,其表达式将“3”列除以第一列。这将导致一行出现 div0 异常。

对于这一行,我希望它使用我提供的默认值。它确实如此,但也将默认值应用于剩余的 4 行。

输出:

如何添加处理,以便如果单个行有问题,它将使用默认值,同时继续对后续行使用表达式?

请注意,我不能简单地使用此处描述的 IIF来检查此类问题,因为所使用的表达式是动态的,并且作为自定义数据的一种方式由用户提供。

完整的代码来重现这个:

0 投票
1 回答
190 浏览

c# - DataTable.Rows.Add() 时间与 DataTable 大小成比例增长

用户注意到 DataGridView 中的记录开始出现在屏幕上的时间有所延迟。

所以我分析了日志,发现调用 DataTable.Rows.Add() 的时间和数据表中的记录数量之间存在很强的依赖关系。如果一开始不到 0.01 毫秒,当表中有大约 10000 条记录时增长到 1 毫秒,当 50000 条时增长到 5 毫秒。有两个线程:一个添加记录,另一个删除。DataTable 绑定到 DataGridView 意味着它会在每次 DataTable 行集合更改时自动更新 gridview。

我的理解是,在表中 100000 等记录的数量上,不应该有这样的延迟。我应该考虑为 DataGridView 实现 VirtualMode 吗?我注意到 VirtualMode 属性设置为 true,但未处理 CellValueNeeded 事件。

代码如下所示:

并删除:

0 投票
0 回答
50 浏览

c# - 提供正确输出的正确循环控制结构是什么?

我正在尝试准备一个调度算法,其中我使用了 3 个数据表来保存讲师详细信息面板详细信息和大厅可用性详细信息。我正在使用 for 循环来访问 DataTables。我发现 for 循环控制结构在这种情况下无法帮助我提供正确的输出

这是我用于创建表的 SQL 语句

在 c# 代码中,我正在创建 3 个 DataTable 并使用 for 循环将可用的讲座日期和时间与大厅可用的日期和时间相匹配,并将经过验证的记录插入到日程表中。面板表包含讲师的讲座 ID

这是我的算法。在这里我只考虑 date1 和 time1

这就是我应该有我的输出

比较后的日程表