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

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

Разнотипные поля в таблице = ОШИБКА [D7, IB6.x, Access]


BlackWhite ©   (2005-07-19 16:18:00) 

Здравствуйте!

 Очень удивила следующая проблема! На форуме такого вопроса не нашел. Причем, это же всеми используется, помогите мне.
Итак:
В таблице поля разных типов(строки, числа)
При вставке новой строки в DBGrid заполняю, только строковые поля, нажимаю применить, после чего пытаюсь редактировать числовые - получаю ошибку!!! После закрытия-открытия таблицы(перезапуске приложения) все работает отлично!

Подскажите, что это значит. Компоненты на форме
ADOConnection (или IBDataBase)
ADOTable (или IBTable)
DataSource
DBGrid

настройки по умолчанию, кроме связей.


sniknik   (2005-07-19 18:20:00) [1]

> а те кто не знаком с такими тонкостями, что делают?
по идее читают справку... ;о)) /инет/ets.

> И еще какой модуль надо подключать для типа данных  adCriteriaKey
ADOInt в принципе, но это такаяже экспортированная библиотека как и ADODBXP. (т.е. в принципе неважно, самому тоже можно сэкспортировать)


BlackWhite   (2005-07-19 18:10:00) [2]

to Johnmen
ну что сказать? Логика железная! Определенно кто-то из нас летит в Ленинград!

to sniknik
да будет запечатлен твой ник в веках!!!
ADODataSet1.Properties['Update Criteria'].Value:= adCriteriaKey; //обновлять только по ключу
вот это работает!!!! Только в таком варианте
ADOTable1.Properties['Update Criteria'].Value:= adCriteriaKey; //с подключенным модулем ADODBXP
Но ведь это же чушь, а те кто не знаком с такими тонкостями, что делают? Это свойтсво должно выставляться как  то явно!
И еще какой модуль надо подключать для типа данных  adCriteriaKey

Конечно, спасибо sniknik, спас приложение, но вопрос остался :)


sniknik   (2005-07-19 18:05:00) [3]

> Id: счетчик  - ключ!
счетчик - не обязательно ключ!

и похоже так оно и есть, для автоинкремента нужно сделать
ADODataSet1.Properties['Update Resync'].Value:= adResyncAutoIncrement;

но опять же, только для ADO.


Johnmen   (2005-07-19 17:58:00) [4]

Прошу заметить, что "ключ" <> "счетчик".


BlackWhite   (2005-07-19 17:49:00) [5]

да какие метаданные?!!!
просто ради эксперимента сделал таблицу из трех полей:
Id: счетчик  - ключ!
Name: Текстовый
Number: Числовой

Все! после вставки любого одного из полей(кроме ID), второе уже добавить после внесения данных невозможно, до следующего запуска приложения! Что это значит? Может еще какой то компонет следит или буфер какой-то надо сбрасывать. Вообще один выход делать все поля строковыми! Во Бред!!! Помогите.


sniknik   (2005-07-19 17:44:00) [6]

> Где нет ключевых полей?
кроме тебя про то никто не знает. твоя база, твой код, твоя реализация...

> Access не позволяет создавать таблицы без ключевых полей!
странный у тебя аксесс. мой позволяет.

...
и т.д. ;о))

а для самых серьезных случаев можно использовать
ADODataSet1.Properties['Update Criteria'].Value:= adCriteriaKey; //обновлять только по ключу
по умолчанию стоит adCriteriaAllCols (если не ошибаюсь)
но это только для ADO...


Johnmen   (2005-07-19 17:22:00) [7]

Метаданные таблиц с ключевыми полями можешь привести ?


BlackWhite   (2005-07-19 17:00:00) [8]

to sniknik

Хорошо, попробуем уточнить:
Где нет ключевых полей? Access не позволяет создавать таблицы без ключевых полей! Я хочу сказать что в таблицах самой БД ключевые поля заданы! Или надо еще в компонетах что-то задать? Чесно говоря, это будет для меня открытие. Очень хочется чтоб все решилось просто!


sniknik   (2005-07-19 16:47:00) [9]

> "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения"
а глюк то, в пользу телепатора... ;о)

если нет ключевого поля в таблице/запросе то команда на обновление данных формируется на основе первоначальных данных полей, а они у тебя изменились после первого post.


BlackWhite   (2005-07-19 16:39:00) [10]

to sniknik
телепортатор работает неправильно, потому что читальник глючит.
:)
написано же, что после Post данные вносятся. Можно их смотреть и редактировать строковые данные, можно редактировать другие записи причем в них числовые поля редактируются без ошибок, однако если попытаться отредактировать числовые поля в только что внесенной строке то получаю ошибку:

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


sniknik   (2005-07-19 16:23:00) [11]

> получаю ошибку!!!
попробуй выполнить рекомендации в ней...
если мой телепатор правильно телепатирует то рекомеддация там дается про ключь (добавить праймари кей).


Наверх

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