Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2011, 22:54   #1
Dmitriy_Egorov
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 19
По умолчанию Создание кнопки для сохранения записи

Доброго времени суток!

Создал форму на основе таблицы. Как сделать так, что бы данные добавлялись в таблицу только после нажатия кнопки, например "Сохранить данные"
Если переходить с поля на поле по клавише Tab и после того как оказался на последнем элементе формы нажать Tab еще раз, то запись автоматически сохраняется в таблице, а курсор попадает на первое поле формы. Как изменить такое поведение формы, т.е. пока не будет нажата кнопка "Сохранить данные" новая запись в таблице не создавалась. Может быть необходимо изменить какие то свойства для формы?

И еще вопрос.
Если необходимо изменить какую нибудь запись в таблице, например за определенную дату, то как это можно сделать используя форму? Как я понимаю сначала необходимо создать запрос с параметрами и на основе этого запроса создать форму.

Спасибо!
Dmitriy_Egorov вне форума Ответить с цитированием
Старый 17.04.2011, 09:28   #2
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

в окне свойст для формы запретить добавление строк
и написать обработчик события Клик по кнопке.
(Подробнее в личку, связь в профиле)
помогать студентам - моя вторая профессия
was3110 вне форума Ответить с цитированием
Старый 17.04.2011, 15:40   #3
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от was3110 Посмотреть сообщение
в окне свойст для формы запретить добавление строк
и написать обработчик события Клик по кнопке.
(Подробнее в личку, связь в профиле)
Велосипед изобретать не надо.
Есть стандартные решения, в т.ч. и от MS. Две кнопки-одна сохоанить, вторая-откат
Abrakadabra вне форума Ответить с цитированием
Старый 17.04.2011, 21:05   #4
Dmitriy_Egorov
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Abrakadabra Посмотреть сообщение
Велосипед изобретать не надо.
Есть стандартные решения, в т.ч. и от MS. Две кнопки-одна сохоанить, вторая-откат
Я очень много не знаю, по этому у меня вопрос, как создать эти кнопки.
Я создаю кнопку, запускается мастер, выбираю пункт обработка записей, далее сохранить запись. Как я понимаю это то что мне нужно.

И еще.
Я открываю форму, ввожу данные в одно из полей, закрываю форму (не нажимая кнопки сохранить запись). Открываю таблицу, а там уже создана запись.
Подскажите пож-ста какие свойства формы необходимо изменить что бы данные в таблицу сохранялись только после нажатия кнопки "сохранить запись"
Dmitriy_Egorov вне форума Ответить с цитированием
Старый 17.04.2011, 21:29   #5
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Dmitriy_Egorov Посмотреть сообщение
Я очень много не знаю, по этому у меня вопрос, как создать эти кнопки.
Я создаю кнопку, запускается мастер, выбираю пункт обработка записей, далее сохранить запись. Как я понимаю это то что мне нужно.

И еще.
Я открываю форму, ввожу данные в одно из полей, закрываю форму (не нажимая кнопки сохранить запись). Открываю таблицу, а там уже создана запись.
Подскажите пож-ста какие свойства формы необходимо изменить что бы данные в таблицу сохранялись только после нажатия кнопки "сохранить запись"
если нужно только добавлять записи по команде, то лучше это сделать через запись данных в таблицу SQL запросом.

Не надо привязывать поля формы к записям таблицы, а собрать необходимые данные с полей и программно записать их в таблицу.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 19.04.2011, 00:19   #6
Dmitriy_Egorov
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от R Dmitry Посмотреть сообщение
если нужно только добавлять записи по команде, то лучше это сделать через запись данных в таблицу SQL запросом.

Не надо привязывать поля формы к записям таблицы, а собрать необходимые данные с полей и программно записать их в таблицу.
Вы говорите о простом запросе, который создается в access или я не правильно Вас понял?
И что значит собрать записи с полей и программно записать их в таблицу.
Расскажите пож-ста по подробней
Dmitriy_Egorov вне форума Ответить с цитированием
Старый 19.04.2011, 10:00   #7
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию

Доброго времени суток!

Например, на форме есть поля TabNum, LName, FName, MName. Есть таблица Persons, с полями Tabnum(числовое), LastName, FirstName, MidName (текстовые).
Тогда запрос, вставляющий запись в таблцу, выглядит так:
strSQL = "INSERT INTO Persons (TabNum, LastName, FirstName, MidName) " & _
"VALUES (" & TabNum.Value & ", '" & LName.Value & "', '" & _
FName.Value & "', '" & MName.Value & "')"
При нажатии кнопки "Сохранить" проверяется заполнение нужных полей, формируется строка запроса на добавление (аналогично примеру) и запускается
командой CurrentDB.Execute (strSQL) (для DAO-модели доступа к данным)
LittleFatCat вне форума Ответить с цитированием
Старый 21.04.2011, 10:45   #8
Dmitriy_Egorov
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от LittleFatCat Посмотреть сообщение
Доброго времени суток!

Например, на форме есть поля TabNum, LName, FName, MName. Есть таблица Persons, с полями Tabnum(числовое), LastName, FirstName, MidName (текстовые).
Тогда запрос, вставляющий запись в таблцу, выглядит так:
strSQL = "INSERT INTO Persons (TabNum, LastName, FirstName, MidName) " & _
"VALUES (" & TabNum.Value & ", '" & LName.Value & "', '" & _
FName.Value & "', '" & MName.Value & "')"
При нажатии кнопки "Сохранить" проверяется заполнение нужных полей, формируется строка запроса на добавление (аналогично примеру) и запускается
командой CurrentDB.Execute (strSQL) (для DAO-модели доступа к данным)
Если не трудно привяжите запрос к кнопке на форме.
Вложения
Тип файла: zip Касса.zip (53.8 Кб, 88 просмотров)
Dmitriy_Egorov вне форума Ответить с цитированием
Старый 03.05.2011, 11:59   #9
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию

Доброго времени суток!

Для Вашей формы необходимо в свойствах кнопки "Сохранить" на вкладке события в событии "Нажатие кнопки" выбрать [Процедура обработки события] и в окне редактора кода VBA ввести следующий код:
Код:
Dim strSQL As String
  If MsgBox("Сохранить текущую запись?", vbQuestion + vbYesNo + vbDefaultButton2, "Сохранение записи") <> vbYes Then Exit Sub
  strSQL = "INSERT INTO Kassa1 (Data, Касса, Nal5000, Nal1000, Nal500, Nal100, Nal50, Meloch, Nal-X, VyrChist-Z, VyrObch-Z, Trafik)" & _
   " VALUES (" & _
   "#" & Дата.Value & "#, " & _
   "'" & Касса.Value & "', " & _
   [5000].Value & ", " & [1000].Value & ", " & [500].Value & ", " & [100].Value & ", " & [50].Value & ", " & Мелочь.Value & ", " & _
   [Нал по Х - отчету].Value & ", " & [Выручка чист по Z - отчету].Value & ", " & [Выручка общ по Z - отчету].Value & ", " & _
   Трафик.Value & ")"
  CurrentDb.Execute (strSQL)
Ещё, ИМХО :
Называть поле с датой Data не есть хорошо - оно может быть интерпретировано как служебное. (Data, кстати - это данные, а дата - Date :-). Лучше называть производными словами, например, InputDate, InsertDate и т.д. Называть поля в таблице и по-русски, и по-английски тоже неправильно, особенно если они могут быть прочитаны и так и так - Касса? На форме названия полей (не подписи!) лучше делать в одно слово и начинать с буквы. Идеально - если поле на форме называется также, как и поле с данными в таблице БД - это открывает простор для манипулирования с кодом и другие интересные вещи. И конкретно для Вашего случая нужны две формы - на одной (которая будет для добавления) данные в полях нужно очистить (чтобы поле имело вид СВОБОДНЫЙ)
LittleFatCat вне форума Ответить с цитированием
Старый 04.05.2011, 23:10   #10
Dmitriy_Egorov
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от LittleFatCat Посмотреть сообщение
Доброго времени суток!

Для Вашей формы необходимо в свойствах кнопки "Сохранить" на вкладке события в событии "Нажатие кнопки" выбрать [Процедура обработки события] и в окне редактора кода VBA ввести следующий код:
Код:
Dim strSQL As String
  If MsgBox("Сохранить текущую запись?", vbQuestion + vbYesNo + vbDefaultButton2, "Сохранение записи") <> vbYes Then Exit Sub
  strSQL = "INSERT INTO Kassa1 (Data, Касса, Nal5000, Nal1000, Nal500, Nal100, Nal50, Meloch, Nal-X, VyrChist-Z, VyrObch-Z, Trafik)" & _
   " VALUES (" & _
   "#" & Дата.Value & "#, " & _
   "'" & Касса.Value & "', " & _
   [5000].Value & ", " & [1000].Value & ", " & [500].Value & ", " & [100].Value & ", " & [50].Value & ", " & Мелочь.Value & ", " & _
   [Нал по Х - отчету].Value & ", " & [Выручка чист по Z - отчету].Value & ", " & [Выручка общ по Z - отчету].Value & ", " & _
   Трафик.Value & ")"
  CurrentDb.Execute (strSQL)
Ещё, ИМХО :
Называть поле с датой Data не есть хорошо - оно может быть интерпретировано как служебное. (Data, кстати - это данные, а дата - Date :-). Лучше называть производными словами, например, InputDate, InsertDate и т.д. Называть поля в таблице и по-русски, и по-английски тоже неправильно, особенно если они могут быть прочитаны и так и так - Касса? На форме названия полей (не подписи!) лучше делать в одно слово и начинать с буквы. Идеально - если поле на форме называется также, как и поле с данными в таблице БД - это открывает простор для манипулирования с кодом и другие интересные вещи. И конкретно для Вашего случая нужны две формы - на одной (которая будет для добавления) данные в полях нужно очистить (чтобы поле имело вид СВОБОДНЫЙ)
Спасибо большое за такой ответ. Но я тут решил полностью изменить структуру БД.
Опять куча вопросов. Если не трудно объясните.
Создал таблицу "Главная касса" - это как бы сводная таблица, в которой должны сохраняться суммарные данные из других таблиц.
Например, в поле "Банк" должна сохраняться сумма денег которые сданы в банк, а точнее сумма полей из таблицы "инкассация" поля "5000руб" "1000руб" "500руб". Это числовые поля т.к. в них вносится не сумма денег, а количество купюр соответствующего номинала. Т.е. число в поле должно умножаться на номинал купюры и сумма этих полей должна сохраняться в поле "Банк" таблицы "Главная касса"
Еще хотел узнать нужно ли создавать ключевые поля "ID" в каждой таблице что бы по ним связать таблицы или связь можно сделать по полям "Дата", т.к. в каждой таблице должна быть только одна запись за каждую дату. И не будет ли осложнений в будущем.
Хочу создать несколько форм. Главной будет форма "Главная касса" а из нее будут открываться остальные формы: "Инкассация", "Касса1", "Касса2", "Касса3", "Касса4", а вот как создать эти формы я не пойму. Точнее не понимаю как создать форму "главная касса" или запрос на основании которого должна формироваться эта форма.
Дело в том, что я совсем не знаю VBA и пытаюсь сделать без применения оного.
Пробовал создавать запрос с вычисляемыми полями, но постоянно вылезают ошибки.
Вложения
Тип файла: zip Расчет кассы.zip (59.2 Кб, 80 просмотров)

Последний раз редактировалось Dmitriy_Egorov; 04.05.2011 в 23:19.
Dmitriy_Egorov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для сохранения исходников Blourid Софт 5 17.01.2012 14:33
создание алгоритма сохранения своих данных при работе с программой street-walker Общие вопросы Delphi 1 04.05.2009 18:51
формат для сохранения окон vitalik007 Общие вопросы Delphi 9 26.05.2008 09:24
Компонент для сохранения настроек OrdJONY Общие вопросы Delphi 8 24.08.2007 10:36
создание cgi для сохранения на сервере exe файла преданного через http L0rD Работа с сетью в Delphi 2 22.06.2007 12:52