Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.18;
Скачать: CL | DM;

Вниз

как запихнуть данные в базу? :)   Найти похожие ветки 

 
umbra ©   (2008-04-18 12:43) [0]

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

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 с таким же сообщением.
Поискал в мсдн - не открываются страницы :)

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


 
Palladin ©   (2008-04-18 12:46) [1]

Code это типа PK ?


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

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


 
Johnmen ©   (2008-04-18 13:05) [3]

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


 
umbra ©   (2008-04-18 13:06) [4]

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


 
umbra ©   (2008-04-18 13:08) [5]


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

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


 
Johnmen ©   (2008-04-18 13:08) [6]

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


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

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


 
umbra ©   (2008-04-18 13:13) [8]


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

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


 
Johnmen ©   (2008-04-18 13:19) [9]

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


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

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


 
Anatoly Podgoretsky ©   (2008-04-18 13:22) [11]


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

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


 
Kolan ©   (2008-04-18 13:23) [12]

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

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


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

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

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


 
umbra ©   (2008-04-18 13:34) [14]


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


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

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


 
umbra ©   (2008-04-18 13:38) [15]


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

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


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

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


 
Johnmen ©   (2008-04-18 13:43) [16]


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

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

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


 
Kolan ©   (2008-04-18 13:47) [17]

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

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


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


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

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


 
Anatoly Podgoretsky ©   (2008-04-18 14:24) [19]

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

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



Страницы: 1 вся ветка

Текущий архив: 2008.05.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
15-1206900897
DVM
2008-03-30 22:14
2008.05.18
2 копии Win на одном компьютере и перевод времени.


2-1208780311
jorgunited
2008-04-21 16:18
2008.05.18
выборка во время транзакции


10-1146182283
cargo
2006-04-28 03:58
2008.05.18
Record в Type Library


2-1208838989
Виталий____
2008-04-22 08:36
2008.05.18
Прогресс в строке состояния


2-1208284170
smartleds
2008-04-15 22:29
2008.05.18
Подскажите как удалить массив TrackBar-ов