正在将客户端数据集记录复制到数据库 table
Copying Clientdataset records to Database table
我想要实现的目标是 insert/copy 从 tClientDataSet 到数据库 table 的记录(数据库是 Sybase ASA)。
我还有一个表格,上面有一个 cxgrid,我可以从 CD 上看到记录,所以我知道里面有记录。
单击按钮后,我将执行以下操作:
with dmData.cds do
begin
Close;
Open;
First;
while not (EOF) do
begin
dmData.qry1.Open;
dmData.qry1.Insert;
dmData.qry1.FieldByName('field1').AsString := dmData.cds.FieldByName('field1').AsString;
dmData.qry1.FieldByName('field2').AsString := dmData.cds.FieldByName('field2').AsString;
dmData.qry1.FieldByName('field3').AsString := dmData.cds.FieldByName('field3').AsString;
dmData.qry1.Post;
Next;
end;
end;
完成后我没有收到任何错误,但是在查看数据库时 table 没有插入任何记录。
我不知道我做错了什么,任何帮助将不胜感激。
您似乎正在尝试完成 TClientDataSet
为您完成的工作。为了使所有这些正常工作,您需要三个组件:
- 能够与您的数据服务器通信的数据集实例,已配置为这样做
TDatasetProvider
的一个实例引用了以前的数据集,通过使用 Dataset
属性
TClientDataSet
的一个实例,通过使用 ProviderName
属性 引用以前的提供者
在 TClientDataset
(CDS) 中的所有记录更新后,您调用 ApplyUpdates(0)
将它们发送给提供商。当您调用此方法时,CDS 会使用必须保留的记录构建一个名为 Delta 的数据包,并将其发送给提供程序。
提供商不知道如何保存存在于 Delta 中的记录,因此它与您分配给它的数据集协同工作。对于Delta中的每条记录,都会对数据集执行相应的操作,因此数据服务器将开始接收命令。
最后,提供者通知 CDS 一切正常(这称为协调),最终返回插入操作期间生成的密钥。这些密钥将出现在 CDS 中。
之后,更改记录的状态将被清除,以便报告没有未决更改(您的代码没有做的重要事情)。
我建议您阅读更多有关 DataSnap 的内容以真正掌握它。 Delphi 帮助有足够的信息。
我想要实现的目标是 insert/copy 从 tClientDataSet 到数据库 table 的记录(数据库是 Sybase ASA)。
我还有一个表格,上面有一个 cxgrid,我可以从 CD 上看到记录,所以我知道里面有记录。
单击按钮后,我将执行以下操作:
with dmData.cds do
begin
Close;
Open;
First;
while not (EOF) do
begin
dmData.qry1.Open;
dmData.qry1.Insert;
dmData.qry1.FieldByName('field1').AsString := dmData.cds.FieldByName('field1').AsString;
dmData.qry1.FieldByName('field2').AsString := dmData.cds.FieldByName('field2').AsString;
dmData.qry1.FieldByName('field3').AsString := dmData.cds.FieldByName('field3').AsString;
dmData.qry1.Post;
Next;
end;
end;
完成后我没有收到任何错误,但是在查看数据库时 table 没有插入任何记录。
我不知道我做错了什么,任何帮助将不胜感激。
您似乎正在尝试完成 TClientDataSet
为您完成的工作。为了使所有这些正常工作,您需要三个组件:
- 能够与您的数据服务器通信的数据集实例,已配置为这样做
TDatasetProvider
的一个实例引用了以前的数据集,通过使用Dataset
属性TClientDataSet
的一个实例,通过使用ProviderName
属性 引用以前的提供者
在 TClientDataset
(CDS) 中的所有记录更新后,您调用 ApplyUpdates(0)
将它们发送给提供商。当您调用此方法时,CDS 会使用必须保留的记录构建一个名为 Delta 的数据包,并将其发送给提供程序。
提供商不知道如何保存存在于 Delta 中的记录,因此它与您分配给它的数据集协同工作。对于Delta中的每条记录,都会对数据集执行相应的操作,因此数据服务器将开始接收命令。
最后,提供者通知 CDS 一切正常(这称为协调),最终返回插入操作期间生成的密钥。这些密钥将出现在 CDS 中。
之后,更改记录的状态将被清除,以便报告没有未决更改(您的代码没有做的重要事情)。
我建议您阅读更多有关 DataSnap 的内容以真正掌握它。 Delphi 帮助有足够的信息。