コンポーネントとそのイベントを複製するために、これと非常によく似たコードがあります。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
私が抱えているもう1つの問題は、 にADODataSet1
設定するActive=True
と、 を呼び出すとms.ReadComponent(Dest)
、前Active
にストリームが発生し、例外「Missing Connection or ConnectionString」が発生することです。書き込み後にActive を設定するにはどうすればよいですか? (回避策は、複製する前に設定することです)。 Connection
False
ms.WriteComponent(Source)
ADODataSet1.Active := False
注:データセット (TADODataSet.Clone) でカーソル/レコードセットを複製したくないので、「重複した質問」と見なさないでください。