- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在测试:
我使用以下方法(借自Alister Christie)来获取数据...
function TForm1.GetCurrEmployee(const IEmployeeID: integer): OleVariant;
const
SQLSELEMP = 'SELECT E.* FROM EMPLOYEE E WHERE E.EMPLOYEEID = %s';
begin
MainDM.SQLDataset1.CommandText := Format(SQLSELEMP, [Edit1.Text]);
Result := MainDM.DataSetProvider1.Data;
end;
它只用一条记录填充 DBGrid。但是,当我手动编辑记录时,单击“发布”,然后尝试使用
提交更改MainDM.ClientDataset1.ApplyUpdates(0); // <<<<<<
它会爆炸,并显示消息“SQLDataset1:无法修改只读数据集。”
我已经检查了 Provider 和 ClientDataset 的 ReadOnly 属性,并且 SQL 没有连接。
什么可能导致错误?
最佳答案
您的 ClientDataSet.Data 属性似乎是从 DataSetProvider 的 Data 属性填充的。通过您描述的设置,您应该能够简单地调用 ClientDataSet.Open,它将从 DataSetProvider 获取数据。
顺便说一句,当您调用 ClientDataSet.ApplyUpdates 方法时,DataSetProvider 的默认行为是将 SQL 查询发送到连接对象,而不是从中获取数据的 DataSet(假设是同类查询)。确保您的 DataSetProvider.ResolveToDataSet 属性未设置为 true。
最后,在一个不相关的注释中,上面的代码似乎容易受到 SQL 注入(inject)攻击(尽管我还没有对此进行测试)。使用参数来定义 WHERE 子句更安全。如果有人在 Edit1 中输入以下内容,您可能会遇到麻烦(假设 InterBase 使用 drop table 语法): 1;drop table individual;
关于Delphi ClientDataset 只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653350/
我想知道在添加或编辑Interbase记录时,将ClientDataset与数据感知控件一起使用是否可行。 我的意图是最初使用SQLDataset打开单个记录,但我希望可以将该记录加载到Clientd
我目前正在测试: 指向 IB 数据库的 SQLConnection。 一个 SQLDataset,其 SQLConnection 字段设置为上述字段。 将 (2) 中的 SQLDataset 作为其数
我在 Delphi 7 中有一个应用程序,它使用 clientdataset,并对其进行多项操作。 ClientDataSet 链接到 Intraweb 网格。 我在 ClientDataSet 上进
我正在尝试编写一个从 TClientDataset 继承的组件。在设计时创建组件时,我想实例化一个在我的框架中使用的公共(public)字段列表。下面的代码将在没有错误的情况下执行,并且该字段将出现在
打开一个 TClientDataset,并获取包含 3 个 TBlobfields 的 10.000 行需要 3分钟 . 打开完全相同的数据,但将 BLOB 字段转换为 Varchar,需要 1 秒
我试图在计算的 bool 字段上对 ClientDataSet 进行排序,但由于某种原因,数据未排序。我有一个名为 Highlight 的 bool 字段,其中 FieldKind 设置为 fkInt
我有一个使用 ClientDataSets 和本地文件存储的应用程序。一些信息显示在数据库网格中,我发现它被切断了——显示了字符串的前 500 个字符左右,但底层字段需要更长。所以我回到我的代码并增加
我使用此代码在运行时创建一组字段 ClientDataSet1.FieldDefs.Add('ID', ftInteger, 0); ClientDataSet1.FieldDefs.Add(
当使用带有过滤器的 ClientDataSet 的 Filter 属性时 Name NOT LIKE 'Paulo%' 表示语法不正确。 如何在过滤器中找到解决方法? 最佳答案 将过滤器语法更改为
我想反转 TClientDataSet 中索引的顺序,下面的代码看起来应该可以解决问题,但什么也没做。有没有一种好方法来反转索引的顺序? procedure TForm8.Button1Click(S
我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段,用于计算其他几个浮点字段的总和。所有字段均已在设计时创建。 一切都按预期工作,直到 ClientDataset 的 I
我在使用 ClientDataSet.StatusFilter := [usDeleted] 时遇到一些困难。 它没有任何作用。我正在将我的 ClientDataSet 连接到 Provider。 应
我在应用程序中使用 TClientDataSet 来管理从多个 CSV 文件导入的数据负载。总共可以是一百万个或更多条目。我希望能够删除与特定 CSV 文件关联的所有数据集条目,但删除大量项目的时间非
我正在使用 Firebird 2.1、DevArt 和 Delphi 2010 的 DBExpress 驱动程序。我的一些用于 Delphi 2006 的报告停止工作并生成一条错误消息,指示“算术异常
我对 Delphi/ClientDataSets 了解不多,但我愿意研究一下。不过,在我追求它之前我有一个问题,以确定我想要实现的目标是否可行。 我想每周一次使用 PHP 脚本将我的 MYSQL 数据
我正在使用 MySQL 数据库自学 Delphi 数据库编程。我正在尝试从嵌套的 ClientDataSet 添加一条记录,其中包含主表和详细表之间的链接以及主表中的自动增量字段。我在以下位置找到了似
对于在设计时定义字段的 Delphi ClientDataSets,有没有办法在运行时更改特定字段的数据类型(更改 cds.Fields[n].DataType)? 我有一个遗留的 Delphi 7
在过去的几天中,我们看到在加载XML块时使用ClientDataSet在Delphi 2006上引发了随机访问冲突,但是在使用CodeGear 2007 rad Studio时错误消失了。 我有一种奇
编辑:似乎 DataSetProvider 没有该项目所需的功能,因此我将实现一个自定义类来将数据加载到 ClientDataSet 中。 我正在尝试从连接到我的数据库的 TMSQuery 获取数据,
我在处理 TClientDataSet 的一些代码时遇到了问题Delta,我将其归结为以下测试用例。 我有两个 ClientDataSets,cdsData 和 cdsDelta,两者都有一个 Dat
我是一名优秀的程序员,十分优秀!