Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Редактирование запроса из vba  [new]
noobs
Guest
Добрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
select * from t1

Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.
28 мар 16, 12:17    [18985774]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1496
noobs
Добрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
select * from t1


Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.

А зачем?
Если у вас динамические запросы, то сохраняйте их в таблице.
Очень даже удобно.
28 мар 16, 12:24    [18985797]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
А зори здесь тихие
Member

Откуда:
Сообщений: 1720
noobs
Добрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
select * from t1


Мне нужно добавить, чтобы по кнопке в этот запрос добавилась строка с where.
А в чём проблема-то?
Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL = "Здесь новый текст своего запроса"
28 мар 16, 12:27    [18985807]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
А зори здесь тихие,
С использованием QueryDefs проблем вообще нет.
Я думал есть какой-то способ просто добавить строку к существующему запросу.
28 мар 16, 12:29    [18985819]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
MrShin
Member

Откуда:
Сообщений: 1113
Ну и добавляйте, в чем трудность?

Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL = Q.SQL & " WHERE ID=1"
28 мар 16, 12:35    [18985843]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1496
А зори здесь тихие
noobs
Добрый день, подскажите как изменить сохраненный запрос?
Есть запрос типа
select * from t1



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


Dim Q as querydef
SET Q =  currentdb.querydefs("ваш запрос")
Q.SQL =Q.SQL &  " Здесь дополнительный текст"
[/quote]
Нет Не то?
28 мар 16, 12:37    [18985847]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
__Michelle
Member

Откуда:
Сообщений: 2913
Можно и не добавлять ничего в первый запрос.
SELECT * FROM <первый запрос> WHERE ....
28 мар 16, 12:39    [18985859]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
А зори здесь тихие
Member

Откуда:
Сообщений: 1720
__Michelle
Можно и не добавлять ничего в первый запрос.
SELECT * FROM <первый запрос> WHERE ....
можно и так.
Но, КМК, это лишне.
Зачем делать выборку по всему набору, а потом делать из неё выжимку?
28 мар 16, 13:28    [18986095]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
__Michelle
Member

Откуда:
Сообщений: 2913
А зори здесь тихие
__Michelle
Можно и не добавлять ничего в первый запрос.
SELECT * FROM <первый запрос> WHERE ....
можно и так.
Но, КМК, это лишне.
Зачем делать выборку по всему набору, а потом делать из неё выжимку?
Смысл возможен,
если в <первом запросе> есть вычисляемые поля и WHERE второго запроса применяется к этим полям.
А так, да, просто как способ "не портить текст запроса".)))
28 мар 16, 13:38    [18986127]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4305
А зори здесь тихие
Зачем делать выборку по всему набору, а потом делать из неё выжимку?


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

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

скорость/время не лимитировали
28 мар 16, 13:43    [18986154]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
А зори здесь тихие
Member

Откуда:
Сообщений: 1720
ПЕНСИОНЕРКА
делала и достаточно часто
а теперь делаете? :)

ПЕНСИОНЕРКА
скорость/время не лимитировали
28 мар 16, 13:45    [18986162]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4305
А зори здесь тихие,

кстати вычисляла при этом износ, остаточную стоимость, категорию возраста и еще пяток расчетных величин (задача --основные средства)
28 мар 16, 13:47    [18986171]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4305
А зори здесь тихие,

у меня матрешки были сделаны по всем основным задачам(и до сих пор работают)
для продвинутых пользователей было сделана оболочка, которая позволяла выводить нужные поля в нужной сортировке в ворд/ексель
28 мар 16, 13:51    [18986192]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
Ого сколько варинтов, спасибо буду пробовать)
28 мар 16, 14:01    [18986258]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
__Michelle
Member

Откуда:
Сообщений: 2913
noobs
Ого сколько варинтов, спасибо буду пробовать)
Их всего два - менять текст SQL и не менять.)))
28 мар 16, 14:10    [18986324]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
А зори здесь тихие
Member

Откуда:
Сообщений: 1720
__Michelle
noobs
Ого сколько варинтов, спасибо буду пробовать)
Их всего два - менять текст SQL и не менять.)))
+1
Может мы не там смотрим? :)
28 мар 16, 14:29    [18986467]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
Строка добавляется, запрос работает возвращает значения, но если сделать CopyFromRecordset rs в excel нияего не вставляется.
Из-за чего это может быть?
28 мар 16, 14:42    [18986574]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
MrShin
Member

Откуда:
Сообщений: 1113
Код давайте
28 мар 16, 14:45    [18986594]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
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
28 мар 16, 15:05    [18986741]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
MrShin
Member

Откуда:
Сообщений: 1113
Проверяйте, что возвращает DogReport. Только что проверил у себя - все работает:

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-х столбцов, все корректно вывелось с наваниями колонок в первой строке. Прогоните под отладчиком
28 мар 16, 15:21    [18986835]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
Сформированный запрос в debug выглядит вот так
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
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' ));

Результат

К сообщению приложен файл. Размер - 11Kb
28 мар 16, 15:29    [18986883]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
watch тоже показывает что данные есть в rs

К сообщению приложен файл. Размер - 65Kb
28 мар 16, 15:34    [18986905]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
Еще проблема с остатком, почему то не вычитает сумму-факт
28 мар 16, 16:08    [18987057]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
MrShin
Member

Откуда:
Сообщений: 1113
#Ошибка в колонке Остаток меня смущает, возможно, это влияет на вывод. Попробуйте заменить DogReport на любой другой запрос без ошибок и запустить еще раз, чтобы понять где проблема - в запросе или в остальном
28 мар 16, 16:10    [18987072]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование запроса из vba  [new]
noobs
Guest
MrShin,

пробовал, результат такой же
29 мар 16, 06:35    [18989077]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить