Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически часто с пользователем)
Текущее время: 28.10.2024 19:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: 22.07.2019 02:00 
Не в сети

Зарегистрирован: 15.12.2014 16:50
Сообщения: 106
Добрый день. В таблице "История изменений" есть поле, которое так и называется "Поле". В нем прописываются поля в которых были внесены изменения из разных таблиц. Наименование полей прописывается на англ.языке, т.е. внутренние имена полей, а мне надо чтобы имена полей прописывались на русском языке, как они отображаются в таблицах. Думаю добавить новое вычисляемое поле по запросу, в котором будут автоматически прописываются имена полей на русском языке. Запрос примерно следующий SELECT SettingValue FROM tblSettings WHERE SettingName = …, но вот не пойму, что писать в части Where. Или может как-то по-другому можно решить мою задачу? Помогите, пожалуйста.


Вложения:
Pic1.png
Pic1.png [ 139.18 КБ | Просмотров: 37857 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22.07.2019 09:50 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Как-то так, наверное:
Код:
(SELECT SettingValue FROM tblSettings WHERE SettingName = [tblUpdatesHistory].[TableName] & "." & [tblUpdatesHistory].[FieldName] & ".Caption")


Квадратные скобки, наверное, можно не указывать.
В круглых скобках, это если вычисляемое поле создаем. А это формула - подзапрос select в скобках.
А если формулу в Значение по умолчанию для хранимого, то тогда круглых скобок не надо. И формула чуть другая будет - по сути, вместо квадратных скобок угловые скобки должны быть, как ссылки на значения текущей записи.

Вот посмотрите на скриншоте где в tblSettings хранятся наименования полей.


Вложения:
Pic1.JPG
Pic1.JPG [ 142.94 КБ | Просмотров: 37848 ]

_________________
2B OR NOT 2B = TRUE
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22.07.2019 12:39 
Не в сети

Зарегистрирован: 15.12.2014 16:50
Сообщения: 106
Не подходит(


Вложения:
Pic1.png
Pic1.png [ 170.34 КБ | Просмотров: 37844 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22.07.2019 13:31 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Надо попробовать конвертировать возвращаемое значение к строке
Код:
(SELECT CStr(SettingValue) FROM tblSettings WHERE SettingName = [tblUpdatesHistory].[TableName] & "." & [tblUpdatesHistory].[FieldName] & ".Caption")

или лучше твк
Код:
(SELECT LEFT(SettingValue, 50) FROM tblSettings WHERE SettingName = [tblUpdatesHistory].[TableName] & "." & [tblUpdatesHistory].[FieldName] & ".Caption")


И вообще SELECT TOP 1 написать для верности.


И вообще, судя по скриншоту, таблица ваша не tbl а представление (т.к. есть на желтом фоне вычисляемые поля). Так сообщите внутреннее имя вашей таблицы. Надо изначально с этого начинать. Если это qdfUpdatesHistory то значит надо попробовать заменить tblUpdatesHistory на qdfUpdatesHistory в вашей формуле.

Лучше бы с видео и копией БД обратиться вам в поддержку.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22.07.2019 16:24 
Не в сети

Зарегистрирован: 15.03.2016 07:21
Сообщения: 104
Откуда: г. Хабаровск
Используя код:
Ivan писал(а):
Код:
(SELECT SettingValue FROM tblSettings WHERE SettingName = [tblUpdatesHistory].[TableName] & "." & [tblUpdatesHistory].[FieldName] & ".Caption")

создал представление qdfUpdatesHistory (История изменений)
Код:
SELECT h.*, u.UserFullName AS UserNameCalc, s.SettingValue AS FieldAlliasCalc FROM (tblUpdatesHistory AS h LEFT JOIN tblUsers AS u ON h.UserID = u.ID) LEFT JOIN tblSettings AS s ON s.SettingName = h.TableName & '.' & h.FieldName & '.Caption'
Всё получилось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28.07.2019 01:31 
Не в сети

Зарегистрирован: 15.12.2014 16:50
Сообщения: 106
ipLVL писал(а):
Используя код:
Ivan писал(а):
Код:
(SELECT SettingValue FROM tblSettings WHERE SettingName = [tblUpdatesHistory].[TableName] & "." & [tblUpdatesHistory].[FieldName] & ".Caption")

создал представление qdfUpdatesHistory (История изменений)
Код:
SELECT h.*, u.UserFullName AS UserNameCalc, s.SettingValue AS FieldAlliasCalc FROM (tblUpdatesHistory AS h LEFT JOIN tblUsers AS u ON h.UserID = u.ID) LEFT JOIN tblSettings AS s ON s.SettingName = h.TableName & '.' & h.FieldName & '.Caption'
Всё получилось.


По вашему коду создала предствалению, но в нём ни все поля из таблиц прописываются почему-то, у вас так же?


Вложения:
Pic1.png
Pic1.png [ 129.02 КБ | Просмотров: 37720 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28.07.2019 01:36 
Не в сети

Зарегистрирован: 15.12.2014 16:50
Сообщения: 106
Ivan писал(а):
И вообще, судя по скриншоту, таблица ваша не tbl а представление (т.к. есть на желтом фоне вычисляемые поля). Так сообщите внутреннее имя вашей таблицы. Надо изначально с этого начинать. Если это qdfUpdatesHistory то значит надо попробовать заменить tblUpdatesHistory на qdfUpdatesHistory в вашей формуле.



Да, моя таблица - представаление, заменила tblUpdatesHistory на qdfUpdatesHistory в формуле
Код:
(SELECT LEFT(SettingValue, 50) FROM tblSettings WHERE SettingName = [tblUpdatesHistory].[TableName] & "." & [tblUpdatesHistory].[FieldName] & ".Caption")

но это не сильно помогло, получаю ошибку.


Вложения:
Pic1.png
Pic1.png [ 69.89 КБ | Просмотров: 37720 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28.07.2019 15:48 
Не в сети

Зарегистрирован: 15.03.2016 07:21
Сообщения: 104
Откуда: г. Хабаровск
helgap писал(а):
По вашему коду создала предствалению, но в нём ни все поля из таблиц прописываются почему-то, у вас так же?
Учитывая даты истории изменений записей, по которым у Вас отсутствуют названия полей, вероятнее всего, в Ваших ныне действующих таблицах эти поля отсутствуют, т.е. поле ObjectID было удалено из таблицы tblExpenseComposition, поля ProfitFact, ProfitPlan, SpentAmount и другие были удалены из таблицы tblMain (либо переименованы).
Во всех остальных записях журнала "История изменений" Вами получен желаемый результат.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30.08.2019 00:20 
Не в сети

Зарегистрирован: 15.12.2014 16:50
Сообщения: 106
Добрый день.
Подскажите, пожалуйста, как дописать представление чтобы и наименование таблиц было на русском языке, т.е. не внутренние имена таблиц показывались, а их наименования:

SELECT h.*, u.UserFullName AS UserNameCalc, s.SettingValue AS FieldAlliasCalc FROM (tblUpdatesHistory AS h LEFT JOIN tblUsers AS u ON h.UserID = u.ID) LEFT JOIN tblSettings AS s ON s.SettingName = h.TableName & '.' & h.FieldName & '.Caption'


Вложения:
Pic1.png
Pic1.png [ 35.25 КБ | Просмотров: 37109 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30.08.2019 13:09 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Повторно объединить с таблицей настроек и вытащить оттуда наименование таблицы TableAlliasCalc
Код:
SELECT h.*
   ,u.UserFullName AS UserNameCalc
   ,s.SettingValue AS FieldAlliasCalc
   ,ss.SettingValue AS TableAlliasCalc
FROM ((
   tblUpdatesHistory AS h LEFT JOIN tblUsers AS u ON h.UserID = u.ID
   )
LEFT JOIN tblSettings AS s ON s.SettingName = h.TableName & '.' & h.FieldName & '.Caption')
LEFT JOIN tblSettings AS ss ON ss.SettingName = h.TableName & '.Caption'

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30.08.2019 14:29 
Не в сети

Зарегистрирован: 15.12.2014 16:50
Сообщения: 106
Спасибо)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB