|
|
|
| Привет все. Вот ситуевина. В форме1 подчиненная форма 2, на которую повешана подчиненная форма 3. При закрытии формы 1 необходимо проверить, есть ли информация в форме 3 и если там ничего нет, то соответствующую строку в форме 2 удалить.
На закрытие форму1 пишу
Forms![Форма1]![Форма3].SetFocus
If Forms![Форма1]![Форма3].form.recodsetcount=0 Then
If MsgBox("Удалить запись?", vbInformation + vbDefaultButton1 + vbYesNo) = vbOK Then
DoCmd.RunSQL "DELETE [Таблица].КодID, [Таблица].* FROM [Таблица] WHERE ((([Таблица].КодID)=[Forms]![Форма1]![Форма2]![КодID])); ", -1
Ну и так далее.
Ругается на метод recordsetcount. К дебугу отправляет и все. Чего ему не так?
И так пробовал
If Forms![Форма1]![Форма3].Form.RecordsetClone.Count = 0 ругается на метод и все тут. | |
|
| |
|
|
|
|
| Да с этим разобрался.
t = Forms![Форма1]![Форма2].Form![КодID]
If Forms![Форма1]![Форма3].Form.RecordsetClone.RecordCount = 0 Then
If MsgBox("Удалить запись? " & t, vbYesNo) = vbOK Then 'если в поле 0 значит ничего нет
DoCmd.RunSQL "DELETE [Таблица].КодID, [Таблица].* FROM [Таблица] WHERE ((([Таблица].КодID)=t)); ", -1
И этот recordcount считает (проверял через msgbox), и в данном случае правильно ID выбирает. Но запрос не удаляет блин! Проскакивает какбудто нет его. А все остальное делает как надо. Чего в нем не так? Синтаксис блин.
Это код на отдельную кнопку уже для закрытия формы. | |
|
| |
|
|
|
| ...WHERE ((([Таблица].КодID)=t));"
Зачем вы имя переменной вставили внутрь строки?
...WHERE [Таблица].КодID=" & t & ";"
|
это если t - целое число | |
|
| |
|
|
|
| Правильно ругается, где вы такие методы нашли?
Используйте
....Form.Recordset.RecordCount
или
....Form.RecordsetClone.RecordCount | |
|
| |
|
|
|
| Да разобрался с этим. Запрос не запускает. Проскакивает какбудто нет его. | |
|
| |
|
|
|
| конечно будет пролетать у Вас t внутри текста
надо както так "Select ....... " & t & " и далее | |
|
| |
|
|
|
| Спасибо все. Да уж хотел сократить код. Не вышло. Сейчас все работает. Пришлось через макрос, сохранить как модуль. Тут то и выяснилось. Однако загвоздка во втором if запускающим msgbox. Заремил
If Forms![Форма1]![Форма2].Form.RecordsetClone.RecordCount = 0 Then
'If MsgBox("Удалить запись? ", vbYesNo) = vbOK Then 'если в поле 0 значит ничего нет
DoCmd.RunSQL "DELETE [Таблица].КодID, [Таблица].* FROM [Таблица] WHERE ((([Таблица].КодID)=[Forms]![Форма1]![Форма2]![КодID])); ", -1
...
Поставил на закрытие формы все ок. ОДнако что во втором msgbox е не так? Если он запускается, то запрос не работает. Если заремил как сейчас, то все удаляет как и положено. Мистика блин. Бум дум. | |
|
| |
|
|
|
| Нашел блин. Вот где собака порылась:
ись? ", vbYesNo) = vbOK
А надо было ись? ", vbYesNo) = vbYes
И все пошло заработало. Еще раз всем спасибо. Синтаксис блин. | |
|
| |