|
|
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Есть запрос, текст которого состоит из около 10 тыс. символов. Его, этот запрос, необходимо выполнить в коде VBA посредством CurrentDb.Execute "тест большого запроса" В VBA не помещается в одну строку такой длинный запрос (10 тыс. символов). Можно ли эту строку как-то разбить на несколько, но при этом, чтобы она воспринималась как один непрерывный запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:21:10 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Можно. Символ переноса не поможет, например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. или хранить текст в мемо-поле, файле - как удобнее без dbfailonerror возможны чудеса P.S. Если запрос - пачка INSERT или несколько других запросов, то CurrentDb.Execute такое не переваривает(чтоб они сдохли :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:41:12 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Yura_sЕсть запрос, текст которого состоит из около 10 тыс. символов. Его, этот запрос, необходимо выполнить в коде VBA посредством CurrentDb.Execute "тест большого запроса" В VBA не помещается в одну строку такой длинный запрос (10 тыс. символов). Можно ли эту строку как-то разбить на несколько, но при этом, чтобы она воспринималась как один непрерывный запрос? Что значит не влезает: В переменную? - точно влезает или на экран? - тогда как сказали выше или так: Код: plaintext 1. 2. 3. 4. PS: Вот только запрос такой длины вряд ли Акс захотит выполнять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:48:40 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Откройте страшную тайну, откуда в запросе 10000 символов ? Это SQL процедура ? Данные для вставки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:51:48 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительОткройте страшную тайну, откуда в запросе 10000 символов ? Это SQL процедура ? Данные для вставки ? скорее последнее - но это ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:58:29 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Тогда почему не разбить на куски ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:59:45 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительОткройте страшную тайну, откуда в запросе 10000 символов ? Это SQL процедура ? Данные для вставки ? Это инсерт-селект для слияния двух таблиц, в которых по 106 полей каждая. А запрос должен работать. Кол-во символов в запросе в Аксессе, на сколько мне известно ограничено 64000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 12:06:26 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Ну дык помести текст в таблицу в мемо-поле и достань хоть DLookup'ом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 12:12:36 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
в .execute можно не только константы использовать но и переменные и выражения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 12:14:01 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
>В VBA не помещается в одну строку такой длинный запрос (10 тыс. символов) There are two kinds of strings: variable-length and fixed-length strings. A variable-length string can contain up to approximately 2 billion (2^31) characters. A fixed-length string can contain 1 to approximately 64K (2^16) characters. Так что два миллиарда можно. Почему у тебя 10 тыс не поместилось- ХЗ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 12:29:39 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
"инсерт-селект для слияния двух таблиц" Если инсерт, то можно вставлять порциями. Слияние двух таблиц в третью - неужели список полей не влезает ? В общем запрос себе не представляю. Дайте пример, заменив куски многоточием, чтобы структура была понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 12:32:24 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
paparomeЧто значит не влезает: В переменную? - точно влезает А разве кол-во символов в переменной типа String не ограничено 255-ю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:01:22 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительВ общем запрос себе не представляю. Дайте пример, заменив куски многоточием, чтобы структура была понятна. вот такой запрос: INSERT INTO tb_main(field1,field2,...,field106,) SELECT tb_main_new.field1 AS Выражение1, tb_main_new.field2 AS Выражение2, ..., tb_main_new.field106 AS Выражение106 FROM [" & путь к базе с таблицей tb_main_new& "].tb_main_new tb_main и tb_main_new - таблицы с одинаковой струтурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:11:08 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
106 полей не влезли в 10000 символов ? Если структура одинакова до имен полей и их порядка, то можно сделать INSERT INTO <куда> SELECT * FROM <откуда> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:19:00 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЕсли структура одинакова до имен полей и их порядка, то можно сделать INSERT INTO <куда> SELECT * FROM <откуда> Одно (ключевое поле) нужно игнорировать при вставке, вот и приходиться перечислять все, кроме одного. С SELECT * FROM не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:22:14 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Я проверил на своей табличке, с автоинкрементным первичным ключом - все OK. INSERT INTO tbTownNew SELECT * FROM tbTown Первый раз прекрасно вставляет. Потом только те записи, кода которых нет в tbTownNew. Можно сократить SQL INSERT INTO tb_main(field1,field2,...,field106,) SELECT field1, field2, ..., field106 FROM [" & путь к базе с таблицей tb_main_new& "].tb_main_new экономится 106 * длина имени таблицы + длина " AS .... " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:27:21 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
2 Yura_s : так что у тебя куда не лезет? Текст запроса в переменную String? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:27:54 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Alexey Sh2 Yura_s : так что у тебя куда не лезет? Текст запроса в переменную String? Да. Когда я прогоняю программу в пошаговом режиме, то в окне Watches значение переменной с запросом - только первйх 254 символа. Сливаю так: s = "INSERT INTO ...." s = s & "...................." s = s & "...." s = s & "...." Цитирую из Help VBA : "типы данных: String (variable-length) 10 bytes + string length 0 to approximately 2 billion String (fixed-length) Length of string 1 to approximately 65,400 " Почему же у меня только 254??? Или это окно Watches не показывает больше 255 символов?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:44:42 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Watches обрезает 255. Debug - побольше, но тоже режет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:50:20 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЯ проверил на своей табличке, с автоинкрементным первичным ключом - все OK. INSERT INTO tbTownNew SELECT * FROM tbTown Первый раз прекрасно вставляет. Потом только те записи, кода которых нет в tbTownNew. У меня так не получается. Дело в том, что вставка производится из нескольких таблиц последовательно, но у всех вставляемых таблиц есть поля с одинаковыми значениями в первичном ключе и его нужно игнорировать при вставке. Новая вставленная запись получает новое порядковое значение. Как при этом соблюсти ссылочную целостность между вставляемыми значениями (таблиц в базе всего 34 :-)) я смутно представляю, но пока стоИт задача объеденить главные таблицы в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 14:15:26 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
INSERT INTO <куда> SELECT * FROM <откуда> WHERE <ключ> NOT IN (SELECT <ключ> FROM <куда>) Ну а экономия на именах таблиц/полей неужели не помогла ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 14:22:14 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Yura_s Дело в том, что вставка производится из нескольких таблиц последовательно, но у всех вставляемых таблиц есть поля с одинаковыми значениями в первичном ключе и его нужно игнорировать при вставке. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 14:23:25 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь! таблицы начали сливаться. Но возникла по ходу вот такая проблема: в операторе SELECT .... FROM [" & путь к базе с таблицей tb_main_new& "].tb_main_new в секции &путь к базе с таблицей tb_main_new& Может появиться путь вида: C:\Documents and Settings\Administrator\Рабочий стол\Base И при этом выдается "Ошибка синтаксиса в предложении FROM". Если папку с базой переместить в корень диска, то таких проблем не возникает. Эта проблема с длинными именами папок решается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 17:36:21 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Не знаю, как аксесс, а я убиваю за использование пробелов и русских букв в именах файлов, таблиц, полей С нормальными путями проблем не было. Попробуй вместо квадратных скобок обратные кавычки ` , может поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 17:41:24 |
|
||
|
Как вставить длинный запрос в VBA
|
|||
|---|---|---|---|
|
#18+
Alexey ShНе знаю, как аксесс, а я убиваю за использование пробелов и русских букв в именах файлов, таблиц, полей С нормальными путями проблем не было. Попробуй вместо квадратных скобок обратные кавычки ` , может поможет Да я тоже убиваю своих юзверей за такие извращения, но этим продуктом будет пользоваться руководство, поэтому мои руки будут коротки, чтобы достать пользователей такого ранга :( А кавычки уже пробовал - не помагает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 17:49:54 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32884131&tid=1669033]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 349ms |

| 0 / 0 |
