![]() |
![]() |
![]() |
|
Не выполняется прямой запрос | ☑ | ||
---|---|---|---|---|
0
DCKiller
26.04.10
✎
09:28
|
База ДБФ
Нужно выполнить, собственно, вот такой прямой запрос: SELECT Док1.IDDoc As ID, "Авансовый отчет" As Descr, "АвансовыйОтчет" As Name FROM DH13053 As Док1 UNION ALL SELECT Док2.IDDoc As ID, "Бухгалтерская справка" As Descr, "БухгалтерскаяСправка" As Name FROM DH40597 As Док2 UNION ALL <...> SELECT Док86.IDDoc As ID, "Передача заявлений ДСВ-1 в ПФР" As Descr, "ПередачаЗаявленийДСВ1" As Name FROM DH56050 As Док86 Ругается Результат = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); {C:\ОБЩАЯ\ОТЧЕТЫ\ЖУРНАЛДОК.ERT(170)}: FAILED! ICommandText::Execute(): Compiled code for this line is too long. Что делать? |
|||
1
SnarkHunter
26.04.10
✎
09:31
|
Замени " на '
|
|||
2
DCKiller
26.04.10
✎
09:33
|
(1) Не помогает :(
Если что, еще раз повторю: база ДБФ :) |
|||
3
SnarkHunter
26.04.10
✎
09:36
|
Да какая разница...
У тебя 86 юнионов что ли? |
|||
4
1Сергей
26.04.10
✎
09:36
|
('Авансовый отчет') As Descr,
('АвансовыйОтчет') As Name |
|||
5
DCKiller
26.04.10
✎
09:36
|
(3) так точно
|
|||
6
1Сергей
26.04.10
✎
09:37
|
(5) Compiled code for this line is too long
|
|||
7
DCKiller
26.04.10
✎
09:37
|
(4) тоже не катит
|
|||
8
DCKiller
26.04.10
✎
09:38
|
(6) Я знаю, но мне надо выполнить именно такой запрос
|
|||
9
ДенисЧ
26.04.10
✎
09:38
|
(8) А в Австралию на поезде съездить не надо?
|
|||
10
1Сергей
26.04.10
✎
09:39
|
(8) я сам сталкивался с таким. Так и не смог обойти ограничение. Проще разбить на несколько запросов
|
|||
11
DCKiller
26.04.10
✎
09:39
|
(9) Не надо. Альтернатива?
|
|||
12
ДенисЧ
26.04.10
✎
09:39
|
(11) Альтернатива - утки
|
|||
13
SnarkHunter
26.04.10
✎
09:40
|
(5)Ну тогда тебе сюда
http://support.microsoft.com/kb/111991 Вкратце: скомпилированная строка кода в VFP не может превышать 1024 символа... Твои 86 юнионов драйвер просто не переваривает... |
|||
14
Ёпрст
гуру
26.04.10
✎
09:49
|
(0)
А нафига столько юнионов ? Не проще 1 табличку 1sjourn посмотреть ? И вытащить с неё IDDOC и IDDOCDEF ? Нафига все шапки доков цеплять? |
|||
15
DCKiller
26.04.10
✎
09:49
|
(10) Если что, результаты этого запроса потом планируется соединить с другой таблицей, т.е. он планируется как вложенный
|
|||
16
DCKiller
26.04.10
✎
09:52
|
(14) С этой таблицей и планируется соединить результаты вложенного запроса. По IDDoc. Чтобы в окончательном запросе из вложенного подцепить представление и вид документа
|
|||
17
SnarkHunter
26.04.10
✎
09:52
|
(15)Ну тем более не взлетит...
|
|||
18
Ёпрст
гуру
26.04.10
✎
09:59
|
(16) Для этой цели достаточно посмотреть 1 табличку 1sjourn - в ней и так всё это есть.
|
|||
19
DCKiller
26.04.10
✎
10:00
|
(18) Там есть вид документа в 36-ричном виде. А мне нужно получить в результат запроса представление вида данного документа. Может, ты скажешь, где оно там?
|
|||
20
SnarkHunter
26.04.10
✎
10:02
|
Его там нет... Сделай временную таблицу и сохрани в нее представления, потом используй в запросах...
|
|||
21
DCKiller
26.04.10
✎
10:05
|
(20) Итак мы снова возвращаемся к тому, что было поднято пару дней назад :)
Я уже думал над этим, вот только тогда мне никто не смог внятно описать, как создать в базе ДБФ временную таблицу и потом подключиться к ней в другом запросе. |
|||
22
Ёпрст
гуру
26.04.10
✎
10:09
|
(19)
Ну так сделай Select ICASE(Жур.IDDOCDEF = $ВидДокумента.Реализация,'Реализация', Жур.IDDOCDEF = $ВидДокумента.ПоступлениеТМЦ,'ПоступлениеТМЦ','хз что за документ') From 1sjourn Жур |
|||
23
Ёпрст
гуру
26.04.10
✎
10:09
|
(21) да запросто..
|
|||
24
Ёпрст
гуру
26.04.10
✎
10:11
|
||||
25
SnarkHunter
26.04.10
✎
10:11
|
(21)Злобный Йожег? Я не узнаю вас в гриме...
|
|||
26
Boroda
26.04.10
✎
10:15
|
Может что-то типа этого попробовать...
Для й = 1 По Метаданные.Документ() Цикл Идентификатор = Метаданные.Документ(й).Идентификатор; Запрос.Выполнить(" |DELETE FROM $Документ."+Идентификатор+" |WHERE IDDOC NOT IN (SELECT IDDOC FROM _1SJOURN ) |"); |
|||
27
Ёпрст
гуру
26.04.10
✎
10:17
|
(26) ну и чем это поможет автору ?
|
|||
28
Salimbek
26.04.10
✎
10:19
|
Х.З. Я бы делал через SQLite, а там легко выполняется create table
|
|||
29
DCKiller
26.04.10
✎
10:21
|
(28) Можно образец кода, как бы это выглядело на 1sqlite? Только со всеми подробностями, пож-ста...
|
|||
30
DCKiller
26.04.10
✎
10:28
|
(24) По примеру в ссылке: создать временную таблицу удалось. А вот подключиться к ней после создания - пока нет. Но, в любом случае, прогресс налицо :) Хотелось бы все-таки суметь подключиться к ней.
|
|||
31
Ёпрст
гуру
26.04.10
✎
10:31
|
(30) а что там именно не получилось то ?
Могу пример кинуть, если надо. |
|||
32
DCKiller
26.04.10
✎
10:35
|
(30) Короче, переменная ТекстЗапроса содержит текст запроса, помещаемого во врем. таб.:
ТекстЗапроса = "SELECT | Док1.IDDoc As ID, | ""Авансовый отчет"" As Descr, | ""АвансовыйОтчет"" As Name |INTO CURSOR TmpTable READWRITE |FROM | DH13053 As Док1"; Результат = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); //до этого места все без проблем //а вот на эту строчку ругается: Результат = Запрос.ВыполнитьИнструкцию("SELECT * FROM TmpTable"); Результат = Запрос.ВыполнитьИнструкцию("SELECT * FROM TmpTable"); {C:\ОБЩАЯ\ОТЧЕТЫ\ЖУРНАЛДОК.ERT(177)}: FAILED! ICommandText::Execute(): File 'tmptable.dbf' does not exist. |
|||
33
DCKiller
26.04.10
✎
10:45
|
ап
|
|||
34
Ёпрст
гуру
26.04.10
✎
10:49
|
(32) да блин .. читай (1)
|
|||
35
DCKiller
26.04.10
✎
10:51
|
(34) НУ НЕ РАБОТАЕТ!!!
|
|||
36
Ёпрст
гуру
26.04.10
✎
10:52
|
И это.. Нафига ты упорно пытаешься обратиться к табличке Шапки документа ?????????????
Для вытаскивания вида, достаточно (22).. Если уж лень делать icase - делается временная табличка, в которую руками заталкивается видДокумента.. её потом и пользуешь в другом запросе. |
|||
37
Ёпрст
гуру
26.04.10
✎
10:53
|
(35) ПИШИ БЕЗ ОШИБОК!
|
|||
38
DCKiller
26.04.10
✎
10:53
|
(36) ты читать умеешь? Я тебе объясняю, что ВТ создается, но потом Я НЕ МОГУ К НЕЙ ПОДКЛЮЧИТЬСЯ. Запрос ее НЕ ВИДИТ. Вот в чем сейчас проблема!
|
|||
39
DCKiller
26.04.10
✎
11:01
|
еще раз ап
|
|||
40
Ёпрст
гуру
26.04.10
✎
11:04
|
На вот, пример
http://webfile.ru/4450487 |
|||
41
Кириллка
26.04.10
✎
11:13
|
(32)я конечно уже не помню, но, вроде, бы в "INTO CURSOR TmpTable READWRITE" лишнее про курсор. Вроде, достаточно "INTO TmpTable", но такую таблицу временной можно назвать только в кавычках :)
|
|||
42
Salimbek
26.04.10
✎
11:15
|
(29)
ЗагрузитьВнешнююКомпоненту("1sqlite.dll"); база = СоздатьОбъект("SQLiteBase"); база.Открыть(":memory:"); запрос = база.НовыйЗапрос(); запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF"); запрос.ВыполнитьЗапрос("create table tmpTable(...)"); запрос.ВыполнитьЗапрос("insert ... into tmpTable"); запрос.ВыполнитьЗапрос("create virtual table Остатки using dbeng(Регистр.ОстаткиТоваров)"); запрос.ВыполнитьЗапрос("select ... from Остатки left join tmpTable"); ----------- P.S. ИМХО, ты либо что-то не договариваешь, либо просто не понимаешь, что делаешь. Например я бы написал при помощи OLEDB вместо (0) так: select top 10 iddoc as ID, iddocdef as [Вид $ВидДокумента], iddocdef as [РасширенныйВид $ВидДокументаПредставление]from 1sjourn |
|||
43
Salimbek
26.04.10
✎
11:18
|
+42, точнее так:
select top 10 iddoc as ID, iddocdef as [Name $ВидДокумента], iddocdef as [Descr$ВидДокументаПредставление] from 1sjourn хотя смысла в таком запросе - я все равно не вижу... ведь выбрать все документы, лишь для того, чтобы получить затем мелкую выборку и найти виды документов, по моему это бесполезная трата ресурсов. |
|||
44
Кириллка
26.04.10
✎
11:20
|
(43)судя по названию обработки в (0), человек делает свой журнал доков.
|
|||
45
Salimbek
26.04.10
✎
11:24
|
(44) Если так, то ему стоит посмотреть на эту ветку: http://www.1cpp.ru/forum/YaBB.pl?num=1248941896 там, фактически, готовый журнал лежит, да и не только журнал
|
|||
46
Кириллка
26.04.10
✎
11:28
|
(0)а покажи самую длиную строку кода, так чиста поржать :)
|
|||
47
DCKiller
26.04.10
✎
11:38
|
(42) ВидДокументаПредставление дает в результате две точки в колонке...
|
|||
48
Salimbek
26.04.10
✎
12:04
|
(47) х. з. у меня скульная база и запрос выдал такое:
ID Name Descr 2HG ПереносОстатков Перенос остатков 2HH ПереносОстатков Перенос остатков |
|||
49
Ёпрст
гуру
26.04.10
✎
12:08
|
(48) для дбф можно только руками писать.. как в (22)
|
|||
50
SnarkHunter
26.04.10
✎
12:09
|
(46)Тебе комп выдали что ли? :-)
|
|||
51
DCKiller
26.04.10
✎
12:12
|
(42) По поводу
запрос.ВыполнитьЗапрос("insert ... into tmpTable"); Можно точнее? У меня ВТ с 2-мя полями, как именно туда установить значения? |
|||
52
Кириллка
26.04.10
✎
12:26
|
(50)ага, ажно 14 числа.
|
|||
53
kiruha
26.04.10
✎
12:27
|
(0)
Если Вы получаете сообщения об ошибках Недостаточный размер стэка (Error 1308) или SQL: Compiled code for this line is too long(Error 1812), Вы можете увеличить "уровень значимости" для конструкций FOR и WHERE . Если Вы используете SYS(3055)... Максимум SYS(3055,2040) или в терминологиии 1С ОлеКоманда.Выполнить("SYS(3055,2040)"); Также промежуточные результаты можно класть во временные таблицы |
|||
54
kiruha
26.04.10
✎
12:30
|
||||
55
Salimbek
26.04.10
✎
12:32
|
(51) ну вот, например, у меня такой код есть:
склЗапрос.Подготовить("insert into items |(id, name, type, dim_kind_id, unit_id, description, dcd) | values (@id,@name,@type,@dim_kind_id,@unit_id,@description,@dcd)"); Пока тзТовары.ПолучитьСтроку() = 1 Цикл Товар = тзТовары.Товар; //АраИ Попытка ТипТовара = ?(Товар.ТипТовара = Перечисление.ТипыТоваров.Весовой,0,1); //0 - весовой, 1 - штучный Исключение ТипТовара = 1; КонецПопытки; склЗапрос.УстановитьПараметр("@id",Товар.Код); склЗапрос.УстановитьПараметр("@name",Товар.Наименование); склЗапрос.УстановитьПараметр("@type",ТипТовара); склЗапрос.УстановитьПараметр("@dim_kind_id",""); склЗапрос.УстановитьПараметр("@unit_id",тзТовары.КодБазовойЕдиницы); склЗапрос.УстановитьПараметр("@description",Товар); склЗапрос.УстановитьПараметр("@dcd",0); склЗапрос.Выполнить(); КонецЦикла; |
|||
56
DCKiller
26.04.10
✎
12:53
|
(55) разобрался уже, спс
|
|||
57
DCKiller
26.04.10
✎
12:56
|
Кстати, а какой в 1sqlite аналог ICASE?
|
|||
58
Salimbek
26.04.10
✎
13:36
|
CASE (DATE_OF_BIRTH / 100) % 100
WHEN 1 THEN 'January' WHEN 2 THEN 'February' ... END |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |