Topic: Обьясните что делаю не так

Сделал проект в версии 1.46 beta с одной таблицей все работало. Разделил проект на несколько таблиц и теперь не понимаю как заставить его работать. Я неправильно разделил таблицы uchet, pribor, paspolojenie ? Или в них чего то не хватает, uchet как выбирать нужную запись в paspolojenie? При открытии форм ругается на значения связанных таблиц, как эти связи сделать?

Post's attachments

Attachment icon 333.ZIP 7.66 kb, 431 downloads since 2015-04-18 

Re: Обьясните что делаю не так

Думаю у вас неверно созданы связанные списки между таблицами.

Должно быть:
tip > markirovka > pribor > uchet

и
zdanie > uchastok > mesto > paspolojenie > uchet


В данном примере можете посмотреть, как правильно создавать связанные списки.
Также в данном примере обратите внимание, что страна в грид выводится с помощью вычисляемого поля, так как платформа сама не может правильно связать три таблицы соединенные связью последовательно.

Post's attachments

Attachment icon Linked Lists.zip 4.64 kb, 463 downloads since 2015-04-18 

Dmitry.

3 (edited by vikizma 2015-04-19 04:25:20)

Re: Обьясните что делаю не так

Что скажете о работа способности такой схемы?

Post's attachments

Attachment icon учет приборов.png 95.35 kb, 347 downloads since 2015-04-19 

Re: Обьясните что делаю не так

Думаю вполне, но как я уже сказал, удобней будет сделать связанный список:
Место > Участок > Здание


хотя и ваш вариант тоже возможен, но будет неудобно если зданий будет много в базе.

Dmitry.

Re: Обьясните что делаю не так

То есть это вот так должно выглядеть?

Post's attachments

Attachment icon учет приборов.png 90.9 kb, 309 downloads since 2015-04-19 

Re: Обьясните что делаю не так

Да.

Dmitry.

Re: Обьясните что делаю не так

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

Post's attachments

Attachment icon учет приборов.png 80.3 kb, 284 downloads since 2015-04-19 

Re: Обьясните что делаю не так

Сделал таблицы в версии 1.50, в форме при настройке грида показывает две таблицы markirovka. Почему их 2 и какую выбирать?

Post's attachments

Attachment icon 150.zip 3.95 kb, 426 downloads since 2015-04-21 

Re: Обьясните что делаю не так

vikizma
Это просто небольшой баг системы, выбирайте в любой, нет разницы.

Dmitry.

Re: Обьясните что делаю не так

Form 1 автовыполнение запроса данные выдает, по кнопки поиска(Button5) выдает : no such column.Как сделать что бы работало?

frmDvijenia(Учет оборудования) если в грид вывести SQL запрос(Button1) и щелкнуть по записи, выдает: неудалось определить индетификатор записи, помогите пожайлуста составить правильный SQL запрос. Как из при выборе из грида можно редактировать данные в базе.

Post's attachments

Attachment icon Учет приборов.zip 151.81 kb, 425 downloads since 2015-04-26 

Re: Обьясните что делаю не так

vikizma

Form 1 автовыполнение запроса данные выдает, по кнопки поиска(Button5) выдает : no such column.Как сделать что бы работало?

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


frmDvijenia(Учет оборудования) если в грид вывести SQL запрос(Button1) и щелкнуть по записи, выдает: неудалось определить индетификатор записи, помогите пожайлуста составить правильный SQL запрос. Как из при выборе из грида можно редактировать данные в базе.

Исправил, более подробно можно прочитать в документации об этом:
http://myvisualdatabase.com/help_ru/com … n_sql.html

Post's attachments

Attachment icon Учет приборов2.zip 152.91 kb, 454 downloads since 2015-04-28 

Dmitry.

Re: Обьясните что делаю не так

Здравствуйте, помогите пожалуйста с запросом в вычисляемом поле. Запрос выводит данные в 3 ячейки, как объединить вывод?

SELECT
 building.building_name,
 sector.sector_name,
 position.position_name
 disposition.id

FROM disposition

LEFT OUTER JOIN building ON building.id=disposition.id_building
LEFT OUTER JOIN sector ON sector.id=disposition.id_sector
LEFT OUTER JOIN position ON position.id=disposition.id_position

В проекте таблица disposition колонка calc_disposition. Пробовал так, но получается что попало.

SELECT
 building.building_name|
 sector.sector_name|
 position.position_name

FROM disposition

LEFT OUTER JOIN building ON building.id=disposition.id_building
LEFT OUTER JOIN sector ON sector.id=disposition.id_sector
LEFT OUTER JOIN position ON position.id=disposition.id_position
Post's attachments

Attachment icon Учет приборов.zip 159.67 kb, 434 downloads since 2015-05-06 

Re: Обьясните что делаю не так

vikizma
Здравствуйте, попробуйте так

(
(SELECT building.building_name FROM building WHERE building.id=id_building) || ' ' ||
(SELECT sector.sector_name FROM sector WHERE sector.id=id_sector) || ' ' ||
(SELECT position.position_name FROM position WHERE position.id=id_position)
)
Dmitry.

Re: Обьясните что делаю не так

Спасибо за помощь. Вывод так работает, только если в  таблице disposition есть NULL тогда вся строка пустая.
disposition :
"1 цех"    "NULL"    "NULL"                     Что лучьше сделать, изменить запрос или в таблицу вместо NULL пробелы забить?
"2 цех"    "NULL"    "NULL"
"Газовая"    "NULL"    "NULL"
"ГРП"    "NULL"    "NULL"
"Газовая"    "Склад"    "2 этаж"
"Газовая"    "Склад"    "1 этаж"
"1 цех"    "1 печь"    "NULL"
"1 цех"    "2 печь"    "NULL"
"1 цех"    "1 печь"    "Подготовка"
"1 цех"    "1 печь"    "Обжиг"
"1 цех"    "1 печь"    "Закал"
"2 цех"    "2 печь"    "Подготовка"
"2 цех"    "2 печь"    "Обжиг"
"2 цех"    "2 печь"    "Закал"

Re: Обьясните что делаю не так

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

CALCULATED:((SELECT building.building_name FROM building WHERE building.id=id_building) || ' ' ||(SELECT sector.sector_name FROM sector WHERE sector.id=id_sector) || ' ' ||(SELECT position.position_name FROM position WHERE position.id=id_position))

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

Re: Обьясните что делаю не так

vikizma wrote:

Спасибо за помощь. Вывод так работает, только если в  таблице disposition есть NULL тогда вся строка пустая.

попробуйте так

(
(SELECT IFNULL(building.building_name, '') FROM building WHERE building.id=id_building) || ' ' ||
(SELECT IFNULL(sector.sector_name, '') FROM sector WHERE sector.id=id_sector) || ' ' ||
(SELECT IFNULL(position.position_name, '') FROM position WHERE position.id=id_position)
)

к сожалению не смог проверить это на вашем проекте, не пойму где редактируются записи.

Dmitry.

Re: Обьясните что делаю не так

vikizma wrote:

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

Просто удалите из запроса "CALCULATED:"

Dmitry.

Re: Обьясните что делаю не так

Form1(кнопка Словари) - frmDictionaries(закладка Расположение)  - frmDisposition

Что то с закладками, PageControl при TabPosition:Top не сохраняет закладки в две строки, выводит в одну строку.

Re: Обьясните что делаю не так

(
(SELECT IFNULL(building.building_name, '') FROM building WHERE building.id=id_building) || ' ' ||
(SELECT IFNULL(sector.sector_name, '') FROM sector WHERE sector.id=id_sector) || ' ' ||
(SELECT IFNULL(position.position_name, '') FROM position WHERE position.id=id_position)
)

Все равно строку с NULL не выводит, переделал таблицу на NOT NULL.
В SQLite этот код тоже не работает, подскажите в чем можно проверить SQL запрос подключившись к базе.
Было бы хорошо выполнять SQL запрос из редактора проекта.

Re: Обьясните что делаю не так

vikizma

vikizma wrote:

Что то с закладками, PageControl при TabPosition:Top не сохраняет закладки в две строки, выводит в одну строку.

за это отвечает свойство MultiLine

frmDictionaries.PageControl1.MultiLine := True; 

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

Post's attachments

Attachment icon Учет приборов.zip 160.05 kb, 480 downloads since 2015-05-08 

Dmitry.