Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удалить при закрытии
 
 автор: Гоблин   (08.11.2009 в 12:48)   личное сообщение
 
 

Привет все. Вот ситуевина. В форме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 ругается на метод и все тут.

  Ответить  
 
 автор: гамлет   (08.11.2009 в 13:16)   личное сообщение
 
 

попробуй dcount

  Ответить  
 
 автор: Гоблин   (08.11.2009 в 14:03)   личное сообщение
 
 

Да с этим разобрался.
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 выбирает. Но запрос не удаляет блин! Проскакивает какбудто нет его. А все остальное делает как надо. Чего в нем не так? Синтаксис блин.
Это код на отдельную кнопку уже для закрытия формы.

  Ответить  
 
 автор: Bellerofont   (08.11.2009 в 14:13)   личное сообщение
 
 

...WHERE ((([Таблица].КодID)=t));"
Зачем вы имя переменной вставили внутрь строки?

...WHERE [Таблица].КодID=" & t & ";" 

это если t - целое число

  Ответить  
 
 автор: Bellerofont   (08.11.2009 в 14:04)   личное сообщение
 
 

Правильно ругается, где вы такие методы нашли?
Используйте
....Form.Recordset.RecordCount
или
....Form.RecordsetClone.RecordCount

  Ответить  
 
 автор: Гоблин   (08.11.2009 в 14:05)   личное сообщение
 
 

Да разобрался с этим. Запрос не запускает. Проскакивает какбудто нет его.

  Ответить  
 
 автор: snipe   (08.11.2009 в 14:13)   личное сообщение
 
 

конечно будет пролетать у Вас t внутри текста
надо както так "Select ....... " & t & " и далее

  Ответить  
 
 автор: Гоблин   (08.11.2009 в 15:07)   личное сообщение
 
 

Спасибо все. Да уж хотел сократить код. Не вышло. Сейчас все работает. Пришлось через макрос, сохранить как модуль. Тут то и выяснилось. Однако загвоздка во втором 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 е не так? Если он запускается, то запрос не работает. Если заремил как сейчас, то все удаляет как и положено. Мистика блин. Бум дум.

  Ответить  
 
 автор: Гоблин   (08.11.2009 в 15:39)   личное сообщение
 
 

Нашел блин. Вот где собака порылась:
ись? ", vbYesNo) = vbOK
А надо было ись? ", vbYesNo) = vbYes
И все пошло заработало. Еще раз всем спасибо. Синтаксис блин.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList