|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Вопросы по MS Access. Тема постоянно обновляется... |
|
Ветеран Сообщения: 2755
|
Профиль | Сайт | Отправить PM | Цитировать Всем привет! С базами данных дружу неохотно, но курсовой делать надо, поэтому вопросов будет много, но все они будут не особо сложные для понимающих людей!
Итак, приступим. Вопрос номер раз: Допустим, есть 3 таблицы (товары, заказы и таблица с информацией по дисконтным картам). В таблице товары 4 цены (обычная, и 3 со скидками 5, 10 и 15%). Так вот, как автоматизировать подсчет 3 цен со скидками при вводе только цены в розницу? Пробовал через значения по умолчанию вбивать - выдает ошибку (см вложения). Только большая просьба, объяснять, как новичку. Конечно рассусоливать сильно не надо, но по возможности поподробнее. Надеюсь, в беде не бросите, заранее спасибо! |
------- Последний раз редактировалось FRZ, 02-12-2022 в 13:13. Отправлено: 23:30, 27-11-2008 | #1 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать никогда не используйте в именах переменных в любой базе данных скобки (). Уберите их и проверьте.
Нет, все равно работать не будет, т.к. на момент создания записи в поле "цена" еще ничего нет, а значение выставляется автоматом ДО начала записи. Как вариант - хранить в базе всего одну переменную, а остальные высчитывать. Либо же оставить все поля, но создать запрос на обновление, который будет автоматом вставлять нужные данные. Выглядеть он будет примерно так(в виде SQL) : Для создания запроса просто создаем пустой запрос, переходим в вид SQL и вбиваем этот текст(поменяв имена переменных на нужные) |
------- Отправлено: 04:24, 28-11-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2755
|
Профиль | Сайт | Отправить PM | Цитировать Delirium, ок, спасибо! Я так поначалу и подумал, что в одной таблице скорее всего не получится, придется с запросами возиться =( . С запросом все получилось замечательно)
ДОБАВЛЕНО! Так, вопрос номер два. Создал форму (см приложение), на ней поле со списком и просто список (большой). По умолчанию в списке большом отображается вся таблица с товарами, а в раскрывающемся списке отображаются категории (из запроса на выборку). Так вот теперь, как это все завязать, чтобы при выборе из выпадающего списка определенной категории, например, видеокарты, в поле большого списка импортировался список всех видеокарт? Запросы на выборку по определенной категории есть! Я так понимаю, придется использовать Visual Basic, а в нем не очень, поэтому просьба поподробнее. Хотя я более-мене знаю Delphi, поэтому свойства знаю где расположены |
------- Последний раз редактировалось FRZ, 02-12-2022 в 13:13. Отправлено: 10:44, 28-11-2008 | #3 |
Ветеран Сообщения: 2755
|
Профиль | Сайт | Отправить PM | Цитировать Так, вроде разобрался. Кому интересно:
Вешаем на событие "После обновления" в выпадающем списке такую строку (для каждой категории своя): If ПолеСоСписком0.Text = "Компьютер в сборе" Then Список2.RowSource = "SELECT Товары.IDg, Товары.Название, Товары.Цена_розн, Товары.Цена_5, Товары.Цена_10, Товары.Цена_15, Товары.Гарантия, Товары.категория_товара FROM товары WHERE Товары.IDcat = 1; " Тут же возник вопрос номер три: Есть форма. На ней listbox, в него выводятся данные из запроса (см выше). Вопрос: можно как-нибудь на кнопку повесить событие копирования выделенной строки в Listox'e в отдельную таблицу (структура таблиц совпадает)? Ну или не на кнопку, а на 2 щелчек по строке, ну или еще как, подскажите пожалуйста! |
------- Отправлено: 20:51, 29-11-2008 | #4 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Ну если только вешать обработку на двойной клик на список и в коде уже прописать примерно так:
Dim str as String str = список1 В str будет лежать индекс щелкнутой строки. Потом можно создать запрос с параметров, который будет отбирать строку из таблицы и кидать в нужную "корзину". |
|
------- Отправлено: 01:17, 01-12-2008 | #5 |
Ветеран Сообщения: 2755
|
Профиль | Сайт | Отправить PM | Цитировать Delirium, Спасибо! так и сделал. все работает!!!
Так, вопрос номер три. Теперь мне надо написать сложный запрос. Сколько мучался - ничего не получается =( . (Рисунок прикрепил). Итак вкратце что мне надо: Чтобы по щелчку на кнопке "Пересчитать цены" бралось значение из поля (например 12), Находилась в таблице Дисконтные_карты строка с номером карты (12), смотрелось в этой строке идентификатор скидки (IDs в нашем случае 2), В соответствии с этим идентификатором из таблицы Товары выбирался нужный столбик с ценами (пронумерованы от 0. В нашем случае 2) и этот столбик полностью копировался в столбик цен в таблице Текущий_клиент. Собственно все Понимаю, что все несколько запутано, но это наверное последнее, что нужно сделать и курсовой будет готов! Очень надеюсь на помощь (кстати, поле идентификатора скидки IDs не с чем не связано, так что если что тип данных можно поменять. Сейчас стоит числовой 0,1,2,3) |
------- Последний раз редактировалось FRZ, 02-12-2022 в 13:13. Отправлено: 22:31, 01-12-2008 | #6 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Мда. Как то неудобно со столбцами.... Вы можете привести внешний вид конструктора запроса, в который будут закинуты таблицы "текущий клиент", "товары", "дисконтные карты". Связи между ними выставлены?
P.S. А не проще просто пересчитать цены "на лету", имея такую мини таблицу: Для этого надо будет просто создать еще один запрос с параметром - номер карты. P.P.S Может проще базу выложить, вживую проще решить? |
------- Отправлено: 01:20, 02-12-2008 | #7 |
Ветеран Сообщения: 2755
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Delirium:
Цитата Delirium:
|
||
------- Последний раз редактировалось FRZ, 02-12-2022 в 13:13. Отправлено: 13:35, 02-12-2008 | #8 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Значит так. Готово все. Во вложении готовый вариант, надо только напильником обработать.
Суть в чем. Создаем запрос с параметром "номер дисконтной карты". На форме создаем ПолеСкидки (ему надо бы выставить свойство Не отображать на экране, забыл сделать).Его значение = результат выполнения запроса, который выбирает размер скидки в зависимости от номера карты. Далее... При нажатии на кнопку происходит выполнение запроса и в поле пихается номер скидки. Затем происходит проверка скидки, если это 5%, то выбираем все со столбцом скидка_5, если 10%, то со столбцом скидка_10 и т.д. Если нет скидки, выбираем цена_розн и выводим на экран. Весь код написан в кнопке "пересчитать заказы". Открывай вложение, смотри, будут вопросы, милости просим. |
------- Отправлено: 06:44, 03-12-2008 | #9 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать P.S. Да, и еще. Перед отправлением баз MDB очень рекомендую делать в Access Сервис - параметры - сжать и восстановить базу данных. Размер уменьшается в разы(сравни наши архивы по размеру).
|
------- Отправлено: 06:46, 03-12-2008 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Как изменить Access Lokal на Access Lokal and Internet? | amilo | Microsoft Windows Vista | 1 | 23-07-2009 00:00 | |
VBA - вопросы по Access 2003 | New DiploBoy | Программирование и базы данных | 1 | 21-01-2009 03:02 | |
Unable to access the computer. Access is denied | Maf1a | Microsoft Windows NT/2000/2003 | 2 | 13-07-2007 15:42 | |
Не обновляется. | WHITE BIRD | Microsoft Windows Vista | 15 | 08-06-2007 21:48 | |
PROXY-сервера ---- вопросы, вопросы, вопросы | Galosh | Хочу все знать | 2 | 09-07-2003 00:57 |
|