コンポーネントとそのイベントを複製するために、これと非常によく似たコードがあります。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 を設定するにはどうすればよいですか? (回避策は、複製する前に設定することです)。 ConnectionFalsems.WriteComponent(Source)ADODataSet1.Active := False
注:データセット (TADODataSet.Clone) でカーソル/レコードセットを複製したくないので、「重複した質問」と見なさないでください。