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


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



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



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

Код: vbnet
1.
2.
3.
Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL = Q.SQL & " WHERE ID=1"
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39201974
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зори здесь тихие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
Редактирование запроса из vba
    #39201976
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и не добавлять ничего в первый запрос.
Код: sql
1.
SELECT * FROM <первый запрос> WHERE ....
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202034
А зори здесь тихие
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelleМожно и не добавлять ничего в первый запрос.
Код: sql
1.
SELECT * FROM <первый запрос> WHERE ....

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

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

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

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

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

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

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

у меня матрешки были сделаны по всем основным задачам(и до сих пор работают)
для продвинутых пользователей было сделана оболочка, которая позволяла выводить нужные поля в нужной сортировке в ворд/ексель
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202085
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ого сколько варинтов, спасибо буду пробовать)
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202099
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noobsОго сколько варинтов, спасибо буду пробовать)Их всего два - менять текст SQL и не менять.)))
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202125
А зори здесь тихие
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichellenoobsОго сколько варинтов, спасибо буду пробовать)Их всего два - менять текст SQL и не менять.)))+1
Может мы не там смотрим? :)
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202156
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Строка добавляется, запрос работает возвращает значения, но если сделать CopyFromRecordset rs в excel нияего не вставляется.
Из-за чего это может быть?
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202162
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код давайте
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202187
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Редактирование запроса из vba
    #39202217
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяйте, что возвращает 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
Редактирование запроса из vba
    #39202228
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сформированный запрос в 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
Редактирование запроса из vba
    #39202233
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
watch тоже показывает что данные есть в rs
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202271
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще проблема с остатком, почему то не вычитает сумму-факт
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202277
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
#Ошибка в колонке Остаток меня смущает, возможно, это влияет на вывод. Попробуйте заменить DogReport на любой другой запрос без ошибок и запустить еще раз, чтобы понять где проблема - в запросе или в остальном
...
Рейтинг: 0 / 0
Редактирование запроса из vba
    #39202667
noobs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,

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


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