Вопрос

Я планирую перенести приложение Delphi 6 BDE на Delphi 2010...

  • Прежде всего, должен ли я отойти от BDE?(Я буду, но я предпочитаю делать это поэтапно, если это возможно)

  • Во-вторых, является ли dbExpress лучшим выбором?(Я использую MS SQL)

  • Наконец, существует ли эквивалент TUpdateSQL в dbExpress?(или что-нибудь еще)

У меня есть много кодов, обновляющих запрос только для чтения из сетки (используя TUpdateSQL и ApplyUpdate).

Пожалуйста, помогите ~~~

Большое спасибо.

Это было полезно?

Решение

1) Вам определенно нужно перейти с BDE на dbExpress.BDE - это устаревший и не рекомендуемый ТЕХНОЛОГИЯ.

Вы можете прочитать эти статьи

2) dbExpress - лучшая альтернатива, чем BDE, для связи с sql server, однако я предпочитаю ADO, потому что он является родным для SQL Server.

3) Однако dbExpress не имеет компонента, подобного TUpdateSQL Лаксен иметь TDBXUpdateSQL, который является частью Расширение dbExpress Компоненты.

Вы также можете проверить Мгновенныйbdexpress (это библиотека компонентов, которая обеспечивает плавную миграцию старых приложений BDE на технологию dbExpress) из ЭТЕЯ

Пока.

Другие советы

В TDataSetProvider есть событие с именем BeforeUpdateRecord, которое в основном является более ручным способом выполнения TUpdateSQL

вы должны создать SQL самостоятельно, а затем обновить его.(через TADOQuery и т.д.)

как бы то ни было, он имеет те же основы старых и новых значений, которые где в TUpdateSQL

sry это c ++, я не знаю dehpli, но в основном это то же самое, я думаю

DeltaDS->FieldByName("id")->NewValue;

и

DeltaDS->FieldByName("id")->OldValue;

также вы должны установить

Applied = true;

чтобы он не пытался выполнить обновление после того, как вы сделали это вручную

вот несколько ссылок, которые должны помочь О записи перед обновлением

если вам нужна дополнительная информация, просто добавьте комментарий, и я вам перезвоню

Используя компонент SqlQuery dbExpress, можно писать "запросы", такие как

update <table>
set value = :v1
where something = :v2

и затем вызывается метод 'execsql' для физического обновления таблицы.

Используя ClientDataSets и providers, вы можете использовать TDataSetProvider с общим обработчиком OnUpdateRecord (?, точное название сейчас не помню) и заставить его использовать sqls, которые вы использовали в TUpdateSQL.

Просто идея, на случай, если вы не можете использовать сторонние компоненты....

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top