Topic: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Добрый день. Совсем недавно познакомился с данной программой и остался доволен ее возможностями. Развивайте ее и дальше.)

Понадобилось создать базу данных для учета smd элементов на производстве. В общих чертах база будет содержать справочник по элементам(id номер, наименование), а также категории приход, расход, брак, потери и т.д. Реализовать простую арифметику собирался с помощью вычислительных полей, а не скриптов.

Применительно к проекту. На 1-ой форме расположены 2 таблицы(grid1 - справочник smd и grid2 - данные по приходам). в 1-ой таблице хочу создать вычислительное поле Приход, где будет собираться суммарная информация из таблицы 2. Приходов одного элемента могут быть десятки и 100-тни, поэтому каким-то образом объединить данные касательно каждого элемента и отправить в соответствующую таблицу(в данном случае в справочник). Структуру буду еще менять, но на первых порах хочу выяснить как это можно грамотно реализовать, чтобы использовать и дальше.

Проект высылаю на support@drive-software.com. Буду крайне признателен оперативному ответу.)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Файл проекта

Post's attachments

Attachment icon smd учет с приходом.7z 273.7 kb, 555 downloads since 2015-06-02 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Готово

Post's attachments

Attachment icon smd учет с приходом_fixed.zip 5.33 kb, 617 downloads since 2015-06-02 

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Замечательно! SQL запрос можно прямо в вычислительное поле вносить, а я только на кнопке пробовал. Большое вам спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Подскажите пожалуйста, с помощью компонента Checkbox возможно ли управлять элементом ComboBox, в частности менять параметр ParentComboBox?

Если это возможно, то как будет выглядеть скрипт такого действия?
Спасибо

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Не тестировал, но попробуйте так

procedure Form1_CheckBox1_OnClick (Sender: string);
begin
    if Form1.CheckBox1.Checked then
    begin
        Form1.ComboBox2.dbParentCombo:='CombBox1';
        Form1.CombBox1.DoOnChange; 
    end else
    begin
        Form1.ComboBox2.dbParentCombo:='CombBox3';
        Form1.CombBox3.DoOnChange; 
    end;
end;
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Спасибо, буду пробовать)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

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

procedure Form6_CheckBox1_OnClick (Sender: string);
begin
    if Form6.CheckBox1.Checked then
    begin
        Form6.ComboBox2.dbParentCombo:='ComboBox1';
        Form6.ComboBox1.DoOnChange;
    end else
    begin
        Form6.ComboBox2.dbParentCombo:='';
        Form6.ComboBox1.DoOnChange;
    end;
end;
Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

присвоить пустое значение можно так

Form6.ComboBox2.dbItemID := -1;
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

К сожалению не удалось пока что присвоить пустое значение. Оставлю эту задачку на будущее.

Дмитрий, подскажите пожалуйста, в TableGrid при редактировании записи в самом простом случае через дополнительную форму информация как правило отображается в форме для редактирования. Однако так получается не всегда. От чего это зависит в принципе?

Прилагаю скриншот для пояснения. Спасибо)

Post's attachments

Attachment icon Файл редактирования.PNG 25.07 kb, 377 downloads since 2015-06-08 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
Должно работать всегда, пожалуйста отправьте данный проект на support@drive-software.com
с описанием действий, которые необходимо выполнять для повторения ошибки.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Некоторые проблемы с почтой. Отправляю сюда.

Главная форма: 1.1) Словарь элементов, словарь изделий и узлов. Заполнить в них хотя бы по одному соответсвующему наименованию. В них редактирование будет работать должным образом.

Затем снова в главную форму / 3) Расход / 3.1) Серийные и опытные изделия. После создания нового запуска,вызывая форму редактирования значения останутся в комбобоксах слева, правые - без значений. Если после этого закрыть проект и открыть заново, то пустые значения будут везде.

Не думаю, что что-то с программой, вероятно я что-то не так связал в таблицах, поэтому такое явление. Как и прежде буду весьма признателен за помощь.)

Post's attachments

Attachment icon проект smd с уточненной структурой.7z 6.39 kb, 542 downloads since 2015-06-08 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Так и есть)) Забыл просто переназначить поля в соответсвии с новым название таблицы. Как сразу не догадался. Все в порядке.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Пытаюсь разобраться в нюансах написания sql-запросов, но они по-прежнему мне не даются(. (за исключением самых простых).

Необходима ваша помощь, Дмитрий. Есть 3 таблицы:
elementstoplats - применяемость элементов в определенном узле отдельного прибора;
zapusk - запуск определенного количества узлов данного прибора;
statistics - общая статистика по наличию/отсутствию любого элемента из базы.

В таблице применяемости описывается множество приборов, узлов, а также количество используемых элементов. Например: прибор 4307. В его состав входит 15 узлов(с уникальными именами). Каждый из узлов состоит из 20 разновидностей элементов. У каждого из них своя применяемость на печатной плате.

Предположим я хочу запустить 20 плат модуля клавиатуры для 4307. Я беру значение 20 из таблицы zapusk и умножаю на применяемость каждого элемента в данном узле. А затем данная информация должна попасть в таблицу общей статистики. Мой вариант запроса расположен в поле zapusk таблицы statistics. Однако он производит умножение лишь по первому элементу таблицы применяемости(необходимо по каждому) и повторяет его для всех элементов. Скорее всего не хватает определенных условий после WHERE.

Буду рад, если подправите и поясните мою ошибку. Спасибо)

Post's attachments

Attachment icon проект с уточненной структурой.7z 6.65 kb, 554 downloads since 2015-06-09 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

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

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Я понимаю.На первый взгляд специфика всюду разная и пытаться вникнуть в нее - это тратить время впустую. Может наглядней будет проще воспринять. Зеленым выделен столбец, который нужно получить в ходе запроса.

Post's attachments

Attachment icon 3 таблицы.PNG 23.12 kb, 390 downloads since 2015-06-10 

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

К сожалению не могу сообразить, не знаю какая таблица за что отвечает в вашем проекте.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Что ж жаль. Но все равно большое спасибо)надеюсь сам догадаюсь вскоре как это прописать.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Здравствуйте.
В моей таблице есть вычислительные поля, которые накапливают информацию из других таблиц. Однако мне также необходимо производить вычисления и со значениями в вычислительных полях. К примеру - сложить данные из двух таких полей. В то же время вычислительное поле не хранит, а только отображает информацию. Как можно обойти проблему? Надо как-то сохранять информацию из выч.полей в другие поля, и уже с последними выполнять действия?

Спасибо.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
Вам необходимо создать вычисляемое поле, в котором вы как бы повторите все необходимые выч. поля,


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

1.

(SELECT SUM(price) FROM tablename)

2.

(SELECT COUNT(quantity) FROM tablename)

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

((SELECT SUM(price) FROM tablename) * (SELECT COUNT(quantity) FROM tablename))
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Замечательно! Все заработало как надо. Спасибо большое, Дмитрий.)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Добрый день!
Пишу запрос на добавление в определенный столбец таблицы текстового значения.
1) (INSERT INTO zapusk (status) values ('Незавершено')) Программа указывает на ошибку синтаксиса около INSERT. подскажите пожалуйста как поправить запрос(в чем нюанс).
Следующим запросом я бы хотел обновить данные в этом столбце в зависимости от условия.
2) (UPDATE zapusk SET status = 'Завершено' WHERE raznost=0)
3) Возможно ли оба этих запроса объединить и записать в одно вычислительное поле? чтобы они действовали последовательно или лучше фразу 'Завершено' задать по умолчанию и оставить лишь один запрос на обновление?

Спасибо)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
Приветствую,


Вы пытаетесь писать данные запросы в вычисляемые поля?
если да, то это невозможно.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Я думал любой Sql-запрос можно вписать в вычисляемое поле. Выборка данных ведь пишется без проблем. Получается нужно как-то через скрипт прописывать.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

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

Dmitry.