У меня очень похожий код на на , чтобы дублировать 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
streams до Connection
, и это вызывает Исключение" Отсутствует соединение или ConnectionString ". Как я могу установить Active на False
после того, как я напишу ms.WriteComponent(Source)
? (Обходной путь должен установить ADODataSet1.Active := False
перед его дублированием).
Примечание: я не хочу клонировать курсор / набор записей в наборе данных (TADODataSet.Clone), поэтому, пожалуйста, не рассматривайте его как "дублирующий вопрос".