Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

DBGrid,ADODataSet и таблица с полями по умолчанию   Найти похожие ветки 

 
Fishka   (2005-07-13 12:49) [0]

На форме - ADODataSet(запрос к таблице MSSQL),DBGrid, DataSource.
Ввожу записи, нажимаю Ctrl-Del - все нормально удаляется.
Изменяю структуру таблицы, к которой запрос, а именно определяю поля по Default (как мне и нужно).В DBGride эти поля не высвечиваются.
Ввожу записи, нажимаю Ctrl-Del - возникает ошибка (типа: не получается найти записи, запись была изменена после последнего чтения). Такие же проблемы и при попытке изменить запись.
Пробую вставлять Post при событиях ADODataSet - не помогает.
Как с этим бороться? Подскажите, пожалуйста.


 
ЮЮ ©   (2005-07-13 12:51) [1]

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


 
evvcom ©   (2005-07-13 12:52) [2]

не надо изменять структуру таблицы во время работы программы.


 
Fishka   (2005-07-13 12:58) [3]

ЮЮ ©   (13.07.05 12:51) [1]
В запросе есть ключевые поля. Правда их 4. А нужно одно типа Identity?
evvcom ©   (13.07.05 12:52) [2]
Я не изменяю структуры - это было написано для примера (имелось в виду, что программа не работает при наличии полей по Default).


 
evvcom ©   (2005-07-13 13:04) [4]


> Я не изменяю структуры

А как же тогда понять [0]:

> Изменяю структуру таблицы, к которой запрос

А? И из этого совсем не "имелось в виду, что программа не работает при наличии полей по Default". А не работает, потому что ошибка в программе. Скорее всего ... в 17-й строке. Да, да, точно, телепатор говорит, что именно в 17-ой!


 
Fishka   (2005-07-13 13:09) [5]

В данном случае телепатором оказался ЮЮ ©   (13.07.05 12:51) [1]
Завести ключевое поле
Вроде помогло, но надо еще проверить. СПАСИБО!
Хотя хотелось бы услышать обоснование. Что же 4 ключевых полей недостаточно?


 
sniknik ©   (2005-07-13 13:27) [6]

> Что же 4 ключевых полей недостаточно?
хоть 128-ми, ключь должен быть целым, и если он у тебя составной то все части должны присутствовать.

> Хотя хотелось бы услышать обоснование.
обоснование без исходных данных давать трудно... практически невозможно. и начинать судя по всему придется с азов. (есть сомнение в том, что то, что ты понимаеш под ключевыми полями sql сервером понимается совсем по другому...)


 
Anatoly Podgoretsky ©   (2005-07-13 13:33) [7]

Ключевых полей не бывает.


 
Fishka   (2005-07-13 13:47) [8]

sniknik ©   (13.07.05 13:27) [6]
все части должны присутствовать - все части составного ключа присутствуют.
Anatoly Podgoretsky ©   (13.07.05 13:33) [7]
В таблице есть составной первичный ключ, который гарантирует уникальность записей в таблице.
Почему его наличия недостаточно?


 
evvcom ©   (2005-07-13 13:50) [9]


> Правда их 4. А нужно одно типа Identity?

Мое имхо, лучше так и сделать. И поиск будет быстрее.


 
sniknik ©   (2005-07-13 13:52) [10]

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

(по тому что ты говориш, можно понять лиш одно - в какомто месте ты вреш. т.к. говориш что у тебя присутствуют взаимоисключающие вещи)


 
sniknik ©   (2005-07-13 13:55) [11]

Identity не ключь, автоинкремент. да их совмешают часто, но это не обязательно.


 
Fishka   (2005-07-13 14:05) [12]

Я ни в каком месте не вру.
Вот скрипт новой таблицы:
CREATE TABLE [expert_goods] (
[id_g] [int] IDENTITY (1, 1) NOT FOR REPLICATION  NOT NULL ,
[nomer] [tinyint] NULL ,
[id_wares] [int] NULL ,
[name_wares] [varchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[id_color] [smallint] NULL ,
[name_color] [varchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[size_wares] [smallint] NOT NULL CONSTRAINT [DF_expert_goods_size_wares] DEFAULT (0),
[wear] [char] (10) COLLATE Cyrillic_General_CI_AS NULL ,
[cost] [int] NULL CONSTRAINT [DF_expert_goods_cost] DEFAULT (0),
[count_wares] [smallint] NULL CONSTRAINT [DF_expert_goods_count_wares] DEFAULT (1),
[note] [varchar] (100) COLLATE Cyrillic_General_CI_AS NULL ,
[user_last] [varchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL CONSTRAINT [DF_expert_goods_user_last] DEFAULT (user_name()),
CONSTRAINT [PK_expert_goods] PRIMARY KEY  NONCLUSTERED
(
 [id_g]
)  ON [PRIMARY] ,
CONSTRAINT [IX_expert_goods] UNIQUE  NONCLUSTERED
(
 [name_wares],
 [name_color],
 [size_wares],
 [user_last]
)  ON [PRIMARY]
) ON [PRIMARY]
Все работает.

Вот старая структура. Удаление, обновление не работает.
CREATE TABLE [expert_goods] (
[nomer] [tinyint] NULL ,
[id_wares] [int] NULL ,
[name_wares] [varchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[id_color] [smallint] NULL ,
[name_color] [varchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[size_wares] [smallint] NOT NULL CONSTRAINT [DF_expert_goods_size_wares] DEFAULT (0),
[wear] [char] (10) COLLATE Cyrillic_General_CI_AS NULL ,
[cost] [int] NULL CONSTRAINT [DF_expert_goods_cost] DEFAULT (0),
[count_wares] [smallint] NULL CONSTRAINT [DF_expert_goods_count_wares] DEFAULT (1),
[note] [varchar] (100) COLLATE Cyrillic_General_CI_AS NULL ,
[user_last] [varchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL CONSTRAINT [DF_expert_goods_user_last] DEFAULT (user_name()),
CONSTRAINT [PK_expert_goods] PRIMARY KEY  CLUSTERED
(
 [name_wares],
 [name_color],
 [size_wares],
 [user_last]
)  ON [PRIMARY]
) ON [PRIMARY]
GO

Где взаимоисключающие вещи?


 
evvcom ©   (2005-07-13 14:08) [13]


> Удаление, обновление не работает.

А здесь и нет никакого удаления, обновления. Чему работать?


 
Fishka   (2005-07-13 14:11) [14]

Имеется в виду в программе - удаление, обновление. С одной структурой работает, с другой нет.


 
sniknik ©   (2005-07-13 14:12) [15]

> Вот скрипт новой таблицы:
и где же сдесь 2 ключа? в [5] сказано что помогло завести ключь (получается в дополнение к существующему, т.к. несказано о изменениях в существующем), а в коде видно что делается смена ключа.


 
sniknik ©   (2005-07-13 14:14) [16]

на словах, без кода, у тебя получалось 2 ключа чего быть не может.


 
evvcom ©   (2005-07-13 14:24) [17]


> Имеется в виду в программе - удаление, обновление

Да мало ли чего ты там в программе написал! Как можно судить о чем-то, не имея никакой информации.


 
sniknik ©   (2005-07-13 14:32) [18]

evvcom ©   (13.07.05 14:24) [17]
да не теперь то судить можно, имея хотябы структуру... ;о)
догадатся.

подозрение такое, что в варианте 4-мя полями в ключе, менялось само его значение, /часть... (по чему тогда связыватся?) а ключь/автоинкремент у него, даже захоти, возможности изменить нет... вот и работает. ;о))

но до этого да, слова, слова, ... без толку. без конкретной инфы.


 
Fishka   (2005-07-13 14:34) [19]

sniknik ©   (13.07.05 14:12) [15]
> завести ключь - получается в дополнение к существующему.
С чего это так получается? При дизайне таблицы в ЕМ при попытке завести ключ ранее отмеченные поля, входящие в ключ, становятся неключевыми.

И вообще, не надо придираться к словам. Вопрос был в том, почему (вроде бы) помогло в решении проблемы с удалением и редактированием  переопределение первичного составного ключа на ключ, основанный на поле с Identity, ведь составной первичный ключ тоже обеспечивал уникальность записи?


 
sniknik ©   (2005-07-13 14:42) [20]

хотя нет. неправильная догадка... проверил работает и изменениями значения ключа...
но, проверял в режиме "директтабле", а у него может режим отложенных изменений или с локальным/серверным курсором и черт его знает как оно себя там поведет.
в общем без инфы, больше, - никаких догадок!


 
Fishka   (2005-07-13 14:46) [21]

sniknik ©   (13.07.05 14:32) [18]
> подозрение такое, что в варианте 4-мя полями в ключе, менялось само его значение, /часть...
Менялось, а именно заполнялось по Default как минимум одно из полей. Мне кажется, это было понятно из текста вопроса.
Хотелось бы знать при каком событии ADODataset-a это происходило?


 
sniknik ©   (2005-07-13 14:49) [22]

> С чего это так получается?
1 - значится так. есть машина, у машины 4 колеса (типа исходные данные), прикрутик к машине колесо побольше, почему не едет? хотябы кособоко?
2 - зачем тебе 5 колес на машине?
1 -  ты чё, дурак, не можеш догадатся я ж открутил перед этим!
2 - зачем колеса разной величины?
1 - !!!! ну я же все поменял !!!
2 - аааа....
....
1 - ну, почему?
ответ - бензин кончился.

ничего не напоминает?


 
sniknik ©   (2005-07-13 14:51) [23]

> Хотелось бы знать при каком событии ADODataset-a это происходило?
> в общем без инфы, больше, - никаких догадок!


 
evvcom ©   (2005-07-13 14:54) [24]


> а именно заполнялось по Default как минимум одно из полей

По какому Default? Они разные бывают.

> sniknik ©   (13.07.05 14:32) [18]
> evvcom ©   (13.07.05 14:24) [17]
> да не теперь то судить можно, имея хотябы структуру... ;о)
> догадатся.


> хотя нет. неправильная догадка... проверил работает и изменениями
> значения ключа...

Вот и я к тому же. На клиенте можно такое навернуть, что даже самая "правильная" структура базы не спасет. Ошибку-то в конце концов клиент выдает, вроде как.


 
Fishka   (2005-07-13 14:58) [25]

Инфа - это текст программы? Если да, то текста нет.
Надо было описать установку связи между 3-мя указанными в тексте вопроса компонентами?

СПАСИБО всем. А самое большое спасибо ЮЮ (Колесов Юрий Юрьевич).



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.046 c
3-1121084038
Андрей Жук
2005-07-11 16:13
2005.08.21
Иерархический запрос в Oracle


14-1122828634
Profi
2005-07-31 20:50
2005.08.21
Что подарить девушке на годовщину?


1-1122616300
Shlomo
2005-07-29 09:51
2005.08.21
QuickReport, внедрить один отчёт в другой?


6-1115393572
Gluck99
2005-05-06 19:32
2005.08.21
Контроль и просмотр траффика


8-1112738740
Alex Romasnkiy
2005-04-06 02:05
2005.08.21
Как убрать тормоза при выводе битмапа?