Эквивалентен TUpdateSQL в Delphi 2010 dbExpress? - PullRequest
4 голосов
/ 28 октября 2009

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

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

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 28 октября 2009

1) Вам определенно нужно перейти с BDE на DbExpress . BDE является устаревшей и устаревшей технологией.

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

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

3) dbExpress не имеет компонентов, подобных TUpdateSQL, однако Luxene имеет TDBXUpdateSQL, который входит в состав dbExpress eXtension .

Вы также можете проверить InstantBDExpress ( - это библиотека компонентов, которая обеспечивает плавный перенос старых приложений BDE на технологию dbExpress ) из ETHEA

Bye.

1 голос
/ 07 января 2010

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

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

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

извините, это c ++, я не знаю, дехпли, но в принципе то же самое, я думаю

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

и

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

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

Applied = true;

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

вот несколько ссылок, которые должны помочь О программе BeforeUpdateRecord

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

0 голосов
/ 29 октября 2009

Используя ClientDatasets и провайдеров, вы можете использовать TDatasetProvider с универсальным обработчиком OnUpdateRecord (? sqls вы использовали в TUpdateSQL.

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

0 голосов
/ 28 октября 2009

Используя компонент SQLQuery в dbExpress, можно писать «запросы», такие как

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

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

...