powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация данных с SQL
8 сообщений из 8, страница 1 из 1
Фильтрация данных с SQL
    #34795761
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть данные взятые с помощью 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
Фильтрация данных с SQL
    #34798052
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ид Название Вид Ранг Ответственный Версия Текущая (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
Фильтрация данных с SQL
    #34798077
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем вам делать это в VBA, когда то же самое можно получить одним SQL-запросом?
...
Рейтинг: 0 / 0
Фильтрация данных с SQL
    #34798091
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а запросом не получается?



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

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


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