Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация данных с SQL / 8 сообщений из 8, страница 1 из 1
12.09.2007, 18:49
    #34795761
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
Есть данные взятые с помощью SQL запроса
Картинка таблицы http://rj.foto.radikal.ru/0709/20/c41ec79c89ce.jpg
Ид- Название- Вид- Ранг- Ответственный- Версия- Текущая (1)- Примечание
25 111111- (2)- (1) - Виктор - 1 - 0 - 15.05.2007
25 111111 - (2)- (1) - Виктор - 2 - 0 - 18.06.2007
25 111111 - (2) - (1) - Виктор - 3 - 1 - 05.07.2007
36 22222 - (1) - (1) - Саша - 1 - 0 - 17.05.2007
36 22222 - (1) - (4) - Саша - 2 - 0 - 07.08.2007
36 22222 - (1) - (4) - Саша - 3 - 1 - 21.09.2007
37 444444 - (1) - (1) - Саша - 1 - 0 - 09.05.2007
37 444444 - (2) - (1) - Оля - 2 - 1 - 17.06.2007
28 55555 -(1) - (1) - Валерий - 1 - 1 - 15.05.2007

Необходимо получить результат
25 111111 - (2) - (1) - Виктор - 3 - 1 - 05.07.2007
36 22222 - (1) - (4)изм.17.05.2007с(1) - Саша - 3 - 1 - 21.09.2007
37 444444 - (2)изм 09.05.2007с(1) - (1) - Оля - 2 - 1 - 17.06.2007
28 55555 - (1) - (1) - Валерий - 1 - 1 - 15.05.2007

Сравнивать данные только по виду и рангу. Если есть изменения, то добавить в вид и ранг дату изменения и предыдущее значение.
ИД идентификатор определяет задачу, Версия – версии изменений, Текущая (1) – показывает текущее значение.

Вывожу данные построчно в Word.(часть кода)
Код: 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 rs As New ADODB.Recordset
rs.Open sqlSP, ResSQLsp
While (Not rs.EOF)

wrd.Selection.TypeText CStr(rs( 0 ))
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft 
wrd.Selection.TypeText CStr(rs( 1 ))
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.TypeText CStr(rs( 2 ))
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.TypeText CStr(rs( 3 ))
wrd.Selection.MoveRight Unit:=wdCell


If IsNull(rs( 4 )) Then
    wrd.Selection.TypeText Text:=""
Else
    wrd.Selection.TypeText CStr(rs( 4 ))
End If
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.TypeText CStr(rs( 5 )) 'DateFormat(rs(5), pjDate_mm_dd_yyyy)
wrd.Selection.MoveRight Unit:=wdCell

rs.MoveNext
Wend
rs.Close
КАК правильно и корректно данные обработать с помощью VBA? Возможно их забросить в массив и там обработать?
...
Рейтинг: 0 / 0
13.09.2007, 15:21
    #34798052
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
Ид Название Вид Ранг Ответственный Версия Текущая (1) Примечание25 111111 (2) (1) Виктор 1 0 15.05.200725 111111 (2) (1) Виктор 2 0 18.06.200725 111111 (2) (1) Виктор 3 1 05.07.200736 22222 (1) (1) Саша 1 0 17.05.200736 22222 (1) (4) Саша 2 0 07.08.200736 22222 (1) (4) Саша 3 1 21.09.200737 444444 (1) (1) Саша 1 0 09.05.200737 444444 (2) (1) Оля 2 1 17.06.200728 55555 (1) (1) Валерий 1 1 15.05.2007

Необходимо получить на выходе вот такой результат
Ид Название Вид Ранг Ответственный Версия Текущая (1) Примечание25 111111 (2) (1) Виктор 3 1 05.07.200736 22222 (1) (4)изм.17.05.2007с(1) Саша 3 1 21.09.200737 444444 (2)изм 09.05.2007с(1) (1) Оля 2 1 17.06.200728 55555 (1) (1) Валерий 1 1 15.05.2007

Сравнивать данные только по виду и рангу. Если есть изменения, то добавить в вид и ранг дату изменения и предыдущее значение.
ИД идентификатор определяет задачу, Версия – версии изменений, Текущая (1) – показывает текущее значение.
Как правильно и корректно данные обработать с помощью VBA? Возможно их забросить в массив и там обработать?

Вывожу данные построчно в Word.(часть кода)
Код: 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 rs As New ADODB.Recordset
rs.Open sqlSP, ResSQLsp
While (Not rs.EOF)

wrd.Selection.TypeText CStr(rs( 0 ))
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft 
wrd.Selection.TypeText CStr(rs( 1 ))
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.TypeText CStr(rs( 2 ))
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.TypeText CStr(rs( 3 ))
wrd.Selection.MoveRight Unit:=wdCell


If IsNull(rs( 4 )) Then
    wrd.Selection.TypeText Text:=""
Else
    wrd.Selection.TypeText CStr(rs( 4 ))
End If
wrd.Selection.MoveRight Unit:=wdCell

wrd.Selection.TypeText CStr(rs( 5 )) 'DateFormat(rs(5), pjDate_mm_dd_yyyy)
wrd.Selection.MoveRight Unit:=wdCell

rs.MoveNext
Wend
rs.Close
...
Рейтинг: 0 / 0
13.09.2007, 15:27
    #34798077
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
Зачем вам делать это в VBA, когда то же самое можно получить одним SQL-запросом?
...
Рейтинг: 0 / 0
13.09.2007, 15:30
    #34798091
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
а запросом не получается?



I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
13.09.2007, 16:19
    #34798320
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
Пока не получается
...
Рейтинг: 0 / 0
13.09.2007, 16:42
    #34798404
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Select 
  T1.Ид,
  T1.Название,
  T1.Вид,
  case when T2.Вид <> T1.Вид Then Cast(T2.Примечание  As VarChar( 50 )) + ' ' + Cast(T2.Вид As VarChar(50)) Else '' End [Изменение],
  T1.Ранг,
  case when T2.Ранг<> T1.РангThen Cast(T2.РангAs VarChar( 50 )) + ' ' + Cast(T2.РангAs VarChar(50)) Else '' End [Изменение],
  T1.Ответственный,
  T1.Версия,
  T1.Текущая,
  T1.Примечание 
From
  MyTable T1
Left Outer Join MyTable T2 On T2.Ид = T1.Ид
Where
  T1.Текущая =  1 

примерно так



I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
13.09.2007, 19:32
    #34799040
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
Буду создавать двумерный массив.
Как подсчитать количество полученных строк от ADODB?
...
Рейтинг: 0 / 0
13.09.2007, 20:52
    #34799143
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных с SQL
32sashaБуду создавать двумерный массив.Лучше напиши SQL-statement. Быстрее будет работать и в будущем проще будет исправлять.

32sashaКак подсчитать количество полученных строк от ADODB?Выбрать весь резалтсет, после этого узнаешь.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация данных с SQL / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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