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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2012, 10:37   #1
justas1507
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 19
По умолчанию Как осуществить проверку?

Здравствуйте!
Помогите пожалуйста.
Есть 2 таблицы - 1ая список продуктов на складе, 2ая список транзакций (которые осусществляются с этими продуктами). Идея заключется в том чтобы после ввода транзакции в форму, связанную с таблицей 2, проверялось наличие продукта из таблицы 1. т.е. у меня есть 10 едениц продукта. Я ввожу транзакцию - извлечь 12 едениц, происходит проверка (до того как обновляется форма), и если количество которое требуется извлечь больше количества которое есть на складе выдается сообщение об ошибке с указанием доступного количества, и предлагается ввести транзакцию повторно. Если все в порядке, то к количеству на складе отнимается или прибавляется количество продукта из транзакции.
justas1507 вне форума Ответить с цитированием
Старый 01.01.2012, 19:58   #2
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

justas1507, думаю лучше всего для Ваших целей подойдёт Recordset. Он позволяет находить записи в таблице, извлекать значения, редактировать их.
Woodlin вне форума Ответить с цитированием
Старый 02.01.2012, 22:58   #3
justas1507
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 19
По умолчанию

Хотелось бы хоть какой-то пример...Хоть самый простой... Я в VBA не силен
justas1507 вне форума Ответить с цитированием
Старый 03.01.2012, 12:09   #4
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

Код:
Dim rst As DAO.Recordset
Dim str As String

'Строка запроса, который извлекает из Таблица1 два поля записи товара, условие отбора совпадение НаименованиеТовара и _
НаименованиеТовара_Проверка (может быть значение поля формы с наименованием Forms!ИмяФормы!ИмяКонтрола)

str = "SELECT НаименваниеТовара, Количество FROM Таблица1 WHERE НаименваниеТовара = '" & НаименованиеТовара_Проверка & "'"

'Открываем рекордсет, источником записей служит приведенный выше запрос
Set rst = CurrentDb.OpenRecordset(str, dbOpenDynaset)
If rst.RecordCount = 0 Then ' записей 0 - такого товара в таблица1 нет
     MsgBox "Товар не найден."
Else
     rst.MoveFirst  'необязательная строка
     If rst!Количество < Транзакция Then ' Транзакция - количество запрашиваемого товара
          MsgBox "Закатай губу, на складе нет столько товара!"
     Else 
           'Количество товара на складе достаточное
           rst.Edit
           rst!Количество=rst!Количество - Транзакция
           rst.Update
     End If
End If
В приведенном примере извлечение необходимой записи из Таблица1 происходит по названию товара, и если название в таблице дублируется,пример будет работать некорректно. Лучше извлекать по значению поля типа счетчик, тогда условие будет таким:
Код:
... WHERE Счетчик = " & Значение_Счетчик

Последний раз редактировалось Woodlin; 03.01.2012 в 12:11.
Woodlin вне форума Ответить с цитированием
Старый 03.01.2012, 14:01   #5
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

А ещё лучше выложить пример, как по мне так что-то в примере перемудрили и всё должно быть намного проще. и зачем там перебор строк? Я так думаю что всё можно сократить до:
str = "Запрос с гркпировкой товара, условием отбора и сумированием остатков"
if str<[forms]![name fortm]![name pole] then
msgbox ("Введённое количество превышает остатки на складе. Остатки на складе составляют : " & str)
end if

и будет Вам счастье
gluk_fm вне форума Ответить с цитированием
Старый 03.01.2012, 16:43   #6
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

gluk_fm, насколько я понял автор хочет не только проверять количество товара на складе, но и добавлять или отнимать. Потому и такой пример.
Woodlin вне форума Ответить с цитированием
Старый 06.01.2012, 19:51   #7
justas1507
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 19
По умолчанию

Спасибо большое всем кто откликнулся... А как насчет примера? Я имею ввиду фаил с примером... Я понимаю что все должно работать, а вот как-то не получается...
justas1507 вне форума Ответить с цитированием
Старый 06.01.2012, 20:03   #8
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

justas1507, что именно не получается?

Лучше выложите свой пример.
Woodlin вне форума Ответить с цитированием
Старый 09.01.2012, 07:39   #9
justas1507
Пользователь
 
Регистрация: 26.04.2011
Сообщений: 19
По умолчанию

Ну, вот как-то так... При вводе количества товара в форму, проверяется количество данного товара, если его достаточно, то происходит транзакция, т.е. из обсщего количества отнимается количество транзакции...
И еще пару вопросов вдогонку: как сделать чтобы при определенном сочетании клавиш, открывалась форма? Т.е. я нажимаю допустим ... и из любого места программы открывается, ну к примеру, моя форма?
И второй вопрос: Есть кнопка, при нажитии которой открывается форма, в режиме добавления новой записи. Вопрос в том как сделать, чтобы после нажатия кнопки, одному из полей присваивалось бы определенное значение из формы, на которой расположена кнопка? Т.е. На форме Продукт есть кнопка транзакция. При нажатии на нее я перехожу на форму Транзакция, но в поле Продукт, уже вбито название продукта, и мне остается вбить только количество, дату и т.д.
Понимаю, что скорее всего ничего сложного здесь нет, но вот как-то не выходит... Буду признателен за помощь...
Вложения
Тип файла: zip Database.zip (36.1 Кб, 12 просмотров)
justas1507 вне форума Ответить с цитированием
Старый 10.01.2012, 01:40   #10
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте justas1507.
Ваша конструкция предназначена для обработки записей в таблице (ввода, редактирования).
Как можно решать эту задачу Вы увидите в образце.
Термин "..ввожу транзакцию.." мало подходит,
т.к. транзакцией называется набор последовательных операций...,
а в Вашей конструкции планируется выполнение одного действия.
Евгений.
Вложения
Тип файла: rar Database.rar (25.1 Кб, 26 просмотров)
Teslenko_EA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
осуществить ввод цифр. осуществить диалог. 13xXx13 Помощь студентам 0 08.12.2011 20:25
Как сделать проверку на конец массива ? Alex1991 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 28.11.2010 02:10
Как сделать проверку ? HmTH Общие вопросы Delphi 42 20.10.2010 18:42
как прописать проверку toolButtons lexluter1988 Общие вопросы .NET 2 18.05.2010 20:22
как можно сделать проверку? KARUSHEV Помощь студентам 10 13.10.2009 15:15