|
|
|
| На форме поле со списком групп, хочу забирать значение для др.поля на форме, при выборе опред. группы.
Не пишет ошибки, и не обрабатывает!?? В чем проблема не понимаю.
Подскажите, что-нибудь
Private Sub Группа_AfterUpdate()
Dim recst As Recordset
Set recst = CurrentDb.OpenRecordset("SELECT [SumInDay] FROM [Группы] WHERE [Группа] ='" & Me.Группа & "'")
If recst.RecordCount <> 0 Then
With rst
Me!Сумма = recst!SumInDay
End With
End If
recst.Close
Exit Sub
|
Может какие-то другие методы есть .. | |
|
| |
|
|
|
| Рекордсет точно не пустой?
зачем With rst ?
Может есть смысл в поле со списком в котором группы отображаются добавить столбец с данными из поля SumInDay, и данные из этого столбца подставлять в поле?
=me.группа.columns(2) ' 2 порядковый номер столбца начиная с 0 | |
|
| |
|
|
|
| Может мешать нЕверное заклинание:
| |
|
| |
|
|
|
| а зачем здесь открывать рекордсет?
Может лучше так
Private Sub Группа_AfterUpdate()
Dim lSum as Double
lSum = nz(DLookup("SumInDay","Группы","Группа ='" & Me.Группа & "'"),0)
If lSum <> 0 Then
Me.Сумма = lSum
End If
Exit Sub
|
| |
|
| |
|
|
|
| уж лучше рекордсет чем эти DLookup'ы
я эти D-функции стараюсь вообще не замечать :) | |
|
| |
|
|
|
| Скопирил, не работает через процедуру. Что еще более странно, что при подстановке в поле Сумма следующего:
=DLookUp("[SumInDay]";"Группы";"[Группа] = '" & Формы!Заказы!Группа & "'")
тоже ни на что не ругается и не подставляет значение? Аномалия | |
|
| |
|
|
|
| Рекордсет не пустой. Таблица Группы-->в ней 3 поля-->код, группа, SumInDay(Тип денежный) все заполнено.
Подставил в поле сумма выражение =me.группа.column(2) пишет #Имя? хотя в combobox "группа" сейчас отображаются 2 столбца: группа и Suminday
With убрал. ???
Может как-то через OpenArg и почему все же recordset не работает?? | |
|
| |
|
|
|
| If recst.RecordCount <> 0 Then
Me.Сумма = 0
do while not recst.EOF
Me.Сумма = me.Сумма+recst!SumInDay
recst.movenext
loop
End If | |
|
| |
|
10 Кб. |
|
| пример | |
|
| |
|
97 Кб. |
|
| Osmor: так я и сделал. Разобрался <Me. > не надо было ставить, но данные теперь не заносятся в таблицу "Заказы", т.к. датасорс изменился с поля "Сумма" на "=Группа.column(2)"
Как теперь это решить?? Базу прикрепил, подскажите что не так
Format:
НЕ Работает А зачем мне по записям переходить, у меня же одна запись?
Что не так с рекордсетом?? | |
|
| |
|
|
|
| Что с рекордсетом.... Рекордсет у вас по ходу пустой.
Поскольку присоединенный столбец в поле со списком "Группа" это столбец 1, то поле со списком принимает значения из поля КОД. т.е.
Me!Группа - вернет код который соответвует выбранной группе (1,2,3 и т.п.)
т.е. выш рекордсет будет пустой, т.е. в таблице нет записей у которых поле Группа равнялось бы числу.
ЧТо бызаработал Ваш вариант код должен быть таким
lSum = Nz(DLookup("SumInDay", "Группы", "код = " & Me!Группа), 0)
Me![Сумма].Value = lSum
|
или если реализовывать вариант с столбцом с ценой в поле со списком
Private Sub Группа_AfterUpdate()
Me![Сумма].Value = Nz(Me!Группа.Column(2), 0)
End Sub
|
| |
|
| |
|
94 Кб. |
|
| Да Osmor вы как всегда правы! Все зависит от номера присоединенного столбца, его типа данных и совместимого типа данных поля, к которому прикрепляем => код соответсвующий.
Делал через поле подстановки (Access организует связь и прикрепяет индекс. поле)
lSum = Nz(DLookup("S", "Группы", "[Код] = '" & Me.Группа & "'"), 0)
|
выдавал типичную ошибку для DlookUp "Предыдущая операция прервана пользователем"
При использовании селекта выбирающего только одно поле (в моем случае) [группы]работает, как
lSum = Nz(DLookup("SumInDay", "Группы", "Группа = " & Me!Группа), 0)
Me![Сумма].Value = lSum
|
так и:
Private Sub Группа_AfterUpdate()
Dim recst As Recordset
Set recst = CurrentDb.OpenRecordset("SELECT [SumInDay] FROM [Группы] WHERE [Группа] ='" & Me.Группа & "'")
If recst.RecordCount <> 0 Then
Me!Сумма = recst!SumInDay
End If
recst.Close
Exit Sub
End Sub
|
НО что не могу понять?:
При использовании этих двух способов при выполнении кода:
strSQL = "INSERT INTO [detail] ...
...
"" & Me!Сумма & ", " & Me!Группа& ");"
With DoCmd
.SetWarnings False
.RunSQL strSQL
|
выдает следующее: файл параметр.bmp
т.е. поле "группа" он обрабатывает, как параметр. ПОЧЕМУ?
Спасибо за информацию | |
|
| |
|
|
|
| вместо
Me!Сумма & ", " & Me!Группа& ");"
| возможно надо (Me!Группа - текстовое?)
Me!Сумма & ", '" & Me!Группа & "');"
|
| |
|
| |
|
|
|
| Точно, и всего то нужно было, оба варианта стали рабочими - с рекордсетом и DlookUp-ом.. | |
|
| |
|
|
|
| зачем вы поменяли присоединенный столбец? | |
|
| |
|
|
|
| Osmor, я сделал еще 2 варианта, в которых связь таблиц "Заказы" и "Группы" - по полям соот-но [группа] и [группа] (а не [группа] и [код]), что потребовало изменить тип данных поля [группа] таблицы "заказы" на строковый, точнее да поменял в рекордсорсе
SELECT Группы.Группа, Группы.Код
|
с присоединенный столбец "2" на "1"
а выбор значения в каждом из вариантов - через dlookup и recordset.
Только в таблицу заказы вместо кода группы улетает наименование группы.
Это не есть хорошо???
При связи по полю [код], все тоже работает и через рекордсет:
Private Sub Группа_AfterUpdate()
Dim recst As Recordset
Set recst = CurrentDb.OpenRecordset("SELECT [SumInDay] FROM [Группы] WHERE [Код] =" & Me.Группа & "")
If recst.RecordCount <> 0 Then
Me!Сумма = recst!SumInDay
End If
recst.Close
Exit Sub
|
и через Dlookup
и через Группа.column(2), в общем все trabaja!
Как говорится Mucho gracias por todo | |
|
| |