Форум: "Базы";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.056 c