Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2011, 15:38   #1
Deeller
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 16
По умолчанию вычисляемое поле, вставка рисунка

начал осваивать ADO в делфи столкнулся с такой проблемой:
есть БД в access в ней 2 таблицы:
1 код_материала, наименование, цена_за_единицу
2 код_материала, количество, стоимость.
вторая таблица не имеет своего ключевого поля, связь между таблицами по коду_материала. подключено через ADO. не получается вычислить значения поля стоимость. стоимость = 1.цена_за_единицу*2.количество.
подскажите возможно ли решить данную проблему на делфи?
и еще в одной из таблиц есть поле для рисунка (BLOB) подскажите как добавить в запись на которой стоит курсор рисунок из файла?
Deeller вне форума Ответить с цитированием
Старый 20.04.2011, 16:43   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Не задавайте два вопроса сразу...
Задайте в ADOQuery инструкции SQL, которые Вы скопируете из MS Access. Delphi с SQL ничего не делает (только в запросе с параметрами подменит параметр на какое-то конкретное значение), инструкции обрабатывает СУБД (у Вас MS Access, Вы это обнаружите когда используете какую-либо функцию MS Access в запросе). Если Вы не можете в MS Access сделать вычисления, так и скажите, Вам помогут, не усложняйте задачу пытаясь манипулировать данными средствами Delphi. Можно конечно использовать вычисляемые поля в ADOTable...
До свидания

Последний раз редактировалось OlegVE; 20.04.2011 в 16:54.
OlegVE вне форума Ответить с цитированием
Старый 20.04.2011, 17:25   #3
Deeller
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 16
По умолчанию

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

Последний раз редактировалось Deeller; 20.04.2011 в 17:42.
Deeller вне форума Ответить с цитированием
Старый 20.04.2011, 17:52   #4
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Код:
SELECT НазваниеТаблицы1.*, НазваниеТаблицы1.цена_за_единицу * НазваниеТаблицы2.количество As стоимость
FROM НазваниеТаблицы1 Inner Join НазваниеТаблицы2 ON НазваниеТаблицы1.код_материала = НазваниеТаблицы2.код_материала
Не нужно Вам поле стоимость. Вы всегда можете её получить с помощью одного и того-же запроса, как бы не изменялись данные в таблицах у Вас будет последняя стоимость.

Последний раз редактировалось OlegVE; 20.04.2011 в 18:08.
OlegVE вне форума Ответить с цитированием
Старый 20.04.2011, 18:01   #5
Deeller
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 16
По умолчанию

большое спасибо! а возможно результат запроса занести в ячейку таблицы?
Deeller вне форума Ответить с цитированием
Старый 20.04.2011, 18:08   #6
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
Сообщение от Deeller Посмотреть сообщение
а возможно результат запроса занести в ячейку таблицы?
С помощью INSERT INTO ... Но зачем?
Всё равно Вы будете добавлять данные в таблицу запросом, примерно похожим на тот, что я привёл. Только в начале будет INSERT INTO НазваниеТаблицы2 (стоимость)

Последний раз редактировалось OlegVE; 20.04.2011 в 18:10.
OlegVE вне форума Ответить с цитированием
Старый 20.04.2011, 18:46   #7
Deeller
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 16
По умолчанию

insert into если н ошибаюсь для вставки записи, а если необходимо только 1 поле изменить использовать update правильно?
Deeller вне форума Ответить с цитированием
Старый 20.04.2011, 18:49   #8
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
Сообщение от Deeller Посмотреть сообщение
insert into если н ошибаюсь для вставки записи, а если необходимо только 1 поле изменить использовать update правильно?
Что Вы называете записью, а что полем?
правильно, обновить (изменить)...
И каждый раз, когда Вы изменяете количество Вам надо обновлять (вставлять новое значение в поле, с поступлением товара) и вызывать запрос, чтобы получить результат, который Вы можете получить с помощью запроса.
Может Вы фанат таблиц?

Последний раз редактировалось OlegVE; 20.04.2011 в 18:56.
OlegVE вне форума Ответить с цитированием
Старый 20.04.2011, 19:04   #9
Deeller
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 16
По умолчанию

запись - 1 кортеж
поле - 1 атрибут
как то так=)
это не поступление товара это таблица расход, в ней материал который непосредственно выделяется на производство единицы продукции, он не будет добавляться, а необходимо это для того чтобы в таблице с изделием сохранить сохранить производственную стоимость(стоимость всех затраченных материалов).
если не затруднит подскажите запрос с update'ом, голова к концу дня отказывается соображать, на все мои варианты пишет "Ошибка синтаксиса инструкции апдейт"
Deeller вне форума Ответить с цитированием
Старый 20.04.2011, 19:20   #10
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Где-то так
Код:
UPDATE НазваниеТаблицы2  INNER JOIN НазваниеТаблицы1 ON НазваниеТаблицы2.код_материала  = НазваниеТаблицы1.код_материала  
SET НазваниеТаблицы2.стоимость = НазваниеТаблицы1.цена_за_единицу * НазваниеТаблицы2.количество;

Последний раз редактировалось Stilet; 25.04.2011 в 12:01.
OlegVE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисляемое поле BloodWizard SQL, базы данных 6 08.08.2010 12:12
Вычисляемое поле в таблице ACCESS, создать вычисляемое поля в таблице аксес artlayers Microsoft Office Access 2 04.11.2009 19:29
Вычисляемое поле goodwinrock БД в Delphi 5 30.01.2009 15:27