![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как запихнуть данные в базу? :) [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 ?