Sql-запрос в vba
Формулировка задачи:
Мне надо из файла dbf следующего вида
логика такая:
сравниваем с 1 справочником (столвик А в excel) значения в колонке regn.
для каждого значения из справочника 1 ищем все совпадения справочника 2 с колонкой PLAN и суммируем показатели колонки VR, соответствующие строке PLAN.
В итоге на каждое REGN из справочника 1 будет 1 значение суммы. Помогите плиз., надо из VBA делать sql-запросы, а я их никогда не писал.
Спасибо!
выгрузить в excel показатели.
логика такая:
сравниваем с 1 справочником (столвик А в excel) значения в колонке regn.
для каждого значения из справочника 1 ищем все совпадения справочника 2 с колонкой PLAN и суммируем показатели колонки VR, соответствующие строке PLAN.
В итоге на каждое REGN из справочника 1 будет 1 значение суммы. Помогите плиз., надо из VBA делать sql-запросы, а я их никогда не писал.
Спасибо!
Решение задачи: «Sql-запрос в vba»
textual
Листинг программы
<font color="blue">Sub</font> X() <font color="blue">Dim</font> cnn <font color="blue">As</font> ADODB.Connection <font color="blue">Dim</font> rst <font color="blue">As</font> ADODB.Recordset <font color="blue">Dim</font> rng <font color="blue">As</font> Excel.Range <font color="blue">Dim</font> lngSumma <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Set</font> cnn = <font color="blue">New</font> ADODB.Connection <font color="blue">Set</font> rst = <font color="blue">New</font> ADODB.Recordset <font color="blue">Set</font> rng = [A1:A2] cnn.<font color="blue">Open</font> <font color="teal">"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\1;"</font> rst.<font color="blue">Open</font> <font color="teal">"SELECT * FROM Test.dbf ORDER BY REGN"</font>, cnn, , , adCmdText <font color="blue">For</font> <font color="blue">Each</font> rng <font color="blue">In</font> rng.Cells lngSumma = <font color="darkblue"><b>0</b></font> <font color="blue">Do</font> <font color="blue">Until</font> rst.EOF <font color="blue">If</font> rng.Value = rst!REGN <font color="blue">Then</font> lngSumma = lngSumma + rst!VR <font color="blue">End</font> <font color="blue">If</font> rst.MoveNext <font color="blue">Loop</font> rng.Offset(<font color="darkblue"><b>0</b></font>, <font color="darkblue"><b>1</b></font>).Value = lngSumma <font color="blue">Next</font> rng rst.<font color="blue">Close</font> cnn.<font color="blue">Close</font> <font color="blue">Set</font> rst = <font color="blue">Nothing</font> <font color="blue">Set</font> cnn = <font color="blue">Nothing</font> <font color="blue">End</font> <font color="blue">Sub</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д