powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Редактирование записей чисто средствами DAO. Как правильно?
25 сообщений из 31, страница 1 из 2
Редактирование записей чисто средствами DAO. Как правильно?
    #32395436
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форма и все ее контролы свободные от данных.
Делаю форму для редактирования записей.
В форме список с помощью которого можно перейти на нужную запись.
Для перехода использую метод Seek. Но вот задача , как организовать изменение записи.
Юзер переходит на нужную запись и если нужно меняет ее и нажимает кнопку сохранить (вызывается update через DAO) , но вдруг ему вздумается перейти на другую запись.

Может кто делал подобное, поделитесь опытом.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395440
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильной дорогой идешь: сперва сделал, а потом подумал!
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395455
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Виктору
Ну так получилось.
Так что , может что подскажешь.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395485
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктор убежал далеко.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395526
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём проблема?
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395542
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я всегда делаю так: нашел нужную запись, кликнул на нее (2 раза - для надежности) и открывается подформочка, которая редактирует выбранную запись И ТОЛЬКО ЕЕ.

Да простят меня монстроподобные, белой кости, гуру и кенгуру Аксесса за мой нарочитый примитивизм.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395545
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я и дурак
Все , дошло.
При переходе на другую запись ничего страшного не произойдет. Ведь контроллы не привязаны к данным. Так что юзер должен нажимать "сохранить" если хочет чтобы изменения записались в базу.
Вот заметил , что напишу на форум , то сразу как то проясняется Какой хороший форум.

2 Shkurenko Alexander
Да все теперь нормально.

Вопрос кстати тут назрел, как запретить юзеру править текст в текстовом поле ( не используя enabled) ? Форма свободная.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395556
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лифчик
А как юзер у тебя на нужную запись переходит?
В этой подформе кнопки "сохранить" и "отмена", да?
В подформе вносишь изменения с помощью DAO / ADO?

Я тоже сначала хотел так сделать. Но переход к нужной записи с помощью списка мне показался привлекательней.

Вот может кто скажет из монстров какой способ получше.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395560
Фотография Serafim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы решали это так - есть отдельная форма для редактирования, в нее копируются данные нужной записи (был спец. метод написан) и открывается POPUP!!!! , потом ее можно редактировать до посинения (изменения только у Вас на экране) - и только по Save запихиваем в базу (тоже был спец. метод написан)

Удачи
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395564
Фотография Serafim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опоздал...
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395585
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот ежели я забыл нажать сохранить, что мне бедному пользователю делать?
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395594
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял тебя.
Да это не мешало бы учесть.
Может смотреть изменялся ли текст в полях , и если хоть в одном был изменен текст вывести мессадж юзеру с предложением "сохранить / нет " и оставить на выбранной записи.
Блин вот только полей много (более 25 штук) половина комбобоксов . Как проверить , что изменились данные хотя бы в одном?

Сижу думаю.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395606
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eternal> Блин вот только полей много (более 25 штук) половина комбобоксов .
Eternal> Как проверить , что изменились данные хотя бы в одном?


Код: plaintext
1.
2.
3.
4.
Private dirty_ as Boolean
...
Public Function dirty_data()
    dirty_ = True
End Function


В каждом элементе управления, которые содержат данные, событие изменение =dirty_data()

Это самый простой способ, можно придумать чего-нибудь посложнее.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395610
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А просто событие Form.Dirty разве не подойдет?
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395614
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Я получил признак того, что юзер не нажал "сохранить".
Процедуру проверки надо вешать на событие листбокса (в начале) где предупреждать об этом и спрашивать вариант действия. И если он нажмет "да" обновить запись, ведь нахожусь пока на ней. Т.е каждый раз перед переходом к новой записи проверяется, была ли изменена предыдущая.

Public Function dirty_data()
dirty_ = True
End Function

Но где то надо сбрасывать в False ! Чтобы сообщения не достали юзера.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395629
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Eternal
Ну дык когда я, пользователь, сохранил запись dirty_ = False

2 Лифчик
А разве это работает с "отвязанными" элементами.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395631
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dirty новое свойство Access 2000 . Что то я с ним не очень.

2 Лифчику
Form.Dirty не работает , проверил.

Когда наступает это событие? При каких действиях , не при изменении данных которые подвязаны к форме?

Private k As Long 'обще доступная переменная для всех процедур модуля

Private Sub Form_Dirty(Cancel As Integer)
k = 1
End Sub

А вот change полей действует.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395638
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ну дык когда я, пользователь, сохранил запись dirty_ = False
Точно!
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395639
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Eternal
Не совсем так +
задаём пользователю вопрос "Сохранить запись?" YesNoCancel

YesNo - сбрасываем флаг
Cancel - оставляем все как есть.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395689
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверь (перед переходом) равенство полей формы данным в записи. (стандартная связанная форма почти так и работает).

//можешь ввести набор переменных - "старых значений формы" - и грузить их при переходе на запись данными, параллельно заполнению контролов. /* Для полной иммитации можно перед сохранением проверять равенство "старых значений формы" значениям записи, и при несовпадении выдавать ругательство о том, что другой юзер уже поменял данные :0)*///

И не мучай события контролов (на выставку псевдофлага). Застрелишься. Ибо, если после ченjа пользователь эскейпы нажимал, то он может не понять юмора сообщений.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395738
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну совсем немного осталось.

Проблема вот в чем.

Юзер изменил запись и забыл (гад такой) нажать "сохранить". Я это отловил скажем и вывожу диалог где предлагаю сохранить запись или отказаться от сохранения. Если юзер выберет "нет" , то произойдет переход на нужную запись (значение в листбоксе выделится), а вот если выберет " да ",тогда нужно взять и вызвать процедуру сохранения , но юзер то уже щелкнул на другом значении списка. Короче в списке происходит выделение сразу 2-х значений и попадаю черт знает куда. Вот код процедуры.

Option Compare Database
Private k As Long

Private Sub FId_Change()
k = 1
End Sub

Private Sub List_AfterUpdate()
Dim s As Long

If k = 1 Then s = MsgBox("Save changed !!! ", vbYesNo + vbQuestion, "jjj")
If s = 6 Then 'сохраняем запись
save_Click
k = 0 'сброс признака изменения записи

Else 'просто переходим на указанную юзером запись
rst.Index = "PrimaryKey"
rst.Seek "=", List.Value
FId.SetFocus: FId.Value = rst(0).Value
FNaim.SetFocus: FNaim.Value = rst(1).Value
List.SetFocus
k = 0
End If
End Sub

Private Sub save_Click()
rst.Edit
FId.SetFocus
rst(0).Value = CLng(FId.Text)
FNaim.SetFocus
rst(1).Value = FNaim.Text
rst.Update
List.Requery
End Sub

Так вот все работает, только не могу обработать правильный переход в списке. Выделяется два значения после нажатия "да" в Msgbox.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395754
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Шкуренко: 2 Лифчик
А разве это работает с "отвязанными" элементами.

А слабО форму для редактирования (одной записи) сделать с "привязанными" элементами? Или это постановка задачи такая - все сделать на "отвязанных"?
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395770
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лифчик
Нет не слабо. Автор топика работает с несвязанными элементами управления, поэтому и такие советы. Хотя иногда бывает нужно работать именно с несвязанными э/у.
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395781
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А м.б. в данном контексте товарищь найдет облегчение именно в привязанной форме, надо лишь подсказать такую возможность!

ЗЫ Вчера на даче засел в сугроб. Час возился с лопатой, откапывал авто. Обеспокоенная теща приходит и говорит: А ты, зятек, не пробовал назад подать? Может она назад поедет?

Потом была некая обида...
...
Рейтинг: 0 / 0
Редактирование записей чисто средствами DAO. Как правильно?
    #32395938
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EternalВопрос кстати тут назрел, как запретить юзеру править текст в
текстовом поле ( не используя enabled) ?

Код: plaintext
1.
2.
Private Sub MyControl_KeyPress(KeyAscii As Integer)
KeyAscii =  0 
End Sub
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Редактирование записей чисто средствами DAO. Как правильно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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