powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource Формы
18 сообщений из 18, страница 1 из 1
RecordSource Формы
    #32558217
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте Люди...
Объясните кто-нибудь что происходит.
Ситуация такова.
Есть главная форма, в ней подчиненная
для подчиненной источником записи всегда служил хранимый запрос.
Возникла необходимость отражать в подчиненной форме данные двумя способами, с группировкой и без группировки.
Для этого я написала в VBA strSQL вух типов:
1 для всех записей
2 сгруппированный.
И товесила их
сгруппированный на событие открытия подчиненной формы,
и на две кнопки в главной -сргуппированный и нет
Все работает.
Но вот какая фишка
В самой подчиненной форме в VBA прописаны некоторые процедуры.
Так вот при новом способе загрузки данных начяли выскакивать ошибки в событиях формы,
а когда убрала с события открытия формы strSQL
и сделала снова источником строк хранимый запрос
все стало работать стабильно,
причем даже после нажатия на кнопки, которые меняют RecordSource формы
на точно такой же, который был на собитии открытия.

Ой, как я много написала...
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558243
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понял :(

Сделай 2 сохраненных запроса
1. обычный
2. с группировкой

по кнопкам их меняешь (прямо по имени)
me.sub1.form.recordsource = "vw1"
или
me.sub1.form.recordsource = "vw2"

В качестве соурса подформы пропиши второй запрос - чтобы не менять его при загрузке формы

PS: поля в запросах (по количеству и наименованиям) совпадают?
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558255
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поля совпадают
сделала именно так как ты советуешь
но тоолько с сохраненным запросом все правильно работает
авторВ качестве соурса подформы пропиши второй запрос - чтобы не менять его при загрузке формы
может соурс не на открытие вешать,
есть разница? например на загрузку, или еще куда
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558266
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторно тоолько с сохраненным запросом все правильно работает
И чем это плохо?

авторможет соурс не на открытие вешать,
есть разница? например на загрузку, или еще куда
Про разницу не в курсе, у меня везде нормально робит

PS: какие ошибки стали вылетать - текст ошибок, не плохо бы посмотреть :)
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558276
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повесь Debug.Print strSQL и когда возникнет ошибка
жми Ctrl+G смотри текст
обычные причины :
- отсутствие кавычек
- даты
- where с пустой строкой
- Null где нельзя
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558300
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторповесь Debug.Print strSQL и когда возникнет ошибка
жми Ctrl+G смотри текст
strSQL работает как часы
просто при открытии формы, если соурс не из сохраненного запроса а из strSQL , летят другие сабы,
например вычисление НДС и автоподстановка в поле со списком
авторИ чем это плохо?
На данном этапе это не плохо, просто раздражает, когда не можешь понять, в чем дело.
Мне 4 формы надо так переделать и потом в отпуск,
а вдруг без меня посыпиться все
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558303
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст ошибок где?

ИМХО - шаманить надо - что-то тут не чисто :(
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558344
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При програмной загрузки данных

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Выполнение_LostFocus()
If Me.Флажок42 =  0  And Me.ДатаВ < DateSerial( 2004 ,  1 ,  1 ) And Me.ДатаВ >= DateSerial( 2001 ,  1 ,  1 ) Then
      Me!НДС = Nz([Выполнение]) - Nz([Выполнение] /  1 . 2 )
   Else
       If Me.Флажок42 =  0  And Me.ДатаВ >= DateSerial( 2004 ,  1 ,  1 ) Then
       Me!НДС = Nz([Выполнение]) - Nz([Выполнение] /  1 . 18 )
       End If
End If
End Sub
вот на это событие ввскакивает ошибка компиляции
Method or data member not found
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558351
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На какой строке?
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558356
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_Open(Cancel As Integer)
Dim strSQL As String
strSQL = "SELECT трам пам пам" _
& " FROM ппппп" _
& " WHERE    ......." _
& "ORDER BY ...........;"
Debug.Print strSQL
Me.Внедренный1.Form.RecordSource = strSQL
End Sub
Вот загрузка данных
Может тут что ни так
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558358
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На какой строке этого кода ошибка сыплеться?

ЗЫ: так и не смог понять назначения этой загадочной функции :(
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558362
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторstrSQL = "SELECT трам пам пам" _
& " FROM ппппп" _
& " WHERE ......." _
& "ORDER BY ...........;"

Может перед ордером тоже пробел поставить?
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558369
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
внимательно сравни обе строки (RecordSource в 2-х вариантах)- чудесы редки
кстати у сохраненного запроса нет чудесных свойств
сортировок параметров DISTINCTROW и прочего
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558380
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сыплеться на Me.Флажок42 и на Me.ДатаВ
если отдельно
Me!НДС = Nz([Выполнение]) - Nz([Выполнение] / 1.2)
то работает
перед ордером пробел есть, это я уже тут переборьщила
загадочная функция отсчитывает обратным счетом НДС для разных дат
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558394
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me!НДС = Nz([Выполнение]) - Nz([Выполнение] / 1.2)
почему не
Me![НДС] = Nz([Выполнение]) - Nz([Выполнение] / 1.2)
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558398
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторIf Me.Флажок42 = 0 And Me.ДатаВ < DateSerial(2004, 1, 1) And Me.ДатаВ >= DateSerial(2001, 1, 1) Then

меня поразила эта строка
ИМХО - третье условие лишнее!

авторсыплеться на Me.Флажок42 и на Me.ДатаВ
А такие поля есть в запросе, который в Form_Open описан?

Что-бы не было непоняток, и не приходилось править в нескольких местах сразу (в случае изменения), я бы написал процедурку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub ChangeSource(byval xxx as Boolean)
if xxx then
 me.recordsource = "..."  ' Обычный
 
else
 me.recordsource = "..."  ' С группировкой
 
end if
End Sub

Соответственно:
Код: plaintext
1.
2.
Private Sub Form_Open(Cancel As Integer)
 Call Me.Внедренный1.Form.ChangeSource(fasle)
End Sub
И так же по нажатию на кнопки
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558402
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот соурс формы
Код: plaintext
SELECT Месторождения.[Шифр месторождения], Накопительная.КодД, Накопительная.ДатаВ AS ДатаВ, Nz( 0 ) AS Объект, "" AS ССР, Sum(Накопительная.Выполнение) AS Выполнение, Накопительная.[№ акта] AS [№ акта], "" AS [Примечание к выполнению], Sum(Накопительная.Списано) AS Списано, Sum(Накопительная.[В ценах 91г]) AS [В ценах 91г], Sum(Накопительная.[СМР тек]) AS [СМР тек], Sum(Накопительная.НДСсп) AS НДСсп, Sum(Накопительная.НДС) AS НДС, Sum(Накопительная.Введено) AS Введено, Sum(Накопительная.НДСввед) AS НДСввед FROM (Месторождения INNER JOIN Договора ON Месторождения.[Шифр месторождения]=Договора.[Шифр месторождения]) INNER JOIN Накопительная ON Договора.КодД=Накопительная.КодД GROUP BY Месторождения.[Шифр месторождения], Накопительная.КодД, Накопительная.ДатаВ, Nz( 0 ), Накопительная.[№ акта] HAVING (((Sum(Накопительная.Выполнение))<> 0 )) OR (((Sum(Накопительная.Списано))<> 0 )) OR (((Sum(Накопительная.[В ценах 91г]))<> 0 )) OR (((Sum(Накопительная.[СМР тек]))<> 0 )) OR (((Sum(Накопительная.НДС))<> 0 )) OR (((Sum(Накопительная.НДСсп))<> 0 )) OR (((Sum(Накопительная.Введено))<> 0 )) OR (((Sum(Накопительная.НДСввед))<> 0 )) ORDER BY Накопительная.ДатаВ; 
а это полный из загрузки
Код: plaintext
1.
2.
3.
4.
strSQL = "SELECT Месторождения.[Шифр месторождения], Накопительная.КодД, Накопительная.ДатаВ AS ДатаВ, Nz(0) AS Объект, """" AS ССР, Sum(Накопительная.Выполнение) AS [Выполнение], Накопительная.[№ акта] AS [№ акта], """" AS [Примечание к выполнению], Sum(Накопительная.Списано) AS [Списано], Sum(Накопительная.[В ценах 91г]) AS [В ценах 91г], Sum(Накопительная.[СМР тек]) AS [СМР тек], Sum(Накопительная.НДСсп) AS [НДСсп], Sum(Накопительная.НДС) AS [НДС], Sum(Накопительная.Введено) AS [Введено], Sum(Накопительная.НДСввед) AS [НДСввед]" _
& " FROM (Месторождения INNER JOIN Договора ON Месторождения.[Шифр месторождения] = Договора.[Шифр месторождения]) INNER JOIN Накопительная ON Договора.КодД = Накопительная.КодД" _
& " GROUP BY Месторождения.[Шифр месторождения], Накопительная.КодД, Накопительная.ДатаВ, Nz(0), Накопительная.[№ акта]" _
& " HAVING (((Sum(Накопительная.Выполнение)) <> 0)) Or (((Sum(Накопительная.Списано)) <> 0)) Or (((Sum(Накопительная.[В ценах 91г])) <> 0)) Or (((Sum(Накопительная.[СМР тек])) <> 0)) Or (((Sum(Накопительная.НДС)) <> 0)) Or (((Sum(Накопительная.НДСсп)) <> 0)) Or (((Sum(Накопительная.Введено)) <> 0)) Or (((Sum(Накопительная.НДСввед)) <> 0))" _
& " ORDER BY Накопительная.ДатаВ;"
...
Рейтинг: 0 / 0
RecordSource Формы
    #32558420
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторменя поразила эта строка
ИМХО - третье условие лишнее!
третья строка самая крутая.
до 1 января 2001 года НДС включался в стоимость незавершенного строительства
о потом нет
вот его то я и считаю (в смысле НЗП)
Процедурку я попробую,
просто я боюсь следующего.
если сейчас глючит после открытия формы с програмной загрузкой,
вдруг потом начнет глючить после програмного изменения соурса.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource Формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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