Редактиране на набор от данни

Зачо ( 2003-07-02 08:48 ) [1]

Използвайте TIBUpdateSQL заедно с TIBQuery. Още по-добре, изобщо не използвайте TIBQuery и TIBTable. Има TIBDataSet - това е, което трябва да го използвате.

N&N ( 2003-07-02 08:51 ) [2]

>ЗачоРазбрано, благодаря много!

Digitman ( 2003-07-02 09:27 ) [3]

Тъй като IB сървърът е SQL сървър, достъпът до обектите на базата данни, управлявани от сървъра от страна на клиентското приложение, се осъществява чрез изпращане на SQL изрази към сървъра, съдържащи структурирани заявки за избор, вмъкване, модифициране и изтриване на записи.

Клауза SELECT - заявка за избор на записи Клауза INSERT - заявка за вмъкване на записи Клауза UPDATE - заявка за промяна на записи Клауза DELETE - заявка за изтриване на записи

Обектът TIBTable, при достъп до който и да е от неговите методи Open, Insert+Post, Edit+Post, Delete, динамично (скрито от вас) изгражда съответните SQL изрази за заявка към сървъра SELECT, INSERT, UPDATE, DELETE. Освен това, ако ReadOnly = True, тогава клаузите INSERT, UPDATE, DELETE не се изграждат и съответните заявки не се изпращат до сървъра, т.е. наборът от записи, върнат от Open (SELECT), не може да се актуализира/променя. Използването на обект TIBTable е нежелателно в някои случаи точно поради динамичното изграждане/подготвяне на заявки, когато се извикват методи, които изискват актуализиране/промяна на набора от записи, върнат от Open.

TIBQuery обект може да съхранява само един SQL оператор в даден момент, като например SELECT. Следователно, без промяна на текста на SQL оператора и без промяна на метода за достъп до обекта TIBQuery, наборът от записи скойто ще работи, няма да се актуализира.

Обектът TIBUpdateSQL е специално проектиран да съхранява заявки за актуализиране на записи (INSERT, UPDATE, DELETE).

Обектът TIBDataSet ви позволява да съхранявате произволна комбинация от изброените по-горе заявки. В същото време, ако не посочите текстовете на SQL заявките за вмъкване/модифициране/изтриване, наборът от записи, върнат от Open (разбира се, заявката Select трябва да бъде посочена), няма да се актуализира, точно както в ситуацията с IBTable.ReadOnly = True.

Тъй като заявките, изпратени от обектите TIBQuery, TIBUpdateSQL и TIBDataSet, се подготвят еднократно и автоматично по подразбиране (за последващо многократно изпълнение чрез Open и ExecSQL), използването на тези обекти е за предпочитане в много случаи, тъй като многократната повторна подготовка на заявки (както в случая с TIBTable) може значително да намали производителността на основното приложение и да заеме допълнителни системни ресурси.

N&N ( 2003-07-02 10:22 ) [4]

>DigitmanМного ви благодаря за подробното обяснение