|
|
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Нда. Есть форма с источником данных типа select Table1.*, Table2.MyField from Table1 left join Table2 on ... Что было нужно - показывать поля таблицы1 и одно из полей (которое не нужно и нельзя редактировать) таблицы2. Почему не с помощья поля со списком? потому-что выпадающий список и сама кнопка, его открывающая не нужна совершенно. Изменение, добавление записей работает нормально, а при удалении записи из Table1 мне нужно подправлять одно из полей записи Table2 (не MyField). Оно исправляется нормально, но даже не в сети после этого выскакивает сообщение, что, дескать, запись была изменена другим пользователем и не удаляет запись Table1. А иногда все работает. Примерно фифти-фифти. Вопрос: что делать, чтобы удалялось нормально? Вернуться к полю со списком, или прошептать волшебное слово? (несогласованный набор записей ставил - результат тот же). Спасибо большое всем. ---------- И в дополнение. Час провозился с ТриВью - не хотел заполняться. Аналогичная форма - работает нормально. Тупо тот же код переношу в другую - перестает. Выяснилось, что перед заполнением за каким-то надо ему сказать: me.MyTreeView.Visible = True ' Хотя он и так Visible!! me.MyTreeView.SetFocus Тяжела, млин, доля разработчика... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 17:36 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Задам глупый и неуместный вопрос. А то поле в Table2, по которому идет связь, - оно Primary Key? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 17:41 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Ты что, в форме, на событии Delete, т.е. до фактического удаления, правишь набор? Ну дык и правильно оно тогда делает что ругается. Версия аксеса какая? Если 2000 и выше - наверное можно обойти. Через один и тот же Connection/Workspace и открывай рекордсет (потом подсовывай его форме), и удаляй запись. Может и получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 17:53 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2ВС А то поле в Table2, по которому идет связь, - оно Primary Key? Угумсь, по ним налажена связь в схеме данных. 2ЛП Ты что, в форме, на событии Delete, т.е. до фактического удаления, правишь набор? Угу. Но удаляю я запись Table1, а правлю запись Table2. Ну дык и правильно оно тогда делает что ругается. Я понимаю, что наверное правильно. Но ведь не всегда ругается. Иногда сразу молча удаляет. И всегда на второй-третий раз удаляет. Версия аксеса какая? '02 Через один и тот же Connection/Workspace и открывай рекордсет (потом подсовывай его форме), и удаляй запись. Может и получится. А можно пару строчек, а то наша не понял, что это значит... скорей бы завтра кончилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 18:16 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Ой-ой! Надеюсь никто еще не запутался: Но удаляю я запись Table1, а правлю запись Table2. надо было с точностью до наоборот: Но удаляю я запись Table2, а правлю запись Table1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 18:23 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2 Гео:Это у тебя вот это дерьмо всплыло. По кр.мере очень похоже - что со второго раза удаляет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 18:27 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2Лифчик. Да, действительно похоже. Только я-то DoCmd там не делаю никаких. Для порядка выкладываю обработчик Delet'а: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. То же самое происходит и при удалении посредством DAO.Recordset. А вот источник данных формы: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 18:43 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Сделать я все сделал: Dim t as string Private Sub Form_Delete(...) t=me.NumOrder End Sub Private Sub Form_Current() if t<>"" theb ... t="" endif End Sub Но осталось совершенно непонятно, почему акцесс то разрешал удалять запись, то нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 20:12 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Зато теперь список недокументированных багов можно готовить: в Аксе-2002 в событии Form_Delete нельзя 1) DoCmd.openForm, 2) CurrentDB.Execute ... и еще наверное дофига всего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 22:04 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Да, про эту подставу с Form_Delete я запамятовал. Geo, по поводу твоего решения. Ты не забыл случаем, что после удаления единственной записи в наборе событие Current у тебя не случится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 09:17 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2ЛП Забыл :( А что же случиться-то?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 15:42 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
А ничего не случится Или ты спрашиваешь какое событие тогда ловить? Я кроме таймера ничего предложить не могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 15:47 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Могу посоветовать такую фигню Код: plaintext 1. 2. 3. 4. При этом, правда, пропадают вопросы типа "Не уверены ли вы что вы не хотите не удалять эту запись если да нажмите нет" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 15:50 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2ЛП Я сейчас пойду проверять, сколько раз будет куррент, если удаляется сразу несколько записей. Почему-то кажется, что только один раз... :(( Да и через таймер и коллекцию неспортивно - а ну как не успеет... Млять. Пятница... Откат к полям со списками. Черт с ними. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 15:52 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2ЛП Попробую, спасибо большое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 15:56 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Да не за что. Сам на эти грабли наступил уже столько раз, что рога скоро набьются. С тоски назвал такого рода решения "триггерами для бедных" Кстати, в твоем решении от вчера, 20:12 еще один камень подводный. Именно при удалении нескольких записей. Пользователю выдастся вопрос "не уверены ли вы..." и он нажмет кнопку "нет". И не произойдет удаления. А вся работа по изменению таблиц уже выполнена :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 16:15 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Придумал. Если не заработает вариант ЛП, сделаю функцию, которой буду передавать идентификатор изменяемой записи. Она будет в цикле с DoEvents дожидаться удаления записи в Таблице1, а после этого изменять запись Таблицы2. Интересно, а что сможет ли она одновременно запуститься дважды?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 19:46 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Сделал по варианту ЛП. После выполнения в полях записи вылезает "#Удалено". Ну и черт с ним, думаю. Объяснил, что это не страшно, что до лучших времен... Так они (юзеры) начали эти записи "#Удалено" удалять повторно. И почему-то стали пропадать записи Таблицы2. Эх, тоска (и ведь опять пятница!)... Выкину всех джонов. Гори они... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 13:07 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
А Me.Refresh на Current повесить? Ну и на таймер до кучи На случай если последнюю запись удаляет. Гео писал:И почему-то стали пропадать записи Таблицы2. Странно однако. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 13:13 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Current не лучшее решение конечно. И ассинхроное оно, и вообще его может не быть, так что попробуй сразу после удаления обновлять набор. Уже не помню, может это боком выйдет, может нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 13:26 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
Обновлять набор = самому позиционироваться на соседнюю запись. (а потом захотят еще чтобы в той же позиции экрана). Накер. Щас сделаю полями со списками. ---- ЗЫ. А после удаления "#Удаленных" натурально бьется запись из связанной таблицы. Сейчас у себя попробовал. Писец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:27 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
поле со списком (eb) + спрятать + всобачить поле(я) отображения. В источниках: =[eb].[Column](1) - минимум усилий, имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 18:09 |
|
||
|
Удаление записи в источнике данных с Left Join
|
|||
|---|---|---|---|
|
#18+
2 assa - табличная форма... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 20:27 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32282599&tid=1678896]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 374ms |

| 0 / 0 |
