powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл Do...Loop
25 сообщений из 69, страница 1 из 3
Цикл Do...Loop
    #32244272
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ленточная форма (Источник записей - табл. Калькуляция). Рассмотрим два поля этой формы: Поставщик (post) и Оплачено (opl). Поле оплачено заполняется из таблицы Касса в зависимости от значения в поле Поставщик, т.е. из кассы берутся данные об оплате, которые идентифицируются номером заказа и Поставщиком. Для заполнения поля оплачено я написал такую штуку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim d As DAO.Recordset
Dim n As DAO.Recordset

Set d = CurrentDb.OpenRecordset( "select * from cash where [поставщик] = '" & Me!post & "'" )
Set n = Me.Form.RecordsetClone
    If Not d.EOF Then
    n.MoveFirst
    d.MoveFirst
        Do Until d.EOF
            Me!opl = d( "расход" )
            d.MoveNext
            n.MoveNext
        Loop
    Else: Me!opl = ""
    End If
    d.Close


Но этот код заполняет все поле значениями, связанными только с текущей строкой в форме.
Что ж тут исправить???
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244290
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напиши у контрола в соурсе
=dlookup ("расход","cash","[поставщик] = '" & Me!post & "'")

криво, зато просто :)
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244303
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2sasha_1
Ошибка синтаксиса во введенном выражении: пропущен операнд или оператор...

Да и вообще, что это за функция такая? :)
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244307
GuDVin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dblookup
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244309
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bookmark забыл
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244310
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин.
ну вместо , надо ;
=dlookup ("расход";"cash";"[поставщик] = '" & Me!post & "'")
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244313
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо так
=dlookup ("расход" ; "cash" ; "[поставщик] = '" & Me!post & "'")

Теперь другая проблема:
Эта функция возвращает значение только для первостроки, причем помещает это значение в последней строке, которая для добавления заисей...
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244317
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первострока следует читать, как "первая строка"
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244323
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Nick987
и что мне с ним делать??? с bookmarkom :)
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244326
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Vsevolod V:
чего-то я не понял. почему первая строка.
напиши так
=dlookup ("расход";"cash";"[поставщик] = '" & [post] & "'")
у меня все работает правильно.
если не получится есть еще один вариант - правильный :)
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244337
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда переходишь по записям в Recordsetclone, на форме это не отражается, а в коде ты используешь ссылку на форму "Me!opl". Стало быть Me.bookmark = n.bookmark, если я правильно понял.
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244341
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати:
1) Я забыл, что выборка должна учитывать номер заказа, т.е параметра два :(
2) Предложенный тобой вариант вообще странно работает: он игнорирует условие и отображает первую строку таблицы Cash
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244346
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой вариант работает, как и первый вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim d As DAO.Recordset
Dim n As DAO.Recordset

Set d = CurrentDb.OpenRecordset( "select * from cash where [поставщик] = '" & Me!post & "' AND [Реф №] = '" & Forms!заказ!ref & "'" )
Set n = Me.Form.RecordsetClone
    If Not d.EOF Then
    n.MoveFirst
    d.MoveFirst
        Do Until d.EOF
            Me!opl = d( "расход" )
            Me.Bookmark = n.Bookmark
            d.MoveNext
            n.MoveNext
        Loop
    Else: Me!opl = ""
    End If
    d.Close
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244347
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
№;;%№%;№%№ .....
(это эмоции :)
поле у тебя что текст??? что ты его в кавычки запихал ???
или это все таки поле со списком ??? и там на самом деле код поставщика.
тогда убери нах кавычки (одинарные)
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244352
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вот такой вариант работает, как и первый вариант:
не занимайся ерундой. зачем самому пересчитывать рекордсет формы,
когда за тебя это прекрасно сделает Аксес.
Другой вариант:
в рекордсет формы подставь запрос в котором помимо табл Калькуляция
будет выщитываться и расход. И повесь это поле (расход) на сурс контрола.
Наслаждайся.
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244357
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boookmark д.б. до обращения к Me, а не после.
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244363
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда убери нах кавычки (одинарные)
Код поставщика выглядит так: 6/05 - тобишь текст

в рекордсет формы подставь запрос в котором помимо табл Калькуляция
будет выщитываться и расход. И повесь это поле (расход) на сурс контрола

Я с этого начинал... и запарился...
Ну что ж буду продолжать париться :))
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244371
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Nick987
Sorry, я просто не доконца соображаю что такое bookmark

И куда его не пихай работает одинаково...

Буду париться с рекордсурсом
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244385
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чего там парится-то?
select Калькуляция .*, cash.расход from Калькуляция inner join cash on
Калькуляция.Поставщик=cash.Поставщик
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244392
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если поле opl не связанное, то оно всегда будет заполняться одинаковыми значениями.
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244399
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Nick987, shasha_1
Еще немного и я признаюсь, что я пень

Всем спасибо! с рекордсурсом разобрался
сейчас попробую разобраться с рекордсетами (для интереса)
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244401
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
К посту от 11:34. А кто сказал, что у этих двух рекордсетов будет одинаковый порядок сортировки?
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244403
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Еще немного и я признаюсь, что я пень
мой комп в открытую признается, что он четвертый пень и ничего
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244409
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч
Спасибо за земечание...

2sasha_1
скромно квакает, что он 2-ой пенечек
Но мне до них видать далеко. У мен раздвоений личности(расчетверений тоже) нет. Так что я могу стать только одним пнем
...
Рейтинг: 0 / 0
Цикл Do...Loop
    #32244418
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АААА....
с рекордсурсом-то объект Recordset не является обновляемым :(
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл Do...Loop
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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