![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO, странное формирование запроса на апдейт. [MSSQL]
Danilka © (2005-05-04 13:41:00)Просто случайно заметил только-что, еще не разбирался толком как "лечить":
СУБД: MS-SQL.
Имеем таблицу:
create table t_test (
y1 int identity,
y2 varchar(10),
y3 varchar(10),
y4 int,
primary key (y1))
На форме - ADOConnection, ADODataset, DataSource и DBGrid.
В гриде изменяем у любой записи значение, например, поля y3, после поста в SQL Profiler видим, что выполняется такой запрос:
exec sp_executesql N'UPDATE "di".."t_test" SET "y3"=@P1 WHERE "y1"=@P2 AND "y3"=@P3', N'@P1 varchar(1),@P2 int,@P3 varchar(1)', '4', 1, '1'
То-есть, в секции WHERE перечислено кроме ключевого поля еще и изменяемое. Почему? Никогда раньше с редактированием в гриде не сталкивался.
Stanislav (2005-05-04 14:38:00) [1]Danilka © (04.05.05 14:00) [6]
А интересно если поставить серверный курсор, что покажет profiler?
Danilka (2005-05-04 14:00:00) [2]Конкретно, помогло вот-это:
ADODataSet1.Properties['Update Criteria'].Value := 0;
Danilka (2005-05-04 13:59:00) [3][2] Stanislav © (04.05.05 13:51)
Точно! Помогло, спасибо. :))
sniknik (2005-05-04 13:58:00) [4]упс. сорри не обратил внимания > primary key (y1))
sniknik (2005-05-04 13:57:00) [5]create table t_test (
y1 int identity(1, 1) PRIMARY KEY,
y2 varchar(10), ...
проверь так.
Stanislav (2005-05-04 13:51:00) [6]Может вам поможет эта ссылка
http://www.delphikingdom.com/asp/viewitem.asp?UrlItem=/helloworld/ado02.htm
Danilka (2005-05-04 13:46:00) [7]да, забыл написать, ADODataset.CommandText = 'select y1, y2, y3, y4 from t_test'
ну и все компоненты между собой связаны, конечно-же.
:)