powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Анализ 31-го числового поля для каждой записи
15 сообщений из 15, страница 1 из 1
Анализ 31-го числового поля для каждой записи
    #32529893
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боевая задача:

Таблица MyTable...поля f1,f2,f3,f4,f5...d1-d31

d1-d31 (дни месяца)...

В каждом из полей d1-d31 содержатся числа (например 22, 23, 22, 24, 22...)

Заранее известно, что в этот конкретный месяц в каждом из полей d1-d31 должна содержаться цифра 22 (либо ничего не содержаться)...

Необходимо - запуск функции - вывод формы содержащей информацию о том, что в записи такой-то в полях d1-d31 обнаружены следующие цифры: 22 - 3 раза, 23 - 1 раз, 24 - 1 раз и предложение пользователю заменить во всех полях d1-d31, содержащих что-либо, на 22, либо - 23 , либо - 24....

Решить в принципе и сам могу, но получается ужасно - временные таблицы и т.д. и т.п.
Вопрос как можно решить красивее и грамотнее. (без разницы - запросом или VBA...)

MSA 2002, VBA 6.3
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32529966
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При такой структуре таблицы, только руками :)

Или циклом через rs - если поля достаточно одинаково называются
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim rs As ...

rs.Open ... (ADO)
'Set rs = CurrentDb.OpenRecordset ... (DAO)

for i =  1  to  31 
  msgbox rs("d" & i)
next
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32529983
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome

Вот-вот, как раз цикл у меня и работает...
For each ctl in me
if typeof ctl is textbox then
if left(ctl.name) = "d" then
Вопрос - что написать здесь ???
end if
end if
next
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32529998
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВопрос - что написать здесь ???

Ну ды так и напиши :)

msgbox me(ctl.name)

?
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530011
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем мне msgbox me(ctl.name) ?
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530013
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может вопрос мой не так понятен ?
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530016
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну - я же не знаю что вам с этим полем надо делать, вот, в качестве примера, и написал его вывод в msgbox

что не понятно в конструкции me(ctl.name)
?
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530023
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C мсг все ясно, но будьте добры - перечитайте мой вопрос еще раз...
Там недетский анализ должен получиться...
А имена полей мне не нужны...
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530025
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо - запуск функции - вывод формы содержащей информацию о том, что в записи такой-то в полях d1-d31 обнаружены следующие цифры: 22 - 3 раза, 23 - 1 раз, 24 - 1 раз и предложение пользователю заменить во всех полях d1-d31, содержащих что-либо, на 22, либо - 23 , либо - 24....
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530038
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, может мне за вас и анализатор написать?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim colvo( 22  to  24 ) as integer

for i =  22  to  24  
colvo(i) =  0 
next

For each ctl in me
if typeof ctl is textbox then
if left(ctl.name) = "d" then
  select case me(ctl.name)
  case  22 : colvo( 22 ) = colvo( 22 ) +  1 
  case  23 : colvo( 23 ) = colvo( 23 ) +  1 
  case  24 : colvo( 24 ) = colvo( 24 ) +  1 
  end select
end if
end if
next

msgbox _
  "22 = " & colvo( 22 ) & vbcrlf & _
  "23 = " & colvo( 23 ) & vbcrlf & _
  "24 = " & colvo( 24 ) & vbcrlf
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530140
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо...
но есть вопросы:

22 23 24 - это пример...могут быть 1,2,30,1000 и т.д. тогда colvo(22 to 24) as integer писать как colvo(0 to 1000) as integer, а если появится 10000 ? И что тогда с кейсами...

еще раз спасибо...
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530150
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10 000 полей в таблице это круто
Deminik ты путаешь индекс массива и его(массива) значение
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530168
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Deminik

Еще раз повторюсь:
Это был пример. Мне следует за вас анализатор написать?

Используйте 2 массива (максимальная длина 31, по этой причине можно не использовать динамические)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Dim num( 1  to  31 ) as integer
Dim colvo( 1  to  31 ) as integer
Dim lst as integer
Dim n as integer
Dim i as integer

lst =  0 

For each ctl in me
if typeof ctl is textbox then
if left(ctl.name) = "d" then
 n = me(ctl.name)
 i =  1 
 while (i <= lst) and (num(i)<>n)
  i = i +  1 
 wend

 if i > lst then  /*Не найден - добавляем*/ 
  lst = lst +  1 
  num(lst) = n
  colvo(lst) =  1 
 else  /*Найден - увеличиваем*/ 
  colvo(i) = colvo(i) +  1 
 end if
end if
end if
next

for i =  1  to lst
  msgbox num(i) & " - " & colvo(i)
next
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530178
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо и извините за мучения....
...
Рейтинг: 0 / 0
Анализ 31-го числового поля для каждой записи
    #32530206
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос как можно решить красивее и грамотнее
"красивее и грамотнее" надо было думать когда структуру базы разрабатывал.
Посмотри здесь
/topic/93774&hl=#685875
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Анализ 31-го числового поля для каждой записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]