|
|
|
| Задача такая: есть записи с несколькими текстовыми полями: Кат1, Кат2, Кат3, Кат4, Кат5. Причем какие то из из полей в записях пустые, а какие то заполнены, например, Домашний обиход - Доска гkадильная - Марка DivviTM. Или Строительные материалы - Отделка для стен - Обои - Обои виниловые- гофрированные
Нужно объединить эти текстовые поля в новое объединенное поле вида:
Кат1/Кат2/Кат3/Кат4/Кат5 но так, чтобы лишних слешей в случае пустого поля не возникало.
Я пыталась сделать простой конкатенацией - получалось Кат1/Кат2///
Как прописать выражение, чтобы избавиться от ненужных флешей? До VBA я пока еще не доросла | |
|
| |
|
|
|
| вар. 1. можно не мучать голову на сборку - получившиеся поле прогнать
do wile Instr(поле, "//") >0
Replace(поле,"//","/")
loop
|
вар. 2 при сборке нашего поля
if nz(кат2, "")<>"" then
поле=поле & "/" кат2
end if
|
| |
|
| |
|
19 Кб. |
|
| Спасибо, но я указывала, что до VBA еще не доросла... :-)))
Как в строке бланка запроса могут быть объединены поля без лишних слешей? | |
|
| |
|
|
|
|
|
| ОбъединенныйСтолбец: [T_ПродажиИсходная]![Кат1] & IIf(nz([Кат2],"")="","","/" & [Кат2] & IIf(nz([Кат3],"")="","","/" & [Кат3])) | |
|
| |
|
|
|
|
|
Спасибо, но я указывала, что до VBA еще не доросла... :-)))
|
надо Растишку кушать, курить "Куришку" и бухать "Бухашку"
так или иначе такое построение ни мастером и как не сделаешь
то что предложил ddi - вариант для SQL строки или на форме в поле св-во данные пишем
= [Кат1] & IIf(nz([Кат2],"")="","","/" & [Кат2] & IIf(nz([Кат3],"")="","","/" & [Кат3])) .....
- только это теже операторы VB и таже логика построения | |
|
| |
|
|
|
| Она про IIF знает но незнает как сней работат) | |
|
| |
|
|
|
| Спасибочки!
Я успела сама решить эту задачу, почти испортив себе зрение, потому как очень надо было срочно решать проблему с торговым классификатором.
Но это только потому, что это первый раз, когда мне вообще когда либо коротко и внятно помогли на форумах...
Чаще были ответы, не имеющие отношения. к вопросу.
А за функцию nz отдельное спасибо! - я про нее вообще не вспомнила :-)). | |
|
| |
|
|
|
| >Причем какие то из из полей в записях пустые
Public Sub tstnull()
Dim s$
Dim s2$
s = "111"
s2 = Null
Debug.Print s & s2 'Результат 111
Debug.Print s + s2 'Результат Null
End Sub
Т.о., если мы уверены, что хотя бы одно поле не Null, надо пользоваться &. И не надо NZ. | |
|
| |
|
|
|
| она же без вба хочет | |
|
| |
|
|
|
| на brainfuck'e!? | |
|
| |
|
|
|
| ага | |
|
| |
|
|
|
| дык. Это пример. Можно в запросе так поля сконкатенировать. | |
|
| |
|
|
|
| Спасибо за ответ. Я все это проштудирую, надо только немножко времени :-) | |
|
| |
|
|
|
| NataliX, вам следует знать, что конкатенацию строк можно выполнять символом "&" и "+".
Разница в следующем:
"Строка" & Null - получаем "Строка"
"Строка" + Null - получаем Null
Вашу задачу проще решить комбинацией этих символов:
Кат1+ "/" & Кат2 + "/" & Кат3 + "/" & Кат4 + "/" & Кат5.
Но надо помнить, что "+" не допускает использования єлементов типа Число и Дата, их надо преобразовать в строку функцией CStr или Str. | |
|
| |
|
|
|
| Спасибо большое!
У меня маленькая база знаний есть - я туда Ваш пример впихнула, ибо о таких нюансах и не подозревала.
Обещаю проштудировать как следует и запомнить как отче наш.
Вообще - мне очень помогли ответы на этом форуме. Я как то даже не очень и не надеялась... | |
|
| |
|
|
|
|
Я как то даже не очень и не надеялась...
| | |
|
| |