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

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

как запихнуть данные в базу? :) [D7, 95/98]


umbra ©   (2008-04-18 12:43:00) 

ситуация следующая:
использую адо + аксесс
данные для показа и правки берутся из нескольких таблиц. Запрос имеет вид

SELECT description, Code, (val1+sum2) as sum1,val1,(sum3+val7+val8 + val9) as sum2,(val2+val3+val4+val5+val6) as sum3,val2,val3,val4,val5,val6,val7,val8,val9 FROM codes, S57
WHERE dtCounter = :dtIndex and codes.acccounter = :nmIndex and codes.ccounter=S57.ccounter
ORDER BY code


При изменении значения получаю ошибку EOleException с сообщением 'Insufficient key column information for updating or refreshing'. А сразу следом - EDatabseError с таким же сообщением.
Поискал в мсдн - не открываются страницы :)

Что это значит и как с этим бороться?


Anatoly Podgoretsky   (2008-04-18 14:24:00) [1]

> umbra  (18.04.2008 13:38:15)  [15]

Никакие поля суммы не мешают.
Делай ввод в форме и хоть по сотне таблиц раскидывай свои данные. Запрос должен начинаться с ключевого слова UPDATE, а вставка с ключевого слова INSERT


umbra   (2008-04-18 13:51:00) [2]


> сли, конечно, "заказчики" это не твой дружбан :))
>

заказчики - это отдел нашей конторы. не общаться с ними не получится :(


Kolan   (2008-04-18 13:47:00) [3]

> А почему так? где об этом можно почитать?

Может почитать [13] ?


Johnmen   (2008-04-18 13:43:00) [4]


> umbra ©   (18.04.08 13:38) [15]
> всячески отбивался от полей-сумм, но заказчики без них не могут :(

Что, прям так и говорят: "Чтобы в программе были поля-суммы!!!"?

ЗЫ
Настоятельно рекомендую почитать базовую литературу по программированию баз данных. И не с какими заказчиками не общаться, пока не научишься. Если, конечно, "заказчики" это не твой дружбан :))


umbra   (2008-04-18 13:38:00) [5]


> А грид то тут причем?
>

при том, что результат запроса выводится в грид :)


> Но все равно, как прикажешь делить сумму val1+sum2, поровную,
>   в пропорции 1 к 3

всячески отбивался от полей-сумм, но заказчики без них не могут :(


umbra   (2008-04-18 13:34:00) [6]


> Эксперимент критерий истины (c)


эксперимент показал, что добавление пк обеих таблиц помогает :)
Спасибо!

А почему так? где об этом можно почитать?


sniknik   (2008-04-18 13:29:00) [7]

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

указать обновление по ключу
Properties['Update Criteria'].Value:= adCriteriaKey;
и какую таблицу
Properties['Unique Table'].Value:= ...
причем, наверняка не будет работать если при обледенении запись "размножится".


Kolan   (2008-04-18 13:23:00) [8]

> их там нет потому, что в гриде они не нужны :)
> я просто профан в этом. они обязательно должны там быть?
> и ошибка именно из-за того, что их нет?

В запросе на выборку не обязательно. А вот как ты апдейтиш хз.
Но имхо лучьше вытащи и ключи (чтобы небыло их видно у TField есть сотв. свойство), они могут понадобится.


Anatoly Podgoretsky   (2008-04-18 13:22:00) [9]

Не понял, что же ты собираешься изменять в наборе при неодназначности с полями и отсутствием ключевых полей?
Но все равно, как прикажешь делить сумму val1+sum2, поровную,  в пропорции 1 к 3
Кроме того изменение делается с помощью UPDATE


Anatoly Podgoretsky   (2008-04-18 13:22:00) [10]


> их там нет потому, что в гриде они не нужны :)

А грид то тут причем?


Johnmen   (2008-04-18 13:19:00) [11]

Эксперимент критерий истины (c)


umbra   (2008-04-18 13:13:00) [12]


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

их там нет потому, что в гриде они не нужны :)
я просто профан в этом. они обязательно должны там быть? и ошибка именно из-за того, что их нет?


Johnmen   (2008-04-18 13:09:00) [13]

Почему ключевого поля нет в запросе среди отбираемых полей?


Johnmen   (2008-04-18 13:08:00) [14]

Почему ключевого поля нет в запросе?


umbra   (2008-04-18 13:08:00) [15]


> Почему их нет в запросе?
>

они есть в WHERE. или должны быть еще где-то?
в самом аксесе этот запрос ведет себя нормально, все редактируется без проблем


umbra   (2008-04-18 13:06:00) [16]

но acccounter- это ключ третьей таблицы, списка отчетов
а ccounter- пк таблицы codes


Johnmen   (2008-04-18 13:05:00) [17]

Почему их нет в запросе?


umbra   (2008-04-18 13:02:00) [18]

нет, первичные ключи там ccounterи acccounter


Palladin   (2008-04-18 12:46:00) [19]

Code это типа PK ?


Наверх

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