Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2012, 00:13   #1
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию Обрезка данных в запросе

Здравствуйте.
Есть запрос на добавление
Код:
Function zub_union()
Dim txtsql
txtsql = "INSERT INTO тест( ID, FamUnion ) SELECT Zub_temp.ID, Last(UnionStr2(ID,[Описание])) AS FamUnion  FROM Zub_temp WHERE (((IsEmpty(UnionStr2())) = False)) GROUP BY Zub_temp.ID HAVING (((Zub_temp.ID)=True));"
CurrentDb.Execute txtsql
End Function
в этом запросе используется пользовательская функция:
Код:
Function UnionStr2(Optional ID, Optional Fam)
Static IDOld, FamUnion
If IsMissing(ID) Then
IDOld = Empty
Exit Function
End If
If IDOld <> ID Then
IDOld = ID
FamUnion = Null
End If
FamUnion = IIf(IsNull(FamUnion), Fam, FamUnion & (", " + Fam))
UnionStr2 = FamUnion
Debug.Print UnionStr2
End Function
Debug.Print UnionStr2 выдает строчку полностью. Но в при вставке в таблицу эта строка обрезается, хотя в таблице поле имеет тип MEMO
Wind-up Bird вне форума Ответить с цитированием
Старый 05.07.2012, 13:44   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Wind-up Bird.
"..Debug.Print UnionStr2 выдает.." - проще выполнить SQL конструкцию применяющую эту функцию
Код:
SELECT ID, Last(UnionStr2(ID,[Описание])) AS FamUnion  
FROM Zub_temp 
WHERE IsEmpty(UnionStr2()) = False
GROUP BY ID HAVING Id=True
(хотя и не совсем понятно назначение функции)

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 05.07.2012, 15:24   #3
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию

Функция UnionStr2 () производит слияние полей из разных строк запроса. Она была взята отсюда:
http://hiprog.com/index.php?option=c...=334&Itemid=35

Я запускал SQL запрос в конструкторе и как функцию. Результат одинаковый . Строчка при вставке в таблицу обрезается. И я не пойму почему. Сначала была версия что обрезает строчку функция UnionStr2 (), но
Код:
Debug.Print UnionStr2
показал что это не так.

Обрезка происходит в sql.
Wind-up Bird вне форума Ответить с цитированием
Старый 05.07.2012, 23:29   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Wind-up Bird.
"..что это не так.." - не видя образец можно предположить только одно:
похоже на попытку воткнуть данные в поле таблицы недостаточного размера.
будет образец - возможно будут другие предположения.

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.07.2012, 09:38   #5
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте Wind-up Bird.
"..что это не так.." - не видя образец можно предположить только одно:
похоже на попытку воткнуть данные в поле таблицы недостаточного размера.
будет образец - возможно будут другие предположения.

Евгений.
Здравствуйте,
пример базы.
Вложения
Тип файла: rar Database1.rar (27.8 Кб, 19 просмотров)
Wind-up Bird вне форума Ответить с цитированием
Старый 07.07.2012, 23:07   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Wind-up Bird.
Объяснять причину обрезания до 255 я не буду (текст получается ещё короче т.к. в нем присутствуют скрытые тэги форматирования RTF).
Возможно Вам подойдет вариант без перебора, с использованием ADO функции GetString
работающий значительно быстрее, но для "вылавливания" последних блоков в таблице, как задумано
в Вашей функции UnionStr2, конструкция должна быть несколько другой.

Евгений.
Вложения
Тип файла: rar Database1.rar (24.0 Кб, 62 просмотров)
Teslenko_EA вне форума Ответить с цитированием
Старый 09.07.2012, 14:07   #7
Wind-up Bird
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 27
По умолчанию

Спасибо, Teslenko_EA Ваш вариант оказался более работоспособный. Буду разбираться и подстраивать под свои нужды
Wind-up Bird вне форума Ответить с цитированием
Старый 17.08.2022, 19:42   #8
jabudda
Новичок
Джуниор
 
Регистрация: 17.08.2022
Сообщений: 1
По умолчанию

Teslenko_EA, Спасибо тебе, неизвестный гуру аксесса. Через десять лет твой совет помог мне в точно такой же ситуации, ровно с этим же UnionStr и обрезкой результата до 255 символов.
jabudda вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обрезка изображения Rost93 PHP 2 29.06.2012 09:31
Ввод данных через поле, для условия отбора в запросе DeFREEnd Microsoft Office Access 4 27.03.2011 15:25
Обрезка строки gamer123 Общие вопросы Delphi 5 30.08.2010 08:22
Обрезка StringGrid artemavd Общие вопросы Delphi 6 28.07.2010 11:01
Обрезка UTF8 данных до N символов puKo PHP 2 27.09.2009 13:36