Эквивалентно TUpdateSQL в Delphi 2010 dbExpress?

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

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

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

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

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

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

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


person Snackmoore    schedule 28.10.2009    source источник


Ответы (4)


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

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

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

3) dbExpress не имеет компонента, аналогичного TUpdateSQL, однако Luxene имеет TDBXUpdateSQL, который является частью компонентов dbExpress eXtension.

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

Пока.

person RRUZ    schedule 28.10.2009

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

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

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

Извините, это C ++, я не знаю dehpli, но в основном то же самое, я думаю

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

и

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

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

Applied = true;

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

вот несколько ссылок, которые должны помочь person Jonathan D    schedule 06.01.2010


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

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

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

person No'am Newman    schedule 28.10.2009
comment
Он спрашивает о компоненте TUpdateSQL, который позволяет заменять SQL, сгенерированный компонентом BDE (TTable, TQuery), на SQL, написанный разработчиком. В основном он используется для разрешения обновлений запросов с объединениями. - person Fabricio Araujo; 28.10.2009
comment
И когда я говорю «обновления», читайте: вставлять, удалять и обновлять команды. - person Fabricio Araujo; 28.10.2009
comment
Невозможно вставить / удалить / обновить с помощью соединения. Только операторы select могут иметь соединение. - person No'am Newman; 29.10.2009
comment
Мы говорим о компонентах BDE, и да, они могут - если вы создадите SQL для вставки, обновления и удаления в объекте запроса и поместите его в TUpdateSQL. Когда компонент bde получает команду Post, он использует SQL в компоненте TUpdateSQL для записи данных в базу данных. - person Fabricio Araujo; 29.10.2009

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

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

person Fabricio Araujo    schedule 29.10.2009