Функция OpenAsClone вызывает ошибку в Delphi XE4

У меня есть 2 набора данных, например, в моем приложении Delphi XE4:

object dsDestination: TpFIBDataSet

    object Field1: TFIBStringField
      FieldName = 'MYSTRING'
      Size = 1
      Transliterate = False
    ene

    object Field2: TFIBIntegerField
      FieldName = 'MYINT'
    end

  end

object dsSource: TpFIBDataSet

    object dsSourceMYSTRING: TFIBStringField
      FieldName = 'MYSTRING'
      Size = 1
      Transliterate = False
    end

    object dsSourceMYINT: TFIBIntegerField
      FieldName = 'MYINT'
    end

  end

Когда я пытаюсь выполнить следующее утверждение:

dsSource.Open;
dsDestination.OpenAsClone(dsSource);

Я получаю следующую ошибку в последней строке

dsDestination: Field MYSTRING not found

Все отлично работает в Delphi 7. Мое приложение Delphi 7 использует Firebird 2.5.1, а Delphi XE4 использует 2.5.2. Я использую FIBPlus 7.5.


person Community    schedule 26.09.2013    source источник
comment
Что такое TpFIBDataSet? Я не вижу его ни в стандартных компонентах VCL, ни в документации, и не могу найти OpenAsClone в документах.   -  person Ken White    schedule 26.09.2013
comment
@KenWhite - я использую базу данных Firebird и FIBPlus вместо dbexpress. TpFIBDataSet похож на TSQLDataSet в dbexpress. Функция OpenAsClone определена в файле FIBDataSet.pas Firebird.   -  person    schedule 26.09.2013
comment
Затем вам следует отредактировать свой вопрос, указав, что вы используете FIBPlus, чтобы люди знали об этом при чтении. :-) (Это помогает проверить и посмотреть, есть ли для него тег; я добавил его к вашему вопросу для вас.)   -  person Ken White    schedule 26.09.2013


Ответы (1)


Я нашел причину ошибки:

Когда я увидел редактор полей набора данных dsDestination, он был заполнен полями dsSource. Я просто удалил все поля из редактора полей dsDestination, собрал и скомпилировал проект, и проблема была решена.

person Community    schedule 26.09.2013