我有一个非常类似于this的代码,可以复制 TADODataSet
组件及其事件。
因此,如果我有一个ADODataSet1
,我想创建一个新实例ADODataSet2
,作为前面组件的完全重复。
一切都正常工作,但我仍然无法复制流字段(ADODataSet1PollID
,ADODataSet1Title
,ADODataSet1Description
):
object ADODataSet1: TADODataSet
Connection = ADOConnection1
CursorType = ctStatic
AfterOpen = ADODataSet1AfterOpen
CommandText = 'select top 10 * from Polls'
Parameters = <>
Left = 224
Top = 40
object ADODataSet1PollID: TGuidField
FieldName = 'PollID'
FixedChar = True
Size = 38
end
object ADODataSet1Title: TWideStringField
FieldName = 'Title'
Size = 255
end
object ADODataSet1Description: TWideStringField
FieldName = 'Description'
Size = 4000
end
end
另一个问题是,如果
ADODataSet1
设置为Active=True
,那么当我调用ms.ReadComponent(Dest)
时,Active
流会在Connection
之前出现,从而引发异常"Missing Connection or ConnectionString"。我如何在写入ms.WriteComponent(Source)
之后将Active设置为False
?(一种解决方法是在复制之前将ADODataSet1.Active := False
设置为假)。注意:我不想在数据集上克隆游标/记录集(TADODataSet.Clone),因此请不要将其视为“重复的问题”。
Component.ComponentCount
始终为1(TADOCommand
)。重复的DataSet没有持久字段。 - ZigiZ