Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Сокровищница
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  00:38[Войти] | [Зарегистрироваться]

Компонент TADOUpdateSQL

Алексей Горкуша
дата публикации 14-05-2002 14:56

Компонент TADOUpdateSQL

Здесь представлены работающие компоненты обновления данных, полученных запросом через TADOQuery, аналогичные компонентам BDE TQuery,TUpdateSQL

Компоненты TADOUpdateQuery, TADOUpdateSQL выполняют в точности те же функции что и компоненты BDE TQuery,TUpdateSQL.
Это может способствовать быстрому переводу программ с BDE на ADO. Компоненты работающие (в исходных текстах есть комментарии), но до полной совместимости необходимы доработки, например: отсутствуют события onUpdateRecord, onUpdateError.
Предлагаю всем подключится и довести дело до конца.

type
  TADOUpdateQuery = class;
  TADOUpdateSQL = class;
 
   // Для правильной работы (логика) нежелательно изменять запрашиваемые поля
  TADOUpdateQuery = class (TADOQuery) 
  private
    DelRecords: TADOQuery;
    FUpdateObject: TADOUpdateSQL;
    procedure SetUpdateObject(Value: TADOUpdateSQL);
    procedure ClearBuffer;  // физическое удаление записей из буфера удаленных
    procedure InitBuffer;   // создание датасета в которые помещаюися удаленные записи
    procedure FillBuffer;   // перенос записи в буфер удаленных
    procedure ApplyDelUpdates;
  protected
    procedure InternalDelete; override;
  public
    constructor Create (AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ApplyUpdates;  // после успешного выполнения буфер удаленных записей будет пуст и необходим CommitUpdates
                             // так как статусы "тронутых" записей не изменены 
							 //(пример вставка записи: будет столько сколько раз
                             // был вызван ApplyUpdates. Неправильно это :-(, кто об этом знает
    procedure CancelUpdates; // сброс внутренних флагов ADO (вставленных, измененных) и сброс удаленных
    procedure CommitUpdates; // сброс внутренних флагов ADO (вставленных, измененных)
  published
    property UpdateObject: TADOUpdateSQL read FUpdateObject write SetUpdateObject;
  end;


  TADOUpdateSQL = class(TComponent)
  private
    FDataSet: TADOUpdateQuery;
    FQueries: array[TUpdateKind] of TADOQuery;
    FSQLText: array[TUpdateKind] of TStrings;
    function GetQuery(UpdateKind: TUpdateKind): TADOQuery;
    function GetSQLIndex(Index: Integer): TStrings;
    procedure SetSQL(UpdateKind: TUpdateKind; Value: TStrings);
    procedure SetSQLIndex(Index: Integer; Value: TStrings);
  protected
    function GetSQL(UpdateKind: TUpdateKind): TStrings; virtual;
    function GetDataSet: TADOUpdateQuery; virtual;
    procedure SetDataSet(ADataSet: TADOUpdateQuery); virtual;
    procedure SQLChanged(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Apply(UpdateKind: TUpdateKind);  virtual; // не изменяет статусов записей
	// при прямом вызове сначала SetParams, не изменяет статусов записей
    procedure ExecSQL(UpdateKind: TUpdateKind);         
    procedure SetParams(UpdateKind: TUpdateKind);       // заполнение параметров
    property DataSet: TADOUpdateQuery read GetDataSet write SetDataSet;
    property Query[UpdateKind: TUpdateKind]: TADOQuery read GetQuery;
    property SQL[UpdateKind: TUpdateKind]: TStrings read GetSQL write SetSQL;
  published
    property ModifySQL: TStrings index 0 read GetSQLIndex write SetSQLIndex;
    property InsertSQL: TStrings index 1 read GetSQLIndex write SetSQLIndex;
    property DeleteSQL: TStrings index 2 read GetSQLIndex write SetSQLIndex;
  end;
Скачать ADOComponent.zip (5.7 K)




Смотрите также материалы по темам:
[TADOQuery] [TUpdateSQL] [ADO] [Модификация данных на клиенте, UpdateSQL]

 Обсуждение материала [ 19-10-2006 14:28 ] 18 сообщений
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования