Ошибки конструктора запроса
|
|
K_A_O | Дата: Пятница, 07.02.2014, 17:15 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Оффлайн
| Посдистема 3.03
Диалект MS SQL
Пример Создаем две таблицы [Table.T1] и [Table.T2]
Код CREATE TABLE [dbo].[Table.T1](
[F1] [int]NULL,
[F2] [nchar](10) NULL
) ON
[PRIMARY]GO
INSERT INTO [dbo].[Table.T1]
([F1]
,[F2])
VALUES
(1, 'T1 - 1')
,(2, 'T1 - 2')
GO
CREATE TABLE [dbo].[Table.T2](
[F1] [int]NULL,
[F2] [nchar](10) NULL
) ON
[PRIMARY]GO
INSERT INTO [dbo].[Table.T2]
([F1]
,[F2])
VALUES
(1, 'T2 - 1')
,(2, 'T2 - 2')
GO
Создаем работающий запрос
Код SELECT
Table_T1.F1 AS F11,
Table_T1.F2 AS F12,
Table_T2.F2 AS F21
FROM
dbo.[Table.T1] AS Table_T1
INNER JOIN dbo.[Table.T2] AS Table_T2
ON Table_T1.F1 = Table_T2.F1
При открытии в констукторе запрос ошибочно модифицируется
Код SELECT
Table_T1.F1 AS F11,
Table_T1.F2 AS F12,
Table_T2.F2 AS F21
FROM
dbo.Tabl.[T1]] AS Table_T1
INNER JOIN dbo.Tabl.[T2]] AS Table_T2
ON Table_T1.F1 = Table_T2.F1
Сообщение отредактировал K_A_O - Пятница, 07.02.2014, 17:28 |
|
| |
tormozit | Дата: Пятница, 07.02.2014, 19:28 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Спасибо. Проблему воспроизвел. Она будет исправлена в следующей версии.
|
|
| |
tormozit | Дата: Понедельник, 10.02.2014, 02:29 | Сообщение # 3 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Исправлено в 3.04
|
|
| |
K_A_O | Дата: Четверг, 13.02.2014, 14:59 | Сообщение # 4 |
Рядовой
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Оффлайн
| Версия 3.04. У меня данная проблема сохраняется. Грамматика загружается из макета. Нигде не кэшируется. На всякий случай перерегистрировал Goldparser, но не помогло.
|
|
| |
tormozit | Дата: Четверг, 13.02.2014, 19:44 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Да. К сожалению после исправления и до выпуска 3.04 я успел снова сломать это. Исправлю в следующей версии.
|
|
| |
K_A_O | Дата: Пятница, 14.02.2014, 15:46 | Сообщение # 6 |
Рядовой
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Оффлайн
| Ошибка при использовании запроса с CAST
Код CREATE TABLE [dbo].[T1](
[F1] [int]NULL,
[F2] [nchar](10) NULL
) ON
[PRIMARY]GO
INSERT INTO [dbo].[T1]
([F1]
,[F2])
VALUES
(1, 'T1 - 1')
,(2, 'T1 - 2')
GO
Текст запроса:
Код SELECT
T1.F1 AS F1,
CAST(T1.F2 AS varchar(5)) AS F2
FROM
dbo.T1 AS T1
При попытке открыть в конструкторе появляется сообщение
Код Текст запроса: Строка 5: {(5,25)}: Синтаксическая ошибка "(", ожидается: '.', (EOF), ... PS. Нельзя ли название темы изменить, дело не в ADO
|
|
| |
tormozit | Дата: Суббота, 15.02.2014, 01:37 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Распознавание имен типов данных чужих диалектов будет добавлено в следующей версии.
|
|
| |
tormozit | Дата: Воскресенье, 16.02.2014, 17:17 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Ошибка обработки точки в определениях таблиц исправлена в 3.05 Распознавание имен типов данных чужих диалектов добавлено в 3.05
|
|
| |
K_A_O | Дата: Вторник, 18.02.2014, 11:55 | Сообщение # 9 |
Рядовой
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Оффлайн
| v.3.05 Таблицы с точками пока работать не могут, но уже по другой причине. Имя таблицы никак не выделяется, в констукторе получается строка dbo.Table.T1, и запрос выполниться не может.
Самое простое, в модуле обработки ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой добавить подобную функцию: Код Функция ПолучитьИмяТаблицыADO(знач ИмяИсходное) // сравнить с возможными префиксами Если Лев(ИмяИсходное,1)<>"[" Тогда ИмяИсходное = "["+ИмяИсходное+"]"; КонецЕсли; Возврат ИмяИсходное; КонецФункции
и в функции ЗаполнитьДоступныеТаблицыADO() присвоить "СтрокаТаблицы.Имя = ПолучитьИмяТаблицыADO(".
Но вот по поводу использования квадратных скобок, в продуктах Microsoft они будут работать, вплоть до Excel. Но подойдет ли это для любых источников ADO. Или надо делать визуальную настройку.
|
|
| |
tormozit | Дата: Вторник, 18.02.2014, 12:03 | Сообщение # 10 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Поясни "Имя таблицы никак не выделяется, в констукторе получается строка dbo.Table.T1". Вроде бы сейчас конструктор оставляет квадратные скобки. Например попробуй такой запрос "SELECT 0 FROM dbo.[Table.T1]". Подозреваю, речь идет о добавлении таблицы в выбранные таблицы из списка доступных таблиц в конструкторе?
|
|
| |
K_A_O | Дата: Вторник, 18.02.2014, 12:37 | Сообщение # 11 |
Рядовой
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Оффлайн
| Если мы напишем "SELECT 0 FROM dbo.[Table.T1]" - конструктор открывается, но таблицу со скобками у себя не находит и считает ее временной. Ее поля недоступны. Одновременно в конструкторе видна таблица Table.T1, с доступными полями, однако если ее выбрать - в итоговом тексте скобки пропадают, соответственно запрос не работает. При обработке таблиц нужно сразу понимать, что это имя должно быть обрамлено скобками.Добавлено (18.02.2014, 12:37) --------------------------------------------- Правда, обычные имена таблиц обрамлять скобками избыточно, нужно только те, которые не удовлетворяют правилам написания реквизитов.
|
|
| |
tormozit | Дата: Вторник, 18.02.2014, 15:30 | Сообщение # 12 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Выгрузи таблицу доступных таблиц в файл (например в отладчике через Ис) и выложи сюда.
|
|
| |
K_A_O | Дата: Вторник, 18.02.2014, 16:09 | Сообщение # 13 |
Рядовой
Группа: Проверенные
Сообщений: 12
Репутация: 0
Статус: Оффлайн
| Создал пустую базу MS SQL, создал две таблицы [Table.T1] и [Table.T2], как в сообщении # 1, и открыл оттуда запрос в конструкторе.
ТЧ ДоступныеТаблицы содержит 4 строки.
И это нормально. Потому, что в модуле обработки ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой в функции ЗаполнитьДоступныеТаблицыADO() имена таблиц получаются без учета скобок. Конструктор не считает имена со скобками ошибочными, но и ничего не знает про них.
Сообщение отредактировал K_A_O - Вторник, 18.02.2014, 16:11 |
|
| |
tormozit | Дата: Среда, 19.02.2014, 00:18 | Сообщение # 14 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Спасибо. Ситуация понятна. В следующей версии полные имена доступных таблиц будут формироваться при необходимости с квадратными скобками.
|
|
| |
tormozit | Дата: Воскресенье, 23.02.2014, 19:00 | Сообщение # 15 |
Генералиссимус
Группа: Администраторы
Сообщений: 6388
Репутация: 165
Статус: Оффлайн
| Исправлено в 3.06
|
|
| |