Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBGrid,ADODataSet и таблица с полями по умолчанию [D7, MSSQL]


Страницы:   1 2

Fishka ©   (2005-07-13 12:49:00) 

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


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

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

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


evvcom   (2005-07-13 14:54:00) [2]


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

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

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


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

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


sniknik   (2005-07-13 14:51:00) [3]

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


sniknik   (2005-07-13 14:49:00) [4]

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

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


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

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


sniknik   (2005-07-13 14:42:00) [6]

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


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

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

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


sniknik   (2005-07-13 14:32:00) [8]

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

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

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


evvcom   (2005-07-13 14:24:00) [9]


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

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


sniknik   (2005-07-13 14:14:00) [10]

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


sniknik   (2005-07-13 14:12:00) [11]

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


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

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


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


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

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


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

Я ни в каком месте не вру.
Вот скрипт новой таблицы:
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

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


sniknik   (2005-07-13 13:55:00) [15]

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


sniknik   (2005-07-13 13:52:00) [16]

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

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


evvcom   (2005-07-13 13:50:00) [17]


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

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


Fishka   (2005-07-13 13:47:00) [18]

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


Anatoly Podgoretsky   (2005-07-13 13:33:00) [19]

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


sniknik   (2005-07-13 13:27:00) [20]

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо