问题标签 [tadodataset]

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 投票
4 回答
2610 浏览

delphi - “bof 或 eof 为真或当前记录已被删除..” 包含删除操作的 applyupdates 错误

我在解决从 ClientDatset 到 TAdoDataset(绑定到访问表)的删除操作时遇到此错误。我正在使用德尔福 2010。

我在 TClientDataset 和 TAdoDataset 之间的 DatasetProvider :

此函数发生错误,由 TDataSetResolver.EndUpdate() 调用;

0 投票
4 回答
4730 浏览

delphi - 如何实现独立克隆的TADODataSet?

场景是这样的:

我们有一些 SQL 表。我们正在对该表执行 SQL 查询,并在 TADOQuery 对象中得到结果。

因此,在克隆 DataSet 后,我​​的 qryClone 应该保存独立的数据(至少我是这么认为的)。但是,对 qryOryginal 执行删除会导致对 qryClone 执行相同的操作。我不想要那个。

有任何想法吗?

我知道我可以将数据存储在其他地方,也许在 TClientDataSet 中,但我想先尝试上述解决方案。

在此先感谢您的时间。

0 投票
1 回答
745 浏览

sql-server - Delphi XE Unicode 处理 nchar(1) 字段

TADODataset在 Delphi XE 中使用 dbGo 从 SQL Server 2008 表中读取数据。所有字符串字段都是 nvarchar 或 nchar。

nvarchar 字段映射到TWideStringField没有问题。

问题出在一个nchar(1)字段上,这映射到一个TStringField罚款但不是一个TWideStringField- 当我将该字段配置为时,TWideStringField我收到错误:

字段的类型不匹配'foobar',期望:WideString实际:FixedChar

使用 a 的问题TStringField在于它是 UTF8,我们想让我们的应用程序完全兼容 unicode。

对此有何建议?

0 投票
3 回答
16594 浏览

delphi - ADO 组件 CommandTimeout

我在使用 TADOQuery、TADOCommand 或 TADODataSet 设置查询执行超时时遇到问题(我都试过了)。我有一个很小的应用程序,它连接到数据库并定期执行存储过程,结果返回数据集。我的目标是让这个应用程序始终在线,但我的问题是,当连接丢失时,刚刚执行的命令(通过上述组件之一)的超时时间默认为 30 秒。我一直在寻找解决方案,但没有任何效果。 您能否给我一个建议,如何将 CommandTimeout 例如设置为 5 秒或更好地说明如何修改 ADODB.pas 以尊重我自己的超时,好吗?

对此有很多“解决方案”,例如 set DataComponent.Connection.CommandTimeout := 1; 但实际上,没有任何效果。我正在使用 D2009、MSSQL2005 和数据组件的连接是在线程中动态创建的。

最后,我试过的是这个

非常感谢 :)

0 投票
1 回答
2617 浏览

delphi - ADODataset:如何在没有临时文件的情况下加载 XML(预先保存在 ADO 模式中的 DB 中)数据?

警告:完全重写。

设想:

我从 TCustomADODataset 后代的数据库中加载了一些数据。之后,我将此数据保存在 XML 临时文件中(使用 TCustomADODataset.SaveToFile),以允许将 XML 数据作为字符串获取并将其作为文本 blob 存储在数据库表中 - 这是一个导出表。

另一个程序(与存储 XML 的程序不同)将获取该数据,显示其中的元素,并允许用户选择要导入主数据库模式的元素。

问题:

上述方法的问题是需要临时文件以允许 TCustomADODataset 使用 LoadFromFile 方法。

还有其他方法可以将在数据库导出表中存储为文本的 XML 数据加载到不需要临时文件的 TCustomADODataset 中吗?

笔记:

  • 在这种情况下, TClientDataset 不是一个选项。
0 投票
2 回答
2675 浏览

sql - ADODataSet 从连接表中删除

我有一个 Delphi 应用程序,其中显示了从这样的查询中玩过的游戏列表:

当我单击 DBNavigator 中的删除按钮时,game_types 表中的连接记录也被删除。这是一个问题,因为许多其他游戏可能属于同一类型。

我需要怎么做才能只删除游戏而不删除游戏类型?

0 投票
1 回答
6584 浏览

delphi - 如何在运行时创建 TDataSet 查找字段?

我正在使用TADODataSet(D7)。
我不使用我的 DataSet 在设计模式下创建持久字段。

如果我双击dsItems并“添加所有文件”,然后单击“新文件”并定义我的查找字段,一切正常。结果dsItems应包含:ID, ItemName, UserIDCreate, LoginName_Lookup

如何避免在设计时执行所有这些操作,并在打开 DataSet 之后/或之前(?不确定)添加一个查找字段。

换句话说:我如何模拟“添加所有文件”然后“新建文件”以在运行时添加查找文件?


注意: 从 IDE 运行 John 的代码时出现异常。尝试打开 DataSet 时发生异常:EOleException with message 'An unknown error has occured'

function TCustomADODataSet.LocateRecord (ADODB.pas)排队if FieldCount = 1 then FLookupCursor.Find...

我接受答案,因为编译的程序正在运行。
如果有人可以在 IDE 中运行表单时验证是否收到异常,那就太好了。

0 投票
1 回答
537 浏览

delphi - 具有流式字段的重复 TADODataSet 组件?

我有一个与此非常相似的代码来复制TADODataSet组件及其事件。

所以,如果我有一个ADODataSet1我想创建一个新实例ADODataSet2作为前一个组件的完全相同的组件。

一切正常,但我仍然无法复制流字段ADODataSet1PollID, ADODataSet1Title, ADODataSet1Description):

我遇到的另一个问题是,如果ADODataSet1设置为Active=True,那么当我调用时ms.ReadComponent(Dest)Active流式传输之前 Connection会引发异常缺少连接或连接字符串”。False写后如何将 Active 设置为ms.WriteComponent(Source)?(一种解决方法是ADODataSet1.Active := False在复制之前进行设置)。

注意:我不想在数据集(TADODataSet.Clone)上克隆游标/记录集,所以请不要将其视为“重复问题”。

0 投票
1 回答
912 浏览

delphi - Delphi - ADODataSet 子集

我正在 Delphi 中构建一个表单,它有一个服务下拉列表和一个用于选择服务的附加组件网格。我得到的数据来自 API,我将服务的数据存储在 ADODataSet 中,如下所示:

我想让网格根据下拉列表中的选择填充插件数据(每个服务都有不同的插件列表)。如何存储 AddOn 信息以便它可以与服务信息相关联?我需要创建第二个 ADODataSet 还是有办法将其存储在与服务相同的 ADODataSet 中?

附加组件具有以下字段:

我正在使用 Delphi 2005 并且有 Indy for Delphi。

编辑

在挖掘数据集的字段编辑器时,我发现我可以创建一个“数据集”类型的字段。这能让我把两者联系在一起吗?如果是这样,有人可以解释这是如何完成的吗?

我尝试通过创建第二个数据集 (ADODataSetAddOns) 并将新数据集分配给第一个数据集 (ADODataSetServices.AddOns) 中的数据集字段来做到这一点,但收到错误消息“数据集没有匹配的 ADO 数据类型”,我假设是参考 AddOns 字段未找到数据集。

0 投票
1 回答
1600 浏览

delphi - 如何检测 SQL Server 数据库中发生的任何修改?

我有一个应用程序使用TADODataSetTADOConnection连接 SQL Server 数据库。

我想检测数据库中发生的任何修改。

修改 = 插入、更新、删除

我想知道哪个TADODataset或哪个表已被修改。

我这样做是因为我有一个可以在本地网络上运行的多用户应用程序。用户可以添加、删除或编辑表中的记录,因此我想刷新数据集以显示新的修改。

我也希望这个建立一个日志。

我不想用TTime一直看修改。
我不想使用触发器

我更喜欢来自 的消息TADOConnection

我正在使用带有 ADO 组件的 SQL Server 2005 和 Delphi 2007。

新修改:我在 SQL Server 2000 上需要它

问候。