powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / sql-запрос в vba
2 сообщений из 2, страница 1 из 1
sql-запрос в vba
    #35734160
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо из файла dbf следующего вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
REGN	PLAN	NUM_SC	A_P	VR
 1000 	А	 10207 	 2 	 23064358 
 1000 	А	 10601 	 2 	 2295185 
 1000 	А	 10602 	 2 	 7837 
 1000 	А	 10701 	 2 	 1501745 
 1000 	А	 10801 	 2 	 15731352 
 1000 	А	 20202 	 1 	 2041224 
 1000 	А	 20203 	 1 	 0 
 1000 	А	 20208 	 1 	 2187026 
 1000 	А	 20209 	 1 	 70382 
 1000 	А	 20210 	 1 	 0 
 1000 	А	 30102 	 1 	 25865155 
 1000 	А	 30109 	 2 	 49747 
выгрузить в excel показатели.
логика такая:
сравниваем с 1 справочником (столвик А в excel) значения в колонке regn.
для каждого значения из справочника 1 ищем все совпадения справочника 2 с колонкой PLAN и суммируем показатели колонки VR, соответствующие строке PLAN.
В итоге на каждое REGN из справочника 1 будет 1 значение суммы. Помогите плиз., надо из VBA делать sql-запросы, а я их никогда не писал.
Спасибо!
...
Рейтинг: 0 / 0
sql-запрос в vba
    #35734473
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как-нибудь так.

Код: 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.
Sub X()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim rng As Excel.Range
    Dim lngSumma As Long
    
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Set rng = [A1:A2]
    
    cnn.Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\1;"
    rst.Open "SELECT * FROM Test.dbf ORDER BY REGN", cnn, , , adCmdText
    
    For Each rng In rng.Cells
        lngSumma =  0 
    
        Do Until rst.EOF
            If rng.Value = rst!REGN Then
                lngSumma = lngSumma + rst!VR
            End If
        rst.MoveNext
        Loop
        
        rng.Offset( 0 ,  1 ).Value = lngSumma
    Next rng
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing
End Sub
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / sql-запрос в vba
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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