![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 18.11.2007
Сообщений: 4
|
![]()
Доброго времени суток.
Дана БД в Access'е - "Управление информацией о продукте". Т.е. куча таблиц, в которых хранится инфа о прдукте, его классе, месте хранения и т.в.т. Кинул я компоненты на форму для доступа к БД, натравил их на мою базу, связал таблицы ч/з объектный инспектор, создал форму для редактирования и тут обнаружились следующие проблемы: 1.при редактировании существующей записи БД в списке компонента DBLookupComboBox1 отображается только 1 элемент (хотя в ListSource указана "ссылка" на таблицу со списком элементов); 2.при попытке добавить в эту таблицу (на которую натравлено свойство ListSource компонента DBLookupComboBox1) выдает следующее "Project Project1.exe raised exception class EDatabaseError with message 'Fild 'EdIzmId' cannot bemodifed". Таблица EdIzm с полями EdIzmId и EIEdIzm. В чем проблема не пойму... ![]() Т.К. таблиц куча информацию по продукту я получаю ч.з. ADOQuery. (Может существует какое-то ограничение, т.к к одной таблице сначала я обращаюсь ч/з запрос, потом по найденному id продукта произвожу редактирование - но уже ч/з ADOTable (с запросами не хотелось связываться из-за их ограничений в Delphi). |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 10.04.2007
Сообщений: 51
|
![]()
из ошибки следует что поле 'EdIzmId' не может быть изменено....
в остальном "....информацию по продукту я получаю ч.з. ADOQuery... потом по найденному id продукта произвожу редактирование - но уже ч/з ADOTable...." приведите фрагмент кода как вы это делаете. "(с запросами не хотелось связываться из-за их ограничений в Delphi)" а вот здесь я не соглашусь...тем более под Акцесс через АДО с ADOQuery с ограничениями не сталкивался..Другое дело БДЕ и таблицы дбф..здесь приходиться изварачиваться.
e-mail=konkurent@gala.net
isq=498425545 |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 18.11.2007
Сообщений: 4
|
![]() Цитата:
Код:
Код:
Прога простая, вот только видимо руки не те... ![]() Исходники с БД прикладываю в архиве 'DB.rar' (без exe'шника). для оформления кода используйте тег [CODE] кнопка # расширенный режим Последний раз редактировалось Alex21; 21.11.2007 в 17:44. |
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 22.06.2007
Сообщений: 414
|
![]()
Как по мне(суто моё мнение, как человека который работает с БД) у тя много лишних таблиц. Попробуй уменьшить их количество и посмотришь что проблема решиться сама собой. И в запросах я бы те посоветовал использовать left|rigth|inner join а не
Цитата:
Нет невыполнимых задач, всё дело времени...
|
|
![]() |
![]() |
![]() |
#5 | |
Регистрация: 18.11.2007
Сообщений: 4
|
![]() Цитата:
Что вы имели в виду вложенные запросы или что-то еще? |
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 22.06.2007
Сообщений: 414
|
![]()
Для соединения таблиц правильней использовать синтаксис
Я бы писал так (как пример): Код:
Цитата:
Нет невыполнимых задач, всё дело времени...
|
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 22.06.2007
Сообщений: 414
|
![]()
И ещё одно. Названия столбцам таблиц надо давать такие что бы было понятно всем. А то очень сложно понять и разодраться в структуре и дать правильный совет.
И желательно сделать так: 1. 1-на таблица главная, где будут храниться все "ид" параметров из вспомогательных таблиц. 2. Все остальные таблицы будут хранить параметры.
Нет невыполнимых задач, всё дело времени...
|
![]() |
![]() |
![]() |
#8 | ||
Регистрация: 18.11.2007
Сообщений: 4
|
![]() Цитата:
Буду благодарен если, если посоветуешь к.-либо не шибко мудреный учебник по SQL (единственное что я изучил, так это справочник по этому языку, который шел на CD с книжкой Библия программиста (Delphi) М. Е. Фленова). Насчет: 1. имена таблиц я писал по-русски на "транслите", единственная особенность в том, что ч=q, ш=x, щ=xq, ы=w (понимаю изврат, но мне нравится, система называется РИНТ-русский интернет); (EdIzm - единицы измерения, Marx - технологический маршрут, NomPoz - номенклатурная позиция и т.п.) 2. названия полям давал по следующему принципу "ключевое поле" как "название_таблицыId" (EdIzmId ЕдиницаИзмеренияId), а к названию последующих полей просто добавлял первую(е) букву(ы) имени таблицы (EINaimen поле наименование таблицы ЕдиницыИзмерения). Это все, чтобы при записи запросов не путаться с полями разных таблиц (таблица.поле). Хотя возможно я и неправ. 3.Главную таблицу и дополнительные я пытался составить именно по такому принципу (в главной все ключи, а свойства и т.п. в подчиненых => куча таблиц). Я благодарен за все советы. Но проблема все же остается. Прога простая, но дело в том, что программист я неочень. До этого я писал БД, но там работа осуществлялась ч.з. BDE и все с грехом пополам работало. В Access'е я думал проще, но в чем эти грабли - не пойму. Цитата:
|
||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 01.12.2006
Сообщений: 241
|
![]()
посмотри правиль но ли ты "натравил" DBLookupComboBox1 у меня все работает, с аксесовскими таблицами (как по мне) действительно легче работать
Програмисты - единственные люди, которым платят за исправления их же ошибок
![]() |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с модулями и дин.структурами данных | velgelmina | Помощь студентам | 1 | 16.05.2007 06:43 |
Кракозябры при редактировании таблиц | Balvenie | БД в Delphi | 1 | 23.04.2007 16:18 |