Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Циклический запрос на добавку


Автор: мслм 21.6.2006, 16:56
Здравствуйте!

Есть такой запрос на добавку:



Код

INSERT INTO tblТорговляЦенаКол ( IDДатаТорговля, ЦенаУсл, Цена, Продажа ) IN 'D:\Documents and Settings\Я\Мои документы\Проба.mdb'
SELECT tblТорговляДата.IDДатаТорговли, QryВводДанных.ЦенаУсл, QryВводДанных.Цена, QryВводДанных.Пдж1
FROM tblТорговляДата INNER JOIN QryВводДанных ON (tblТорговляДата.Магазин=QryВводДанных.Магазин) AND (tblТорговляДата.ДатаТорговли=QryВводДанных.Год_Месяц)
WHERE (((QryВводДанных.Пдж1)<>0));



Как его написать с таким циклическим изменением?:


Код

SELECT tblТорговляДата.IDДатаТорговли, QryВводДанных.ЦенаУсл, QryВводДанных.Цена, QryВводДанных.Пдж2
FROM tblТорговляДата INNER JOIN QryВводДанных ON (tblТорговляДата.Магазин=QryВводДанных.Магазин) AND (tblТорговляДата.ДатаТорговли=QryВводДанных.Год_Месяц + 1)
WHERE (((QryВводДанных.Пдж2)<>0));




Код

SELECT tblТорговляДата.IDДатаТорговли, QryВводДанных.ЦенаУсл, QryВводДанных.Цена, QryВводДанных.Пдж3
FROM tblТорговляДата INNER JOIN QryВводДанных ON (tblТорговляДата.Магазин=QryВводДанных.Магазин) AND (tblТорговляДата.ДатаТорговли=QryВводДанных.Год_Месяц + 2)
WHERE (((QryВводДанных.Пдж3)<>0));



И т.д. до 31-го.

Спасибо заранее. 

Автор: Ignat 21.6.2006, 16:59
мслм, вы уверены, что не ошиблись разделом? 


M
Ignat
Перемещаю из MySQL
 

Автор: Akina 21.6.2006, 17:19
Код

Sub InsertData()
   For i = 0 to 31
      strSQL = "SELECT tblТорговляДата.IDДатаТорговли, QryВводДанных.ЦенаУсл, QryВводДанных.Цена, QryВводДанных.Пдж3 " & _
               "FROM tblТорговляДата INNER JOIN QryВводДанных ON (tblТорговляДата.Магазин=QryВводДанных.Магазин) AND " & _
               "(tblТорговляДата.ДатаТорговли=QryВводДанных.Год_Месяц + " & CStr(i) & ") " & _
               "WHERE (((QryВводДанных.Пдж3)<>0));"
      DoCMD.RunSQL strSQL
   Next
End Sub
 

PS. Запрос на добавку - это в обюрократившенися столовой. А в SQL - запрос на добавление.  

Автор: мслм 22.6.2006, 09:32
Ignat , да, ты прав. Это аксесовские программы. Я не туда попал.

Akina, как ты правильно заметил, там циклически изменяется связь по Дате.
Но, наверно не заметил, циклически меняется еще и поле Пдж1, Пдж2, …, Пдж31 таблицы QryВводДанных.

QryВводДанных – это сводная таблица с полями: Магазин, Год_Месяц, ЦенаУсл, Цена, Пдж1, Пдж2, …, Пдж31.
Данные этой таблицы я должен перекопировать в другую таблицу с полями: Магазин, Дата, ЦенаУсл, Цена, Продажа.

Циклически менять поле с Пдж1 на Пдж2, …, Пдж31 у меня не получается. Вот здесь вся проблема.
  

Автор: Akina 22.6.2006, 10:12
Мда...  smile  "... Марь Иванна, мне бы Ваши проблемы ..."
Код

Sub InsertData()
   For i = 0 to 31
      strSQL = "SELECT tblТорговляДата.IDДатаТорговли, QryВводДанных.ЦенаУсл, QryВводДанных.Цена, QryВводДанных.Пдж" & trim(cstr(i+1)) & " " & _
               "FROM tblТорговляДата INNER JOIN QryВводДанных ON (tblТорговляДата.Магазин=QryВводДанных.Магазин) AND " & _
               "(tblТорговляДата.ДатаТорговли=QryВводДанных.Год_Месяц + " & CStr(i) & ") " & _
               "WHERE (((QryВводДанных.Пдж3)<>0));"
      DoCMD.RunSQL strSQL
   Next
End Sub


 

Автор: мслм 22.6.2006, 11:29
strSQL – текстовый? И там можно менять все что захочешь? В том числе и «QryВводДанных.Пдж " & trim(CStr(i)) & "»?

Но почему-то при запуске 0 реакции. smile  Хоть как.
   

Автор: Akina 22.6.2006, 12:22
Цитата(мслм @  22.6.2006,  12:29 Найти цитируемый пост)
strSQL – текстовый? 

а для чего, спрашивается, я TypePrefix указываю??? не, можешь вариантом сделать...

Цитата(мслм @  22.6.2006,  12:29 Найти цитируемый пост)
при запуске 0 реакции

Поставь брейкпойнт и посмотри что присваивается strSQL в рантайме. В конце концов попробуй тупо полученную в рантайме строку запихнуть в запрос Аксессовой базы.
 

Автор: dionisiu 27.6.2006, 12:51
замени ещё "WHERE (((QryВводДанных.Пдж3)<>0));" 
на
"WHERE (((QryВводДанных.Пдж" & trim(cstr(i+1)) & ")<>0));"
 

Автор: мслм 5.7.2006, 08:34
Спасибо, Akina. Ты здорово мне помог.
Списбо, dionisiu . 

Автор: dionisiu 4.8.2006, 09:05
Цитата

Спасибо, Akina. Ты здорово мне помог.
Списбо, dionisiu .  


это как? Модератору - спасибо, а мне Списбо? это чё это?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)