Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Срочный вопрос! / 12 сообщений из 12, страница 1 из 1
17.06.2010, 16:09
    #36692776
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
Добрый день! У меня такой вопрос. Мне нужно чтобы макро программа брала дату из поля ввода а значения id стран брала из столбца. ну и потом формировала данные записывая их в столбец. а у меня получается наоборот значения записываются в строку, что не есть правильно. помогите пожалуйста, в чем моя ошибка

Код: 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.
31.
dt = InputBox("Введите дату в формате дд.мм.гггг", "Ввод даты", Format(Date, "dd.mm.yyyy"))

Dim i As Integer
For i =  5  To  6  'ActiveSheet.Columns.Count

Dim j As Integer
For j =  3  To  253 

If Cells( 3 , i).Value = "" Then

Cells( 2 , i).Value = dt

Dim rs As ADODB.Recordset:         Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con

Sql = " select"
Sql = Sql & " sum(t.minuts)"
Sql = Sql & " from ip_statistics t"
Sql = Sql & " where t.day_reg >= to_date('" & dt & "', 'dd.mm.yyyy')"
Sql = Sql & " and t.day_reg < to_date('" & dt & "', 'dd.mm.yyyy')+1"
Sql = Sql & " and t.cou_cou_id = '" + Cells(j,  2 ).Text + "'"

rs.Open Sql, con
Sheets("Минуты").Select
Cells( 3 , i).CopyFromRecordset rs
rs.Close

Exit For
End If

Next j
Next i
...
Рейтинг: 0 / 0
17.06.2010, 16:19
    #36692826
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
прилагаю файл, где наглядно видно что мне нужно
...
Рейтинг: 0 / 0
17.06.2010, 23:10
    #36693724
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
hum_i,

Не вдаваясь в подробности инструкции SQL: попробуйте-таки использовать переменную j
(Зря Вы её объявляли, что-ли? )

У Вас должно быть, наверное, что-то вроде такого:
Код: plaintext
1.
2.
3.
4.
Cells(j, i).CopyFromRecordset rs
rs.Close

'Exit For ' Этого вообще не понял. Зачем?
...
Рейтинг: 0 / 0
17.06.2010, 23:13
    #36693727
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
И ещё
Код: plaintext
1.
2.
If Cells( 3 , i).Value = "" Then
'
End If
нужно вынести за пределы внутреннего цикла, наверное.
...
Рейтинг: 0 / 0
18.06.2010, 17:08
    #36695306
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
сейчас я исправила, что он заполняет в столбец. но вот теперь другая проблема, при повторном запуске он не прибавляет день, а обновляет заново
Код: 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.
31.
32.
33.
34.
35.
dt = InputBox("Введите дату в формате дд.мм.гггг", "Ввод даты", Format(Date, "dd.mm.yyyy"))

Dim i As Integer '--Дата--
For i =  5  To  10  'ActiveSheet.Columns.Count
i = i +  1 

Dim j As Integer '--Код страны--

For j =  3  To  253 

If Cells(j, i).Value = "" Then

Cells( 2 , i).Value = dt

Dim rs As ADODB.Recordset:         Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con

Sql = " select"
Sql = Sql & " sum(t.minuts)"
Sql = Sql & " from ip_statistics t"
Sql = Sql & " where t.day_reg >= to_date('" & dt & "', 'dd.mm.yyyy')"
Sql = Sql & " and t.day_reg < to_date('" & dt & "', 'dd.mm.yyyy')+1"
Sql = Sql & " and t.cou_cou_id = '" + Cells(j,  2 ).Text + "'"
Sql = Sql & " group by t.cou_cou_id"

rs.Open Sql, con
Sheets("Минуты").Select
Cells(j, i).CopyFromRecordset rs
rs.Close

'Exit For
End If

Next j
Exit For
Next i

подскажите в чем ошибка
...
Рейтинг: 0 / 0
18.06.2010, 18:58
    #36695582
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
hum_i,

что именно обновляет ?
Диапазон листа ?
...
Рейтинг: 0 / 0
18.06.2010, 18:59
    #36695585
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
hum_i,

Модератор: И попробуйте давать топикам осмысленные названия.
...
Рейтинг: 0 / 0
18.06.2010, 21:33
    #36695764
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
hum_i...при повторном запуске он не прибавляет день, а обновляет заново
Где должен прибавляться день и что должно обновляться? – поясните логику Вашей процедуры.
Как Вы её видите?
Без понимания, что Вы хотите сделать, указать причину не-понят-но-чего можно только наугад.

Замечания.
Код: plaintext
1.
2.
For i =  5  To  10  'ActiveSheet.Columns.Count
i = i +  1 
Это соответствует
Код: plaintext
For i =  6  To  10  Step  2 
Но (!) ячейки 8-го и 10-го столбцов заполнены не будут, поскольку в коде используется безусловный
выход из внешнего цикла сразу по окончании внутреннего.
Или внешний цикл Вам вообще не нужен?
...
Рейтинг: 0 / 0
19.06.2010, 08:57
    #36696017
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
i = 5 это значит начать заполнение с 5 столбца. в ячейке (2, 5) записывается дата, а ниже значения в столбик. далее при повторном запуске, значени 5 столбца не должно обновляться, а должно записываться в следующий 6-ой. но этого не происходит.
...
Рейтинг: 0 / 0
19.06.2010, 10:30
    #36696070
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
hum_ii = 5 это значит начать заполнение с 5 столбца.

Я уже сказал выше: Вы начинаете заполнение ячеек с 6-го столбца (i=i+1 в приведённом примере соответствует i=5+1) и, заполнив его, завершаете работу.

Код: plaintext
Cells( 2 , i).Value = dt
Расположение этой строки тоже вызывает недоумение: во внутреннем цикле содержимое i не меняется.
...
Рейтинг: 0 / 0
21.06.2010, 16:00
    #36698650
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
Не могли бы вы тогда подсказать как правильно тогда нужно сделать, нужно ли указывать ШАГ i+1, если нужно то где?

и где должна располагаться эта строчка?
Код: plaintext
Cells( 2 , i).Value = dt
...
Рейтинг: 0 / 0
21.06.2010, 23:49
    #36699445
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Срочный вопрос!
hum_i,

Я не вполне понимаю, что Вы творите, но логика подсказывает следущее:
Код: plaintext
1.
2.
3.
4.
Dim j As Integer '--Код страны--
For i =  5  To  10  'ActiveSheet.Columns.Count
  Cells( 2 , i).Value = dt
    For j =  3  To  253 
      '...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Срочный вопрос! / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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