Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1123093949
deamon_t
2005-08-03 22:32
2005.08.21
Как убрать фокус ввода с MessageBox


3-1121072892
kyro
2005-07-11 13:08
2005.08.21
Редактировани DBGrid !


1-1122969042
vigo
2005-08-02 11:50
2005.08.21
Работа с строкой


1-1122978908
КодеКорешь
2005-08-02 14:35
2005.08.21
Функция в dll


14-1122389458
Makhanev A.S.
2005-07-26 18:50
2005.08.21
Проблема с ЖК монитором





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский