问题标签 [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.
delphi - “bof 或 eof 为真或当前记录已被删除..” 包含删除操作的 applyupdates 错误
我在解决从 ClientDatset 到 TAdoDataset(绑定到访问表)的删除操作时遇到此错误。我正在使用德尔福 2010。
我在 TClientDataset 和 TAdoDataset 之间的 DatasetProvider :
此函数发生错误,由 TDataSetResolver.EndUpdate() 调用;
delphi - 如何实现独立克隆的TADODataSet?
场景是这样的:
我们有一些 SQL 表。我们正在对该表执行 SQL 查询,并在 TADOQuery 对象中得到结果。
因此,在克隆 DataSet 后,我的 qryClone 应该保存独立的数据(至少我是这么认为的)。但是,对 qryOryginal 执行删除会导致对 qryClone 执行相同的操作。我不想要那个。
有任何想法吗?
我知道我可以将数据存储在其他地方,也许在 TClientDataSet 中,但我想先尝试上述解决方案。
在此先感谢您的时间。
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。
对此有何建议?
delphi - ADO 组件 CommandTimeout
我在使用 TADOQuery、TADOCommand 或 TADODataSet 设置查询执行超时时遇到问题(我都试过了)。我有一个很小的应用程序,它连接到数据库并定期执行存储过程,结果返回数据集。我的目标是让这个应用程序始终在线,但我的问题是,当连接丢失时,刚刚执行的命令(通过上述组件之一)的超时时间默认为 30 秒。我一直在寻找解决方案,但没有任何效果。 您能否给我一个建议,如何将 CommandTimeout 例如设置为 5 秒或更好地说明如何修改 ADODB.pas 以尊重我自己的超时,好吗?
对此有很多“解决方案”,例如 set DataComponent.Connection.CommandTimeout := 1; 但实际上,没有任何效果。我正在使用 D2009、MSSQL2005 和数据组件的连接是在线程中动态创建的。
最后,我试过的是这个
非常感谢 :)
delphi - ADODataset:如何在没有临时文件的情况下加载 XML(预先保存在 ADO 模式中的 DB 中)数据?
警告:完全重写。
设想:
我从 TCustomADODataset 后代的数据库中加载了一些数据。之后,我将此数据保存在 XML 临时文件中(使用 TCustomADODataset.SaveToFile),以允许将 XML 数据作为字符串获取并将其作为文本 blob 存储在数据库表中 - 这是一个导出表。
另一个程序(与存储 XML 的程序不同)将获取该数据,显示其中的元素,并允许用户选择要导入主数据库模式的元素。
问题:
上述方法的问题是需要临时文件以允许 TCustomADODataset 使用 LoadFromFile 方法。
还有其他方法可以将在数据库导出表中存储为文本的 XML 数据加载到不需要临时文件的 TCustomADODataset 中吗?
笔记:
- 在这种情况下, TClientDataset 不是一个选项。
sql - ADODataSet 从连接表中删除
我有一个 Delphi 应用程序,其中显示了从这样的查询中玩过的游戏列表:
当我单击 DBNavigator 中的删除按钮时,game_types 表中的连接记录也被删除。这是一个问题,因为许多其他游戏可能属于同一类型。
我需要怎么做才能只删除游戏而不删除游戏类型?
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 中运行表单时验证是否收到异常,那就太好了。
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)上克隆游标/记录集,所以请不要将其视为“重复问题”。
delphi - Delphi - ADODataSet 子集
我正在 Delphi 中构建一个表单,它有一个服务下拉列表和一个用于选择服务的附加组件网格。我得到的数据来自 API,我将服务的数据存储在 ADODataSet 中,如下所示:
我想让网格根据下拉列表中的选择填充插件数据(每个服务都有不同的插件列表)。如何存储 AddOn 信息以便它可以与服务信息相关联?我需要创建第二个 ADODataSet 还是有办法将其存储在与服务相同的 ADODataSet 中?
附加组件具有以下字段:
我正在使用 Delphi 2005 并且有 Indy for Delphi。
编辑
在挖掘数据集的字段编辑器时,我发现我可以创建一个“数据集”类型的字段。这能让我把两者联系在一起吗?如果是这样,有人可以解释这是如何完成的吗?
我尝试通过创建第二个数据集 (ADODataSetAddOns) 并将新数据集分配给第一个数据集 (ADODataSetServices.AddOns) 中的数据集字段来做到这一点,但收到错误消息“数据集没有匹配的 ADO 数据类型”,我假设是参考 AddOns 字段未找到数据集。
delphi - 如何检测 SQL Server 数据库中发生的任何修改?
我有一个应用程序使用TADODataSet
并TADOConnection
连接 SQL Server 数据库。
我想检测数据库中发生的任何修改。
修改 = 插入、更新、删除
我想知道哪个TADODataset
或哪个表已被修改。
我这样做是因为我有一个可以在本地网络上运行的多用户应用程序。用户可以添加、删除或编辑表中的记录,因此我想刷新数据集以显示新的修改。
我也希望这个建立一个日志。
我不想用TTime
一直看修改。
我不想使用触发器
我更喜欢来自 的消息TADOConnection
。
我正在使用带有 ADO 组件的 SQL Server 2005 和 Delphi 2007。
新修改:我在 SQL Server 2000 上需要它
问候。