DeleteFromTable

magoga
Дата: 02.06.2004 16:40:33
У меня не удаляется запись из таблицы.

Вообщем на Форме ест СубФорма с Листбоксом, а рядом кнопка. Нужно чтобы при нажатии на кнопку ключ выбранной строки Листбокса Субформы был в команде SQL и удалял запись в Таблице.

Есть Таблица Container
Форма Assets
Субформа ContainerList2Subform1

Написал следуещий Ивент на кнопку, но запись не удаляется из таблицы:


Private Sub RemoveSubDevice_Click()
On Error GoTo Err_RemoveSubDevice_Click


CurrentDb.Execute ("DELETE * FROM Container WHERE SubAsset=" & Me.[ContainerList2Subform1].Value & ";")
DoCmd.Close

Exit_SaveRemoveSubDevice_Click:
Exit Sub

Err_SaveRemoveSubDevice_Click:
MsgBox Err.Description
Resume Exit_SaveRemoveSubDevice_Click

End Sub


Что я сделал неправильно? Помогите
paparome
Дата: 02.06.2004 16:49:15
CurrentDb.Execute (strSQL, dbFailOnError)?

точно не удаляется? как ты это смотришь - нигде не видно обновление формы (субформы) после удаления записи.

и не понял - закрытие зачем стоит?
ищ
Дата: 02.06.2004 16:50:11
"на Форме ест СубФорма с Листбоксом"
"Субформа ContainerList2Subform1"

а почему ты подсовываешь в выражение
=" & Me.[ContainerList2Subform1].Value & ";")
субформу, а не Листбокс
у тебя же код находится в листбоксе
magoga
Дата: 02.06.2004 17:00:30
Я ошибся,- это обычная СубФорма, в которой есть столбцы из таблицы. Она просто выглядит как ЛистБокс.
Вообщем как мне вставит ключ из Строки Субформы в запрос, и как это так написать, чтобы правильно было. Да ешё, как сделать так, чтобы после выполнения команды было обновление формы/субформы

Заранее благодарен
paparome
Дата: 02.06.2004 17:04:21
Значит надо к полю этой субформы обращаться (в котором и находится ваше значение)

что-то типа

me.Sub1.Form.Text1

обновление

me.requery
или
me.recordsource = me.recordsource
magoga
Дата: 02.06.2004 17:21:19
me.Sub1.Form.Text1

А что за Форма эта? Там ведь иерархия такая: Форма>Субформа>ТекстБокс
И я вот что-то не понимаю- в Субформе появляется список типа ЛистБокс, а на самом деле в свойствай Субформы- это ТекстБокс. В Листбоксе нужно выбирать Value , а в Текстбоксе тогда что, просто название этого ТекстБокса?
paparome
Дата: 02.06.2004 17:24:46
автор
А что за Форма эта? Там ведь иерархия такая: Форма>Субформа>ТекстБокс


Субформа - это контрол такой на главной форме
А у этого контрола есть свойство Form, через которое можно достучаться до контролов и свойст самой формы.

автор
И я вот что-то не понимаю- в Субформе появляется список типа ЛистБокс


Это пример был - ну надо вам не к TextBox обращаться, а к ЛистБокс - ну и обращайтесь наздоровье
magoga
Дата: 02.06.2004 18:03:52
Попробовал несколько вариантов, но так и не работает.
вот один:

пробовал просто число обычное вставить, ну не рабоает и всё.
В свойствах у СубФормы имя такое же как и формы в ней.Поэтому
написал следующее:
CurrentDb.Execute ("DELETE * FROM Container WHERE SubAsset=" & Me![ContainerList2Subform1].[ContainerList2Subform1].[SubAsset] & ";")
Me.Requery

вот второй:

CurrentDb.Execute ("DELETE * FROM Container WHERE SubAsset=" & Me![ContainerList2Subform1].[SubAsset].Value & ";")
Me.Requery
Кто скажет, где может быть ошибка?
Заранее благодарен
paparome
Дата: 02.06.2004 18:06:21
Свойство Form, а не имя формы - оно всегда Form

Пиши так
Me![ContainerList2Subform1].Form.[SubAsset]

ТО ЧТО ЖИРНЫМ, НИ НА ЧТО ЗАМЕНЯТЬ НЕ НАДО!!!
magoga
Дата: 02.06.2004 18:31:46
paparome Thanks,

Класс заработало, но не сразу. Написал как ты мне сказал и ничего не получилось. После чего я просто удалил Ексепшионс и Мессаджис, оставил просто команду запроса.


Private Sub RemoveSubDevice_Click()

CurrentDb.Execute ("DELETE * FROM Container WHERE SubAsset=" & Me![ContainerList2Subform1].Form.[SubAsset] & ";")
Me.Requery

End Sub
Вот потом и заработала. Дла уверености решил посмотреть что там в таблице. Записи стёрты, но вместо них остались #Deleted. Почему?