Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Редактирование запроса из vba / 25 сообщений из 31, страница 1 из 2
28.03.2016, 12:17
    #39201940
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Добрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
Код: vbnet
1.
select * from t1


Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.
...
Рейтинг: 0 / 0
28.03.2016, 12:24
    #39201956
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
noobsДобрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
Код: vbnet
1.
select * from t1



Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.
А зачем?
Если у вас динамические запросы, то сохраняйте их в таблице.
Очень даже удобно.
...
Рейтинг: 0 / 0
28.03.2016, 12:27
    #39201959
А зори здесь тихие
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
noobsДобрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
Код: vbnet
1.
select * from t1



Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.А в чём проблема-то?
Код: vbnet
1.
2.
3.
Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL = "Здесь новый текст своего запроса"
...
Рейтинг: 0 / 0
28.03.2016, 12:29
    #39201965
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
А зори здесь тихие,
С использованием QueryDefs проблем вообще нет.
Я думал есть какой-то способ просто добавить строку к существующему запросу.
...
Рейтинг: 0 / 0
28.03.2016, 12:35
    #39201973
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Ну и добавляйте, в чем трудность?

Код: vbnet
1.
2.
3.
Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL = Q.SQL & " WHERE ID=1"
...
Рейтинг: 0 / 0
28.03.2016, 12:37
    #39201974
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
А зори здесь тихиеnoobsДобрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
Код: vbnet
1.
select * from t1




Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.А в чём проблема-то?
Код: vbnet
1.
2.
3.
Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL = "Здесь новый текст своего запроса"



Код: vbnet
1.
2.
3.
Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL =Q.SQL &  " Здесь дополнительный текст"

[/quote]
Нет Не то?
...
Рейтинг: 0 / 0
28.03.2016, 12:39
    #39201976
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Можно и не добавлять ничего в первый запрос.
Код: sql
1.
SELECT * FROM <первый запрос> WHERE ....
...
Рейтинг: 0 / 0
28.03.2016, 13:28
    #39202034
А зори здесь тихие
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
__MichelleМожно и не добавлять ничего в первый запрос.
Код: sql
1.
SELECT * FROM <первый запрос> WHERE ....

можно и так.
Но, КМК, это лишне.
Зачем делать выборку по всему набору, а потом делать из неё выжимку?
...
Рейтинг: 0 / 0
28.03.2016, 13:38
    #39202043
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
А зори здесь тихие__MichelleМожно и не добавлять ничего в первый запрос.
Код: sql
1.
SELECT * FROM <первый запрос> WHERE ....

можно и так.
Но, КМК, это лишне.
Зачем делать выборку по всему набору, а потом делать из неё выжимку?Смысл возможен,
если в <первом запросе> есть вычисляемые поля и WHERE второго запроса применяется к этим полям.
А так, да, просто как способ "не портить текст запроса".)))
...
Рейтинг: 0 / 0
28.03.2016, 13:43
    #39202053
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
А зори здесь тихиеЗачем делать выборку по всему набору, а потом делать из неё выжимку?

делала и достаточно часто
--имела таблицу в 10т записей и 50 полей
--пяток справочников
--множество запросов на выборку, достаточно подобных

чтобы не создавать всякий раз матрешку из left join
--сделала ее один раз
--переведя латинские имена исходника в кириллицу
--все реальные запросы делались с этой матрешки

скорость/время не лимитировали
...
Рейтинг: 0 / 0
28.03.2016, 13:45
    #39202057
А зори здесь тихие
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
ПЕНСИОНЕРКАделала и достаточно частоа теперь делаете? :)

ПЕНСИОНЕРКА скорость/время не лимитировали
...
Рейтинг: 0 / 0
28.03.2016, 13:47
    #39202061
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
А зори здесь тихие,

кстати вычисляла при этом износ, остаточную стоимость, категорию возраста и еще пяток расчетных величин (задача -- основные средства )
...
Рейтинг: 0 / 0
28.03.2016, 13:51
    #39202066
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
А зори здесь тихие,

у меня матрешки были сделаны по всем основным задачам(и до сих пор работают)
для продвинутых пользователей было сделана оболочка, которая позволяла выводить нужные поля в нужной сортировке в ворд/ексель
...
Рейтинг: 0 / 0
28.03.2016, 14:01
    #39202085
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Ого сколько варинтов, спасибо буду пробовать)
...
Рейтинг: 0 / 0
28.03.2016, 14:10
    #39202099
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
noobsОго сколько варинтов, спасибо буду пробовать)Их всего два - менять текст SQL и не менять.)))
...
Рейтинг: 0 / 0
28.03.2016, 14:29
    #39202125
А зори здесь тихие
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
__MichellenoobsОго сколько варинтов, спасибо буду пробовать)Их всего два - менять текст SQL и не менять.)))+1
Может мы не там смотрим? :)
...
Рейтинг: 0 / 0
28.03.2016, 14:42
    #39202156
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Строка добавляется, запрос работает возвращает значения, но если сделать CopyFromRecordset rs в excel нияего не вставляется.
Из-за чего это может быть?
...
Рейтинг: 0 / 0
28.03.2016, 14:45
    #39202162
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Код давайте
...
Рейтинг: 0 / 0
28.03.2016, 15:05
    #39202187
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset("DogReport")
 Dim j As Integer
 Dim i As Integer
 
Set xlAPP = CreateObject("Excel.Application")
Set xlBook = xlAPP.Workbooks.Add
Set WS = xlBook.Worksheets(1)

WS.Cells(2, 1).CopyFromRecordset rs

j = 1
For i = 0 To rs.Fields.Count - 1
WS.Cells(1, j).Value = rs.Fields(i).Name
j = j + 1
Next i


xlAPP.Visible = True
...
Рейтинг: 0 / 0
28.03.2016, 15:21
    #39202217
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Проверяйте, что возвращает DogReport. Только что проверил у себя - все работает:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim WS As Excel.Worksheet
Dim rs As Recordset
Dim j As Integer
Dim i As Integer

Set rs = CurrentDb.OpenRecordset("tbl_Devices")
 

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set WS = xlBook.Worksheets(1)

WS.Cells(2, 1).CopyFromRecordset rs

j = 1
For i = 0 To rs.Fields.Count - 1
WS.Cells(1, j).Value = rs.Fields(i).Name
j = j + 1
Next i

xlApp.visible = True



tbl_Devices - маленькая таблица из 5 строк и 3-х столбцов, все корректно вывелось с наваниями колонок в первой строке. Прогоните под отладчиком
...
Рейтинг: 0 / 0
28.03.2016, 15:29
    #39202228
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Сформированный запрос в debug выглядит вот так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT Null AS Выражение1, NCI_VidDeyat_24.NCI_VidDeyat_24.name_24 AS Вид_работ,
 NCI_StrEd_18.NameStrEd AS Контрагент, NCI_KURATOR_1214.name_kurator AS Куратор_договора, 
NCI_Dogovor_25.nRegFrc AS Номер_договора, NCI_Dogovor_25.regNumSAP AS Номер_договора_СЦВД, 
NCI_Dogovor_25.name AS Наименование_договора, NCI_Dogovor_25.summa AS Сумма_по_договору_с_учетом_НДС,  SverkaDogSvr.PlanSum, SverkaDogSvr.FacktSum,
 (SverkaDogSvr.PlanSum-SverkaDogSvr.FacktSum) AS Остаток, Null AS Свободный_лимит
 FROM (((SverkaDogSvr LEFT JOIN NCI_VidDeyat_24 ON SverkaDogSvr.kod_24 = NCI_VidDeyat_24.kod_24) 
LEFT JOIN NCI_Dogovor_25 ON SverkaDogSvr.kod_25 = NCI_Dogovor_25.RegNumSAP) 
LEFT JOIN NCI_StrEd_18 ON NCI_Dogovor_25.nStrEd_2 = NCI_StrEd_18.nStrEd) 
LEFT JOIN NCI_KURATOR_1214 ON SverkaDogSvr.kod_kurator = NCI_KURATOR_1214.kod_kurator  
WHERE ((SverkaDogSvr.kod_kurator='291' and SverkaDogSvr.kod_upr='002-08' ));



DogReport
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT Null AS Выражение1, NCI_VidDeyat_24.NCI_VidDeyat_24.name_24 AS Вид_работ, 
NCI_StrEd_18.NameStrEd AS Контрагент, NCI_KURATOR_1214.name_kurator AS Куратор_договора, 
NCI_Dogovor_25.nRegFrc AS Номер_договора, NCI_Dogovor_25.regNumSAP AS Номер_договора_СЦВД, 
NCI_Dogovor_25.name AS Наименование_договора, NCI_Dogovor_25.summa AS Сумма_по_договору_с_учетом_НДС, SverkaDogSvr.PlanSum, SverkaDogSvr.FacktSum, 
(SverkaDogSvr.PlanSum-SverkaDogSvr.FacktSum) AS Остаток, Null AS Свободный_лимит
FROM (((SverkaDogSvr LEFT JOIN NCI_VidDeyat_24 ON SverkaDogSvr.kod_24 = NCI_VidDeyat_24.kod_24)
 LEFT JOIN NCI_Dogovor_25 ON SverkaDogSvr.kod_25 = NCI_Dogovor_25.RegNumSAP) 
LEFT JOIN NCI_StrEd_18 ON NCI_Dogovor_25.nStrEd_2 = NCI_StrEd_18.nStrEd)
 LEFT JOIN NCI_KURATOR_1214 ON SverkaDogSvr.kod_kurator = NCI_KURATOR_1214.kod_kurator
WHERE ((SverkaDogSvr.kod_kurator='291' and SverkaDogSvr.kod_upr='002-08' ));


Результат
...
Рейтинг: 0 / 0
28.03.2016, 15:34
    #39202233
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
watch тоже показывает что данные есть в rs
...
Рейтинг: 0 / 0
28.03.2016, 16:08
    #39202271
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
Еще проблема с остатком, почему то не вычитает сумму-факт
...
Рейтинг: 0 / 0
28.03.2016, 16:10
    #39202277
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
#Ошибка в колонке Остаток меня смущает, возможно, это влияет на вывод. Попробуйте заменить DogReport на любой другой запрос без ошибок и запустить еще раз, чтобы понять где проблема - в запросе или в остальном
...
Рейтинг: 0 / 0
29.03.2016, 06:35
    #39202667
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование запроса из vba
MrShin,

пробовал, результат такой же
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Редактирование запроса из vba / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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