Re: Вычисляемое поле

DriveSoft wrote:

Готово.

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

Re: Вычисляемое поле

Petr wrote:
DriveSoft wrote:

Готово.

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

ааа... разобрался! всё работает! спасибо!:)
пример использования ид записи из свойств кнопки это черт возьми интересно!;)

Re: Вычисляемое поле

Всем здравствуйте!
Прошу помощи.
При добавлении вычисляемого поля в таблице Schet которое должно суммировать веса из дочерней таблицы Privoz
база начинает ругаться:(
и ещё...
нужен скрипт проверки: номер счета в Privoz может быть одинаковым только у записей с одинаковым названием компании.
п.с. может делаю через задницу... но это моя первая база)))

https://cloud.mail.ru/public/6Ejp/QmgZUDmKZ

Re: Вычисляемое поле

Пожалуйста, описывайте проблемы подробней.


1. Сообщите сообщение об ошибке, шаги которые приводят к этому и вычисляемое поле.


2. Описывайте подробней, в таблице Privoz я не вижу поле для номера счета.

Dmitry.

Re: Вычисляемое поле

DriveSoft wrote:

Пожалуйста, описывайте проблемы подробней.


1. Сообщите сообщение об ошибке, шаги которые приводят к этому и вычисляемое поле.


2. Описывайте подробней, в таблице Privoz я не вижу поле для номера счета.

1. Ошибка при переходе на форму frmSchet из формы Form1 (кнопка Счета на форме Form1).
2. да. не правильно выразился, в таблице Privoz у меня связь с таблицей Schet.

Re: Вычисляемое поле

1. Вы просто пропустили одну букву в названии таблицы вычисляемого поля "Schet.Vesa"
вместо

Shet.id

напишите

Schet.id

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

Dmitry.

Re: Вычисляемое поле

DriveSoft wrote:

1. Вы просто пропустили одну букву в названии таблицы вычисляемого поля "Schet.Vesa"
вместо

Shet.id

напишите

Schet.id

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

Согласен, растяпа я)
Со вторым вопросом сам пока поразбираюсь.
Спасибо!!!

33 (edited by agatlogic101 2018-12-10 10:50:14)

Re: Вычисляемое поле

DriveSoft wrote:

fkostya@mail.ru

Здравствуйте, здесь вы найдете все доступные функции, которые можно использовать в вычисляемом поле, но к сожалению возведение в степень в вычисляемом поле не доступно.

http://www.sqlite.org/lang_corefunc.html
http://www.sqlite.org/lang_aggfunc.html

Я так понимаю это всё для SQLite и в моей базе работало всё хорошо, но как только я её перевёл на mySQL server 8 естественно все калькуляторы слетели. Подскажите пожалуйста, где можно найти подобные коды для MySQL server

конкретно не работает этот скрипт

(
(SELECT TOTAL(sklad.amount) FROM sklad WHERE sklad.id_product=product.id) -
(SELECT TOTAL(order_details.amount) FROM order_details WHERE order_details.id_product=product.id )                                 
)   

Ругается на ТОТАЛ

Re: Вычисляемое поле

вот мой пример скрипта с использованием TOTAL

s:= SQLExecute('SELECT TOTAL(sumInPrice.inPrice) FROM sumInPrice LEFT OUTER JOIN servise ON servise.id=sumInPrice.id_servise WHERE servise.id='+ frmServiceCen.tgList.sqlValue);
     frmClientServiсeList.eDolg.Text:='Сумма долга:  '+ IntToStr(SQLExecute('SELECT TOTAL(listWorkOff.priceWorkOff * listWorkOff.klVoWorkOff)-"'+s+'" FROM listWorkOff LEFT OUTER JOIN servise ON servise.id=listWorkOff.id_servise WHERE servise.id='+ frmServiceCen.tgList.sqlValue));

может поможет

35 (edited by agatlogic101 2018-12-10 11:32:12)

Re: Вычисляемое поле

это для какой БД, sqlite или MySQL?
Не знаю важно это или нет, но опираясь на пример со складом, этот скрипт написан в вычисляемом поле

36 (edited by sibprogsistem 2018-12-10 11:49:18)

Re: Вычисляемое поле

agatlogic101 wrote:

это для какой БД, sqlite или MySQL?
Не знаю важно это или нет, но опираясь на пример со складом, этот скрипт написан в вычисляемом поле

это скрипт для SQLite хотя думаю разницы нет
по идеи SQLExecute это то же вычисляемое поле только в самом скрипте...

Re: Вычисляемое поле

Так в том то и дело что пока база была SQlite он работал, и если на неё вернуться работать будет. Но у MySQL толи другой принцип толи что то еще. И там он не работает...

38 (edited by sibprogsistem 2018-12-10 13:16:27)

Re: Вычисляемое поле

agatlogic101 wrote:

как только я её перевёл на mySQL server 8 естественно все калькуляторы слетели

а вы другую версию MySQL пробовали?

но думаю, что ошибка все таки тут

(
(SELECT TOTAL(sklad.amount) FROM sklad WHERE sklad.id_product=product.id) -
(SELECT TOTAL(order_details.amount) FROM order_details WHERE order_details.id_product=product.id )                                 
)   

где-то я встречал на форуме подобный код и там было что-то вроди этого

( SELECT
(SELECT TOTAL(sklad.amount) FROM sklad WHERE sklad.id_product=product.id) -
(SELECT TOTAL(order_details.amount) FROM order_details WHERE order_details.id_product=product.id )                                 
)   

39 (edited by agatlogic101 2018-12-10 13:36:34)

Re: Вычисляемое поле

нет, не чего не поменялось
https://d.radikal.ru/d15/1812/90/d021734a254c.jpg

mvd.TOTAL - mvd название базы на сервере

Re: Вычисляемое поле

agatlogic101 wrote:

нет, не чего не поменялось
https://d.radikal.ru/d15/1812/90/d021734a254c.jpg

mvd.TOTAL - mvd название базы на сервере

в место тотал попробуйте sum
SELECT SUM( `имя_поля_значения_которог_нужно_сложить` ) FROM `имя_таблицы`

Re: Вычисляемое поле

Пожалуйста, покажите весь sql запрос вычисляемого поля, текст ошибки и итоговый SQL запрос, который вызывает ошибку.

Dmitry.

Re: Вычисляемое поле

вот пример склада с форумного FAQ
http://myvisualdatabase.com/forum/misc. … download=1
(Простой склад 2)

Скачиваете его, запускаете его с базой SQLite и всё работает. Но как только вы выбираете ему базу MySQL то калькуляторы сразу выдают ошибку. На примере этого образца можете попробовать запустить его так что бы он работал с MySQL?

Re: Вычисляемое поле

https://c.radikal.ru/c17/1812/83/93d03fe1fc88.jpg
https://b.radikal.ru/b22/1812/9c/b79afcc983a3.jpg
https://a.radikal.ru/a35/1812/72/7dc8e6acd2f2.jpg

Когда открываю с базой MySQL данный простой склад2 Эти 3 окна. Потом после открывается форма но вторая и третья таблица пустые

Re: Вычисляемое поле

agatlogic101 wrote:

вот пример склада с форумного FAQ
http://myvisualdatabase.com/forum/misc. … download=1
(Простой склад 2)

Скачиваете его, запускаете его с базой SQLite и всё работает. Но как только вы выбираете ему базу MySQL то калькуляторы сразу выдают ошибку. На примере этого образца можете попробовать запустить его так что бы он работал с MySQL?

Поправил проект. Заменил в выч. полях TOTAL на SUM, также в одном выч. поле название таблицы было указано как [order], для MySQL необходимо записать как `order`, т.к. название таблицы совпадает с зарезирвированным ключевым словом SQL синтаксиса.

Post's attachments

Attachment icon Склад простой 2_MySQL.zip 9.64 kb, 320 downloads since 2018-12-10 

Dmitry.

Re: Вычисляемое поле

благодарю, всё работает

46 (edited by agatlogic101 2018-12-10 20:45:48)

Re: Вычисляемое поле

Извиняюсь еще раз. Скрипт работает, но после того как был заменён TOTAL на SUM, то он перестал показывать результат если есть товар в наличии, но еще не разу не было продажи.

(SELECT SUM(sklad.amount) FROM sklad WHERE sklad.id_product=product.id)
-
(SELECT SUM(order_details.amount) FROM order_details WHERE order_details.id_product=product.id ) 

sklad.amount (строка наличия товара) и order_details.amount (когда товар уходит)
Так вот, где допустим есть 10 товаров и 1 продажа, он показывает отлично наличие, а где есть товар, но продаж еще не было, то клетка пустая. Логически я предпологаю что где то нужно дописать что то типо >0 Так как именно с нулём где то проблемма, но не получилось правильно это сделать.

(опять же если вернуться на ТОТАЛ с таким же скриптом, то отображается нормально)

PS. Вариант с
(SELECT SUM(sklad.amount) FROM sklad WHERE sklad.id_product=product.id)
-
(SELECT SUM(order_details.amount) FROM order_details WHERE order_details.id_product=product.id AND order_details.amount > 0)
Не работает так же

Re: Вычисляемое поле

Сделайте выч поле product.calc_ostatok таким

(
(SELECT IFNULL(SUM(sklad.amount), 0) FROM sklad WHERE sklad.id_product=product.id) -
(SELECT IFNULL(SUM(order_details.amount), 0) FROM order_details WHERE order_details.id_product=product.id )
)  
Dmitry.