powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удаление записи в источнике данных с Left Join
24 сообщений из 24, страница 1 из 1
Удаление записи в источнике данных с Left Join
    #32282425
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нда. Есть форма с источником данных типа

select Table1.*, Table2.MyField from Table1 left join Table2 on ...

Что было нужно - показывать поля таблицы1 и одно из полей (которое не нужно и нельзя редактировать) таблицы2. Почему не с помощья поля со списком? потому-что выпадающий список и сама кнопка, его открывающая не нужна совершенно.

Изменение, добавление записей работает нормально, а при удалении записи из Table1 мне нужно подправлять одно из полей записи Table2 (не MyField). Оно исправляется нормально, но даже не в сети после этого выскакивает сообщение, что, дескать, запись была изменена другим пользователем и не удаляет запись Table1. А иногда все работает. Примерно фифти-фифти.

Вопрос: что делать, чтобы удалялось нормально? Вернуться к полю со списком, или прошептать волшебное слово? (несогласованный набор записей ставил - результат тот же).

Спасибо большое всем.

----------
И в дополнение. Час провозился с ТриВью - не хотел заполняться. Аналогичная форма - работает нормально. Тупо тот же код переношу в другую - перестает. Выяснилось, что перед заполнением за каким-то надо ему сказать:

me.MyTreeView.Visible = True ' Хотя он и так Visible!!
me.MyTreeView.SetFocus

Тяжела, млин, доля разработчика... :(
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282431
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Задам глупый и неуместный вопрос. А то поле в Table2, по которому идет связь, - оно Primary Key?
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282450
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты что, в форме, на событии Delete, т.е. до фактического удаления, правишь набор? Ну дык и правильно оно тогда делает что ругается.
Версия аксеса какая? Если 2000 и выше - наверное можно обойти. Через один и тот же Connection/Workspace и открывай рекордсет (потом подсовывай его форме), и удаляй запись. Может и получится.
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282489
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВС
А то поле в Table2, по которому идет связь, - оно Primary Key?
Угумсь, по ним налажена связь в схеме данных.

2ЛП
Ты что, в форме, на событии Delete, т.е. до фактического удаления, правишь набор?
Угу. Но удаляю я запись Table1, а правлю запись Table2.

Ну дык и правильно оно тогда делает что ругается.
Я понимаю, что наверное правильно. Но ведь не всегда ругается. Иногда сразу молча удаляет. И всегда на второй-третий раз удаляет.

Версия аксеса какая?
'02

Через один и тот же Connection/Workspace и открывай рекордсет (потом подсовывай его форме), и удаляй запись. Может и получится.
А можно пару строчек, а то наша не понял, что это значит...

скорей бы завтра кончилось...
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282499
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой-ой!
Надеюсь никто еще не запутался:

Но удаляю я запись Table1, а правлю запись Table2.

надо было с точностью до наоборот:

Но удаляю я запись Table2, а правлю запись Table1.
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282503
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Гео:Это у тебя вот это дерьмо всплыло. По кр.мере очень похоже - что со второго раза удаляет
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282532
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лифчик.
Да, действительно похоже. Только я-то DoCmd там не делаю никаких. Для порядка выкладываю обработчик Delet'а:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Form_Delete(Cancel As Integer)
On Error GoTo HaveError
  
  ' Oбновляю содержимое заказа
  CurrentDb.Execute "UPDATE tOrders SET tOrders.NumAccount = '', tOrders.Settle = False " & _
                    "WHERE (((tOrders.NumOrder)=' " & Me.НомЗак & " ')); "

EndProc:
Exit Sub
HaveError:
calcerr " Form_фпСчетФактура ", " Form_Delete", Err.Number, Err.Description
GoTo EndProc
End Sub


То же самое происходит и при удалении посредством DAO.Recordset.

А вот источник данных формы:

Код: plaintext
1.
SELECT tpInvoice.*, dContact.FIOcontact 
FROM (tpInvoice LEFT JOIN tOrders ON tpInvoice.KeyOrder = tOrders.NumOrder) LEFT JOIN dContact ON tOrders.CodeContact = dContact.KeyContact;
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282599
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать я все сделал:

Dim t as string

Private Sub Form_Delete(...)
t=me.NumOrder
End Sub

Private Sub Form_Current()
if t<>"" theb
...
t=""
endif
End Sub

Но осталось совершенно непонятно, почему акцесс то разрешал удалять запись, то нет...
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282628
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато теперь список недокументированных багов можно готовить: в Аксе-2002 в событии Form_Delete нельзя
1) DoCmd.openForm,
2) CurrentDB.Execute
...
и еще наверное дофига всего
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32282780
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, про эту подставу с Form_Delete я запамятовал.

Geo, по поводу твоего решения.
Ты не забыл случаем, что после удаления единственной записи в наборе событие Current у тебя не случится?
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283457
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ЛП
Забыл :(

А что же случиться-то?..
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283471
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ничего не случится
Или ты спрашиваешь какое событие тогда ловить? Я кроме таймера ничего предложить не могу
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283478
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу посоветовать такую фигню
Код: plaintext
1.
2.
3.
4.
Private Sub Form_Delete (Cancel As Integer)
    Cancel = True
    CurrentDb.Execute  "Изменить таблицу2" , dbFailOnError
    CurrentDb.Execute  "Удалить из таблицы1" , dbFailOnError
End Sub

При этом, правда, пропадают вопросы типа "Не уверены ли вы что вы не хотите не удалять эту запись если да нажмите нет"
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283481
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ЛП
Я сейчас пойду проверять, сколько раз будет куррент, если удаляется сразу несколько записей. Почему-то кажется, что только один раз... :((
Да и через таймер и коллекцию неспортивно - а ну как не успеет... Млять. Пятница... Откат к полям со списками. Черт с ними.
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283488
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ЛП
Попробую, спасибо большое...
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283522
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не за что. Сам на эти грабли наступил уже столько раз, что рога скоро набьются.
С тоски назвал такого рода решения "триггерами для бедных"
Кстати, в твоем решении от вчера, 20:12 еще один камень подводный. Именно при удалении нескольких записей. Пользователю выдастся вопрос "не уверены ли вы..." и он нажмет кнопку "нет". И не произойдет удаления. А вся работа по изменению таблиц уже выполнена :(
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32283789
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумал.
Если не заработает вариант ЛП, сделаю функцию, которой буду передавать идентификатор изменяемой записи. Она будет в цикле с DoEvents дожидаться удаления записи в Таблице1, а после этого изменять запись Таблицы2. Интересно, а что сможет ли она одновременно запуститься дважды?..
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32289862
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал по варианту ЛП.
После выполнения в полях записи вылезает "#Удалено".
Ну и черт с ним, думаю.
Объяснил, что это не страшно, что до лучших времен...
Так они (юзеры) начали эти записи "#Удалено" удалять повторно.
И почему-то стали пропадать записи Таблицы2.
Эх, тоска (и ведь опять пятница!)...
Выкину всех джонов. Гори они...
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32289876
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Me.Refresh на Current повесить?
Ну и на таймер до кучи На случай если последнюю запись удаляет.

Гео писал:И почему-то стали пропадать записи Таблицы2.
Странно однако.
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32289903
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Current не лучшее решение конечно. И ассинхроное оно, и вообще его может не быть, так что попробуй сразу после удаления обновлять набор. Уже не помню, может это боком выйдет, может нет.
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32290208
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обновлять набор = самому позиционироваться на соседнюю запись. (а потом захотят еще чтобы в той же позиции экрана).
Накер. Щас сделаю полями со списками.
----
ЗЫ. А после удаления "#Удаленных" натурально бьется запись из связанной таблицы. Сейчас у себя попробовал. Писец.
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32290335
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поле со списком (eb) + спрятать + всобачить поле(я) отображения. В источниках:
=[eb].[Column](1)

- минимум усилий, имхо
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32290417
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 assa
- табличная форма...
...
Рейтинг: 0 / 0
Удаление записи в источнике данных с Left Join
    #32291116
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в табличной + :
Private Sub Form_Open(Cancel As Integer)
'...
Me![eb].ColumnWidth = 0
Me![eb].ColumnHidden = True
End Sub
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удаление записи в источнике данных с Left Join
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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