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

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

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

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

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

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

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

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

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

Код: 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
11.06.2004, 15:13:17
    #32558351
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
На какой строке?
...
Рейтинг: 0 / 0
11.06.2004, 15:14:45
    #32558356
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
Код: 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
11.06.2004, 15:14:48
    #32558358
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
На какой строке этого кода ошибка сыплеться?

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

Может перед ордером тоже пробел поставить?
...
Рейтинг: 0 / 0
11.06.2004, 15:19:20
    #32558369
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
внимательно сравни обе строки (RecordSource в 2-х вариантах)- чудесы редки
кстати у сохраненного запроса нет чудесных свойств
сортировок параметров DISTINCTROW и прочего
...
Рейтинг: 0 / 0
11.06.2004, 15:21:40
    #32558380
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
сыплеться на Me.Флажок42 и на Me.ДатаВ
если отдельно
Me!НДС = Nz([Выполнение]) - Nz([Выполнение] / 1.2)
то работает
перед ордером пробел есть, это я уже тут переборьщила
загадочная функция отсчитывает обратным счетом НДС для разных дат
...
Рейтинг: 0 / 0
11.06.2004, 15:29:17
    #32558394
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
Me!НДС = Nz([Выполнение]) - Nz([Выполнение] / 1.2)
почему не
Me![НДС] = Nz([Выполнение]) - Nz([Выполнение] / 1.2)
...
Рейтинг: 0 / 0
11.06.2004, 15:29:56
    #32558398
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
автор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
11.06.2004, 15:31:01
    #32558402
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
Вот соурс формы
Код: 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
11.06.2004, 15:36:59
    #32558420
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource Формы
авторменя поразила эта строка
ИМХО - третье условие лишнее!
третья строка самая крутая.
до 1 января 2001 года НДС включался в стоимость незавершенного строительства
о потом нет
вот его то я и считаю (в смысле НЗП)
Процедурку я попробую,
просто я боюсь следующего.
если сейчас глючит после открытия формы с програмной загрузкой,
вдруг потом начнет глючить после програмного изменения соурса.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource Формы / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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