Здравствуйте, есть как всегда база, есть данные нужно из набора определённых данных собрать человеческий текст, тоесть
заданы ячейки с количеством окон фасада, тыла, торца,
заданы ячейки с количеством балконов фасада, тыла, торца
заданы ячейки с наличием решёток или ролставень на данные конструкции
Нужно чтобы в результате выходил читабельный текст,
типа на фасад выходит 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