|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.02.2012, 03:49 | #1 |
Пользователь
Регистрация: 14.01.2012
Сообщений: 17
|
Не работает вложенный цикл
Здравствуйте уважаемые! Прошу совета.
К примеру, имею в Access базу с двумя таблицами. В таблице «Даты» записываются только даты составления заявок. В таблице «Заявки» записаны дата, название детали, код и т.д. на каждую деталь за весь период. Т.к. в день может заказываться несколько деталей, то дата в «Заявках» повторяется. Пытаюсь сделать чтобы на лист Excel выводилась информация в виде отдельных таблиц по датам из «Заявок», типа: заявка за 01.01.2012 – дальше ее таблица с заявками за этот день, отступ на 2 строки, заявка за 03. 03.2012 и т.д. Пока пытаюсь на основе вложенного цикла вытащить даты т.е. беру дату из таблицы «Дата»(Основной цикл), и вытащить все записи с этой датой из таблицы «Заявки»(вложенный цикл). Что то не получается - вложенный цикл не работает – все идет по основному. Где неправильно? Извиняюсь за код, я – начинающий. Sub proba2() Dim db As ADODB.Connection Dim rs_data, rs_zayav As ADODB.Recordset Dim sql_data, sql_zayav, str_data, str_zayav As String Set rs_data = CreateObject("ADODB.Recordset") Set rs_zayav = CreateObject("ADODB.Recordset") Set db = New ADODB.Connection db.Open "Provider=Microsoft.Jet.OLEDB.4.0;D ata Source=D:\vba_t\Zakaz.mdb" sql_data = "SELECT * FROM `Даты`" '-- запрос к табл. Даты rs_data.Open sql_data, db '''''''''''''-- Цикл общий --''''''''''''''''''''''''''''''''''' '''' While Not rs_data.EOF str_data = rs_data.Fields("Дата").Value '-- запрос к табл. Заявки sql_zayav = "SELECT * FROM `Заявки` WHERE `Дата`=' " & str_data & " ' " rs_zayav.Open sql_zayav, db ''''''''''-- Вложенный цикл --''''''''''''''''''''''''''''''''''' '''' While Not rs_zayav.EOF str_zayav = rs_zayav.Fields("Дата").Value rs_zayav.MoveNext Wend '''''''''''''''''-- Конец вложенного цикла --''''''''''''''''''''''' rs_zayav.Close rs_data.MoveNext Wend '''''''''''''''''''-- Конец общего цикла --'''''''''''''''''''''''''' db.Close Set db = Nothing End Sub |
05.02.2012, 04:07 | #2 |
Участник клуба
Регистрация: 12.08.2010
Сообщений: 1,077
|
Код:
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание |
05.02.2012, 04:14 | #3 | |
Пользователь
Регистрация: 14.01.2012
Сообщений: 17
|
Цитата:
У меня дата в формате строки и запрос выполняется. Да дело не в этом - если циклы разделить они работают как надо, а так -не работает вложенный цикл, программа проскакивает его на общий и не читает. |
|
05.02.2012, 19:34 | #4 | |
Пользователь
Регистрация: 14.01.2012
Сообщений: 17
|
Цитата:
Но оказывается задачу можно решить по-другому: в цикл вставить QueryTable – и все получается даже лучше. Кому интересно, код: Sub проба() Dim db As ADODB.Connection Dim rs_data, rs_zayav As ADODB.Recordset Dim sql_data, sql_zayav, str_data As String Dim QT1 As QueryTable Set rs_data = CreateObject("ADODB.Recordset") Set rs_zayav = CreateObject("ADODB.Recordset") Set db = New ADODB.Connection db.Open "Provider=Microsoft.Jet.OLEDB.4.0;D ata Source=D:\vba_t\Zakaz.mdb" sql_data = "SELECT * FROM `Даты`" rs_data.Open sql_data, db '''''''''''-- Цикл --''''''''''''''''''''''''''''''''''' '''' While Not rs_data.EOF str_data = rs_data.Fields("Дата").Value sql_zayav = "SELECT * FROM Заявки WHERE `Дата`='" & str_data & "' " rs_zayav.Open sql_zayav, db Set QT1 = ActiveSheet.QueryTables.Add(rs_zaya v, Range("C15")) QT1.Refresh rs_zayav.Close rs_data.MoveNext Wend '''''''''''''''''''—Конец цикла --'''''''''''''''''''''''''' db.Close Set db = Nothing End Sub |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перестать выполнять вложенный цикл если условие истинно | n1l | Microsoft Office Excel | 8 | 25.01.2012 15:09 |
Тема: Вложенный цикл. | Кристина Н | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 04.12.2011 21:06 |
Двойной вложенный цикл | haim | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 30.01.2011 02:13 |
вложенный цикл FOR в вызываемой функции | lifeton | Общие вопросы Delphi | 6 | 02.06.2010 17:35 |
Switch вложенный в бесконечный цикл | coper | Общие вопросы C/C++ | 2 | 16.11.2009 02:31 |