Fay
User
 Junior Boarder
| Posts: 17 |   | Karma: 0 |
|
Пара замечаний к 1.22
|
|
Posted: 2005/07/29 03:58 |
|
|
|
|
UpdateSQL.
Возьмём таблицу
create table QWE ( ID int not null identity(1, 1), NAME varchar(32) collate SQL_Latin1_General_cp1251_CI_AS not null, constraint PK_QWE primary key clustered (ID), constraint UNQ_QWE_NAME unique (NAME) )
и ADQuery c с запросом select ID, NAME from QWE .
UpdateSQL генерит что-либо только в том случае, если он указан у кого-нибудь как UpdateObject. В противном случае, он даже отказывается сохранять любые изменения (desing-time). Это странно.
Мне не удалось обнаружить зависимость кода FetchRow от выбранных Refreshing Fields.
В код для MSSQL дописываются (не надёжно) терминаторы ";". Это не смертельно, но странно.
Insert SQL к запросу создаётся такой:
insert into QWE(NAME) values (:NEW_NAME) select @@IDENTITY AS ID
При попытке вставить запись получаем (по крайней мере я получаю) "[AnyDAC][DatS]-4. No columns defined for
table.". В Insert SQL не хватает "set nocount on" в начале.
При повторных попытках добавит запись получим (уверен - все получат) "[AnyDAC][Phys][ODBC][Microsoft][ODBC
SQL Server Driver]Invalid cursor state". Эта же ошибка будет вылезать после любой неудачной вставки (нарушение констрэйнта и т.д.).
Если переписать Insert SQL на
set nocount on insert into QWE(NAME) values (:NEW_NAME) select @@IDENTITY AS ID
, то вставка будет происходить, но значения поля ID останутся "секретными" 8).
После нажатия на "Get DBMS Info" UpdateSQL предлагает оба поля (ID, NAME) в Updating Fields. Это странно - поле ID "автоинкрементное".
Другое.
Не удалось открыть в ADQuery запрос
set dateformat dmy select ID, NAME from QWE
и другие не запросы, содержащие больше одной команды.
|
|