|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
||||||
Обновление данных в Access28.11.2011, 09:29. Показов 2675. Ответов 18
Метки нет (Все метки)
Имеется база(Access) в которой присутствуют поля:
Kod(число), UnsdBasicVac(число), ChrgdBasicVac(логич). В делфи подключена эта база через ADO в соответсвующие поля: DBEdit1 - Kod DBEdit2 - UnsdBasicVac DBCheckBox - ChrgdBasicVac При нажатии на кнопку "Записать" происходит отправка следующего SQL-запроса:
Пользователь вводит определенные данные в поле UnsdBasicVac и нажимает "Записать" Если в ChrgdBasicVac галка стоит, тогда к введенному пользователем числу прибавляется 2, иначе 0. Проблема в том, что если пользователь нажмет кнопку более 1 раза, запрос запишет значение ChrgdBasicVac столько раз, сколько будет нажата кнопка. Как избежать такой ситуации?
0
|
||||||
| 28.11.2011, 09:29 | |
|
Ответы с готовыми решениями:
18
Обновление данных в access Обновление данных в Access |
|
2454 / 797 / 24
Регистрация: 18.08.2009
Сообщений: 1,697
|
|
| 28.11.2011, 10:25 | |
|
если бы писалось в акцессе, то можно задать свойство кнопки после выполнения обновления , например невидимая. Пусть становится видимой только после какого-либо действия на форме
0
|
|
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 28.11.2011, 10:41 | |
|
Сделай inputbox.
0
|
|
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
||
| 28.11.2011, 10:43 [ТС] | ||
|
0
|
||
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 28.11.2011, 10:55 | |
|
Ну тогда разве что добавить поле в котором хранить статус записи. Отработана/не отработана.
Если необходимые действия с записью выполнены там 1 если нет 0. И проверку на состояние записи.
1
|
|
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
|
| 28.11.2011, 10:59 [ТС] | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
| 28.11.2011, 11:11 | ||||||
У Вас очевидно отсутствует нормальная постановка задачи. Например ввести понятие "документа" (или что-там у Вас, куда оператор "вводит"), на основании которого значение UnsdBasicVac модифицируется. Когда документ "отрабатывается" (чтобы не было конфликтов в многопольз.базе читайте про транзакции), то на нем (документе) ставится "галочка" и второй раз уже ничего по этому документу в "базу" добавляться не будет. Схема типичная, применяемая в серьезных проектах.
0
|
||||||
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 28.11.2011, 11:24 | |
|
MsGuns, ну дак говоришь же о статусе документа.
За это в бд отвечает определенное поле. На которое при проектировании возложили функцию слежения так сказать. Я предложил тоже самое. Ну а так как у человека вопрос оторван от реализуемой системы. Ясень перец и ответ абстрактен. А про многопользовательский режим. У человека Access.
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||||||||||
| 28.11.2011, 11:33 | |||||||||||
Пример: - Есть остаток на счету - Есть операция (платежка например) Если система просто при вводе операции изменяет остаток (как у ТС), то каюк такой системе ибо нет НАДЕЖНОЙ защиты от повторения операции или не выполнения ее ни разу (плюшки с флажками "изменен-не изменен" делают смертушку только более мучительной и долгой, но не менее неотвратимой) А вот если ввести сущность "ОПЕРАЦИЯ" и ей дать свойство - флаг "проведена", то это в корне решает проблему ибо дважды провести одну и ту же операцию не позволит в принципе.
0
|
|||||||||||
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 28.11.2011, 11:51 | |
|
Ну для меня как-то Access и многопользовательский режим это слишком гиморно.
А я не люблю мучиться. Можно взять нормальную СУБД и не городить огород. Я предлагаю подождать полноценного описание от ТС. А не абстрактной задачи. Чтоб и ответ был более конкретным и более подходящим. Может задача и проблема в ином. Нежели мы думаем.
0
|
|
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
|
| 28.11.2011, 14:48 [ТС] | |
|
Программа по подсчету дней неиспользованного отпуска.
Пользователь вводит данные в поле "Количество неиспользованных дней", затем ставит галку(или не ставит, в зависимости, нужно ли начислить 2 дня в этом месяце), затем нажимает записать и если галка стоит, то к введенным пользователем дням прибавляются эти 2 дня, если галка не ставится, то введенные пользователем данные записываются в поле "Количество неиспользованных дней на конец месяца". В базе данных несколько таблиц, я опишу те, которые необходимы для решения этой задачи: Таблица "Таблица" содержит поля: TNumb - Табельный Номер(числовой), UnsdBasicVac - Неиспользованные дни основного отпуска на начало месяца(числовой), UnsdAdditVac - Неиспользованные дни дополнительного отпуска на начало месяца(числовой), ChrgdBasicVac - Начисленные дни основного отпуска(логическое) ChrgdAdditVac - Начисленные дни дополнительного отпуска(логическое), ResidueUnsd - Итого(числовой). Формула для подсчета: UnsdBasicVac = UnsdBasicVac + ChrgdBasicVac(тут либо 0, либо 2, в зависимости от галки) UnsdAdditVac = UnsdAdditVac + ChrgdAdditVac(тут либо 0, либо 0.5, в зависимости от галки) ResidueUnsd = UnsdBasicVac + UnsdAdditVac Таблица "ФИО" содержит поля: TNumb(числовой) - связь с "Таблица" по полю Таб номер. Fio(строка) Например: TNumb = 1 UnsdBasicVac = 16 UnsdAdditVac = 3.5 ChrgdBasicVac = True ChrgdAdditVac = True ResidueUnsd = UnsdBasicVac + UnsdAdditVac = 19.5 Или: TNumb = 3 UnsdBasicVac = 28 UnsdAdditVac = 0 ChrgdBasicVac = True ChrgdAdditVac = False ResidueUnsd = UnsdBasicVac + UnsdAdditVac = 28 У меня проблема состоит в том, что при каждом нажатии если стоит галка, он плюсует те же 2 дня к введенным основным дням. То есть: 1 нажатие - UnsdBasicVac = 16 + 2 = 18 2 нажатие - UnsdBasicVac = 18 + 2 = 20 3 нажатие - UnsdBasicVac = 20 + 2 = 22 ...
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 28.11.2011, 14:57 | |
|
Посмотрите как все сделано в 1С
А то, что написали... выбросите Просто дружеский совет
0
|
|
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
|
| 28.11.2011, 15:01 [ТС] | |
|
Да раньше нормально все работало, пока не потребовалось разграничить основные и дополнительные дни отпуска. Я через неделю уезжаю на сессию до НГ. Вообще хотел переписать программу на C#, но руки никак не доходят.
С 1С пока не сталкивался, а на него надо просто кучу свободного времени, которое у меня возможно появится только после сессии ![]() Спасибо за советы, ушел дальше думать.
0
|
|
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
|
| 29.11.2011, 08:05 [ТС] | |
|
Во вложении накидал конкретно эту задачу.
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 29.11.2011, 11:46 | |
|
Хорошо накидали.
А теперь выкиньте ! И посмотрите 1С хотя бы
0
|
|
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
|
| 29.11.2011, 15:25 [ТС] | |
Решил задачу. А на 1С надо время, ибо этот конструктор наверное сами разработчики еще не до конца изучили.Спасибо за советы, 1С займусь в новогодние праздники.
0
|
|
|
6 / 6 / 0
Регистрация: 06.11.2011
Сообщений: 36
|
|
| 30.11.2011, 10:57 | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
| 30.11.2011, 11:33 | ||||||
0
|
||||||
|
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
|
|
| 30.11.2011, 16:33 [ТС] | |
|
Да программа то не для бухгалтеров, а для отдела кадров
И 1С у нас еще не внедрено.
0
|
|
| 30.11.2011, 16:33 | |
|
Помогаю со студенческими работами здесь
19
Обновление данных по запросу Access автоматическое обновление данных Access
Обновление (замещение) данных в БД Access... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|