Как и каждый год, я получаю новую версию Delphi как владелец SA, и вот что я делаю:
- Установите delphi версии XX.
- Запустите delphi версии XX
- Вставьте компонент TSQLConnection.
- Подключите его к Microsoft SQL Server 2000, который будет с нами еще как минимум шесть лет.
- Вставьте TSQLQuery с 'select top 1 * from myTable', который представляет собой таблицу с некоторыми полями денег.
- вставьте дополнительные компоненты TDatasetProvider, TClientdataset, TDatasource, TDBGrid и TButton.
- Свяжите все.
- Создайте обработчик событий в DatasetProvider.OnUpdateError с исключением Raise.
- Clientdataset1.applyupdates (0); в button1click.
- внести некоторые изменения в текущую запись.
- Нажмите кнопку button1 и получите то же исключение, что и в delphi 2005 и новее.
- Обновите мой драйвер corelab или devArt dbx для MsSQLServer.
Серьезно сейчас. Несколько лет назад я обнаружил, что TDatasetprovider генерирует очень простую ошибку: TFMTBCDField (представление денежного поля в Delphi) создает несовместимые команды sql вставки / обновления для SQL Server 2000 и предыдущих версий. Проблема проста: поставщик набора данных создает кавычки для полей денег, которые не принимаются для этих серверов sql.
Пример: таблица с полем varchar и полем денег. Вы можете использовать такое обновление:
ОБНОВИТЬ набор тестовых таблиц MYMONEYFIELD = '1', где MYVARCHARFIELD = 'A'
для предыдущих версий SQLServer вам необходимо использовать:
ОБНОВЛЕНИЕ набора тестовых таблиц MYMONEYFIELD = 1, где MYVARCHARFIELD = 'A'
У кого-нибудь есть способ решения этой проблемы?