-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Помогите разобраться в результате VBA

Понедельник, 22 Января 2018 г. 20:35 + в цитатник
Здравствуйте, есть как всегда база, есть данные нужно из набора определённых данных собрать человеческий текст, тоесть
заданы ячейки с количеством окон фасада, тыла, торца,
заданы ячейки с количеством балконов фасада, тыла, торца
заданы ячейки с наличием решёток или ролставень на данные конструкции
Нужно чтобы в результате выходил читабельный текст,
типа на фасад выходит 2 окна и один балкон, решёток нет,
или на фасад выходит 2 окна и один балкон, окно оборудовано ролставнями, балкон решёткой.
и так далее.


Private Sub Form_Current()
'Окна и балконы падежи и множественное число
    If [Окна_Ф] = 1 Then eofa = " окно" And eofm = " окно" Else If [Окна_Ф] = 2 Or [Окна_Ф] = 3 Or [Окна_Ф] = 4 Then eofa = " окна" And eofm = " окна" Else eofa = " окон" And eofm = " окна"
    If [Окна_Тор] = 1 Then eotr = " окно" And eotrm = " окно" Else If [Окна_Тор] = 2 Or [Окна_Тор] = 3 Or [Окна_Тор] = 4 Then eotr = " окна" And eotrm = " окна" Else eotr = " окон" And eotrm = " окна"
    If [Окна_Тыл] = 1 Then eot = " окно" And eotm = " окно" Else If [Окна_Тыл] = 2 Or [Окна_Тыл] = 3 Or [Окна_Тыл] = 4 Then eot = " окна" And eotm = " окна" Else eot = " окон" And eotm = " окна"
    If [Балк_Ф] = 1 Then ebf = " балкон" And ebfm = " балкон" Else If [Балк_Ф] = 2 Or [Балк_Ф] = 3 Or [Балк_Ф] = 4 Then ebf = " балкона" And ebfm = " балконы" Else ebf = " балконов" And ebfm = " балконы"
    If [Балк_Тор] = 1 Then ebtr = " балкон " And ebtrm = " балкон" Else If [Балк_Тор] = 2 Or [Балк_Тыл] = 3 Or [Балк_Тор] = 4 Then ebtr = " балкона " And ebtrm = " балконы" Else ebtr = " балконов " And ebtrm = " балконы"
    If [Балк_Тыл] = 1 Then ebt = " балкон " And ebtm = " балкон" Else If [Балк_Тыл] = 2 Or [Балк_Тыл] = 3 Or [Балк_Тыл] = 4 Then ebt = " балкона " And ebtm = " балконы" Else ebt = " балконов " And ebtm = " балконы"
'Обозначение наличия решеток
     If [Окна_Ф] > 1 Then If [Окна_Ф_Реш] = "решётки" Then resh10 = [Окна_Ф_Реш] Else If [Окна_Ф_Реш] = "ролставни" Then resh10 = [Окна_Ф_Реш] Else resh10 = 3 Else: resh10 = 4
     If [Балк_Ф] > 1 Then If [Балк_Ф_Реш] = "решётки" Then resh11 = [Балк_Ф_Реш] Else If [Балк_Ф_Реш] = "ролставни" Then resh11 = [Балк_Ф_Реш] Else resh11 = 3 Else: resh11 = 4
     If [Окна_Тор] > 1 Then If [Окна_Тор_Реш] = "решётки" Then resh12 = [Окна_Тор_Реш] Else If [Окна_Тор_Реш] = "ролставни" Then resh12 = [Окна_Тор_Реш] Else resh12 = 3 Else: resh12 = 4
     If [Балк_Тор] > 1 Then If [Балк_Тор_Реш] = "решётки" Then resh13 = [Балк_Тор_Реш] Else If [Балк_Тор_Реш] = "ролставни" Then resh13 = [Балк_Тор_Реш] Else resh13 = 3 Else: resh13 = 4
     If [Окна_Тыл] > 1 Then If [Окна_Тыл_Реш] = "решётки" Then resh14 = [Окна_Тыл_Реш] Else If [Окна_Тыл_Реш] = "ролставни" Then resh14 = [Окна_Тыл_Реш] Else resh14 = 3 Else: resh14 = 4
     If [Балк_Тыл] > 1 Then If [Балк_Тыл_Реш] = "решётки" Then resh15 = [Балк_Тыл_Реш] Else If [Балк_Тыл_Реш] = "ролставни" Then resh15 = [Балк_Тыл_Реш] Else resh15 = 3 Else: resh15 = 4
'Решёток нет
     If (resh10 = 3 Or resh10 = 4) And (resh11 = 3 Or resh11 = 4) And (resh12 = 3 Or resh12 = 4) And (resh13 = 3 Or resh13 = 4) And (resh14 = 3 Or resh14 = 4) And (resh15 = 3 Or resh15 = 4) Then resh20 = "Решётки или ролставни не установлены. "
'Решётки фасад и торец
     If (resh10 <> 3 Or resh10 <> 4) And (resh11 <> 3 Or resh11 <> 4) And (resh12 <> 3 Or resh12 <> 4) And (resh13 <> 3 Or resh13 <> 4) Then If resh10 = resh11 = resh12 = resh13 Then resh31 = "На" & eofm & " и" & ebtrm & " с фасада и торца установлены " & resh10 Else resh31 = "Со стороны фасада на " & eofm & " установлены " & resh10 & ", а на " & ebfm & " установлены " & resh10 & ", со стороны торца на " & eotrm & " установлены " & resh10 & ", а на " & ebtrm & " установлены " & resh10 Else:
'Решётки фасад и тыл
     If (resh10 <> 3 Or resh10 <> 4) And (resh11 <> 3 Or resh11 <> 4) And (resh14 <> 3 Or resh14 <> 4) And (resh15 <> 3 Or resh15 <> 4) Then If resh10 = resh11 = resh14 = resh15 Then resh32 = "На" & eofm & " и" & ebtrm & " с фасада и тыла установлены " & resh10 Else resh32 = "Со стороны фасада на " & eofm & " установлены " & resh10 & ", а на " & ebfm & " установлены " & resh10 & ", со стороны тыла на " & eotm & " установлены " & resh10 & ", а на " & ebtm & " установлены " & resh10 Else:
'Решётки торец и тыл
     If (resh12 <> 3 Or resh12 <> 4) And (resh13 <> 3 Or resh13 <> 4) And (resh14 <> 3 Or resh14 <> 4) And (resh15 <> 3 Or resh15 <> 4) Then If resh12 = resh13 = resh14 = resh15 Then resh33 = "На" & eofm & " и" & ebtrm & " с торца и тыла установлены " & resh10 Else resh33 = "Со стороны торца на " & eofm & " установлены " & resh10 & ", а на " & ebfm & " установлены " & resh10 & ", со стороны тыла на " & eotm & " установлены " & resh10 & ", а на " & ebtm & " установлены " & resh10 Else:
'Решётки фасад
     If (resh10 <> 3 Or resh10 <> 4) And (resh11 <> 3 Or resh11 <> 4) Then If resh10 = resh11 Then resh21 = "На" & eofa & " и" & ebfm & " с фасада установлены " & resh11 Else resh21 = "Со стороны фасада на " & eofa & " установлены " & resh10 & ", а на " & ebfm & " установлены " & resh11 Else
'Решётки торец
     If (resh12 <> 3 Or resh13 <> 4) And (resh12 <> 3 Or resh13 <> 4) Then If resh12 = resh13 Then resh22 = "На" & eofa & " и" & ebfm & " с торца установлены " & resh12 Else resh22 = "С торцевой стороны на " & eofa & " установлены " & resh12 & ", а на " & ebfm & " установлены " & resh13 Else
'Решётки тыл
     If (resh14 <> 3 Or resh15 <> 4) And (resh14 <> 3 Or resh15 <> 4) Then If resh14 = resh15 Then resh23 = "На" & eofa & " и" & ebfm & " с тыла установлены " & resh14 Else resh23 = "С тыльной стороны на " & eofa & " установлены " & resh14 & ", а на " & ebfm & " установлены " & resh15 Else
     Else:
     If resh10 = resh11 = resh12 = resh13 = resh14 = resh15 Then resh35 = "На всех" & eofm & " и" & ebfm & " установлены " & resh10 Else resh35 = "Со стороны фасада на " & eofm & " установлены " & resh10 & ", а на " & ebfm & " установлены " & resh10 & ", со стороны торца на " & eotrm & " установлены " & resh10 & ", а на " & ebtrm & " установлены " & resh10 & ", со стороны тыла на " & eotm & " установлены " & resh10 & ", а на " & ebtm & " установлены " & resh10
End If
S = resh20 & resh21 & resh22 & resh23 & resh24 & resh31 & resh32 & resh32 & resh35
Me.П_Описание = "                               " & S
End Sub



Код получился такой, только на выходе получается
" На всех и установлены "
вот так не могу понять почему, и если кто то может подсказать как уменьшить сие ЧУДО, буду признателен.
Заранее спасибо.

http://www.sql.ru/forum/1283220/pomogite-razobratsya-v-rezultate-vba


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку