Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Вопросы по MS Access. Тема постоянно обновляется...

Ответить
Настройки темы
FRZ FRZ вне форума

Аватара для FRZ

Ветеран


Сообщения: 2755
Благодарности: 283

Профиль | Сайт | Отправить PM | Цитировать


Всем привет! С базами данных дружу неохотно, но курсовой делать надо, поэтому вопросов будет много, но все они будут не особо сложные для понимающих людей!
Итак, приступим.
Вопрос номер раз:
Допустим, есть 3 таблицы (товары, заказы и таблица с информацией по дисконтным картам). В таблице товары 4 цены (обычная, и 3 со скидками 5, 10 и 15%). Так вот, как автоматизировать подсчет 3 цен со скидками при вводе только цены в розницу? Пробовал через значения по умолчанию вбивать - выдает ошибку (см вложения).

Только большая просьба, объяснять, как новичку. Конечно рассусоливать сильно не надо, но по возможности поподробнее.
Надеюсь, в беде не бросите, заранее спасибо!

-------
Не все то windows, что висит....

Пока ты продолжаешь делать то, что делаешь, ты продолжаешь получать то, что получаешь...


Последний раз редактировалось FRZ, 02-12-2022 в 13:13.


Отправлено: 23:30, 27-11-2008 | #1


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


никогда не используйте в именах переменных в любой базе данных скобки (). Уберите их и проверьте.

Нет, все равно работать не будет, т.к. на момент создания записи в поле "цена" еще ничего нет, а значение выставляется автоматом ДО начала записи. Как вариант - хранить в базе всего одну переменную, а остальные высчитывать. Либо же оставить все поля, но создать запрос на обновление, который будет автоматом вставлять нужные данные. Выглядеть он будет примерно так(в виде SQL) :
Код: Выделить весь код
update table1 set цена5пр = цена - 0,05*цена, цена10пр = цена - 0,1*цена, цена15пр = цена - 0,15*цена
Для создания запроса просто создаем пустой запрос, переходим в вид SQL и вбиваем этот текст(поменяв имена переменных на нужные)

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:24, 28-11-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

FRZ FRZ вне форума Автор темы

Аватара для FRZ

Ветеран


Сообщения: 2755
Благодарности: 283

Профиль | Сайт | Отправить PM | Цитировать


Delirium, ок, спасибо! Я так поначалу и подумал, что в одной таблице скорее всего не получится, придется с запросами возиться =( . С запросом все получилось замечательно)

ДОБАВЛЕНО!
Так, вопрос номер два. Создал форму (см приложение), на ней поле со списком и просто список (большой). По умолчанию в списке большом отображается вся таблица с товарами, а в раскрывающемся списке отображаются категории (из запроса на выборку). Так вот теперь, как это все завязать, чтобы при выборе из выпадающего списка определенной категории, например, видеокарты, в поле большого списка импортировался список всех видеокарт? Запросы на выборку по определенной категории есть! Я так понимаю, придется использовать Visual Basic, а в нем не очень, поэтому просьба поподробнее. Хотя я более-мене знаю Delphi, поэтому свойства знаю где расположены

-------
Не все то windows, что висит....

Пока ты продолжаешь делать то, что делаешь, ты продолжаешь получать то, что получаешь...


Последний раз редактировалось FRZ, 02-12-2022 в 13:13.


Отправлено: 10:44, 28-11-2008 | #3

FRZ FRZ вне форума Автор темы

Аватара для FRZ

Ветеран


Сообщения: 2755
Благодарности: 283

Профиль | Сайт | Отправить PM | Цитировать


Так, вроде разобрался. Кому интересно:
Вешаем на событие "После обновления" в выпадающем списке такую строку (для каждой категории своя): If ПолеСоСписком0.Text = "Компьютер в сборе" Then Список2.RowSource = "SELECT Товары.IDg, Товары.Название, Товары.Цена_розн, Товары.Цена_5, Товары.Цена_10, Товары.Цена_15, Товары.Гарантия, Товары.категория_товара FROM товары WHERE Товары.IDcat = 1; "


Тут же возник вопрос номер три: Есть форма. На ней listbox, в него выводятся данные из запроса (см выше). Вопрос: можно как-нибудь на кнопку повесить событие копирования выделенной строки в Listox'e в отдельную таблицу (структура таблиц совпадает)? Ну или не на кнопку, а на 2 щелчек по строке, ну или еще как, подскажите пожалуйста!

-------
Не все то windows, что висит....

Пока ты продолжаешь делать то, что делаешь, ты продолжаешь получать то, что получаешь...

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:51, 29-11-2008 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Ну если только вешать обработку на двойной клик на список и в коде уже прописать примерно так:
Dim str as String
str = список1

В str будет лежать индекс щелкнутой строки. Потом можно создать запрос с параметров, который будет отбирать строку из таблицы и кидать в нужную "корзину".

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:17, 01-12-2008 | #5

FRZ FRZ вне форума Автор темы

Аватара для FRZ

Ветеран


Сообщения: 2755
Благодарности: 283

Профиль | Сайт | Отправить PM | Цитировать


Delirium, Спасибо! так и сделал. все работает!!!

Так, вопрос номер три. Теперь мне надо написать сложный запрос. Сколько мучался - ничего не получается =( . (Рисунок прикрепил). Итак вкратце что мне надо: Чтобы по щелчку на кнопке "Пересчитать цены" бралось значение из поля (например 12), Находилась в таблице Дисконтные_карты строка с номером карты (12), смотрелось в этой строке идентификатор скидки (IDs в нашем случае 2), В соответствии с этим идентификатором из таблицы Товары выбирался нужный столбик с ценами (пронумерованы от 0. В нашем случае 2) и этот столбик полностью копировался в столбик цен в таблице Текущий_клиент. Собственно все

Понимаю, что все несколько запутано, но это наверное последнее, что нужно сделать и курсовой будет готов! Очень надеюсь на помощь
(кстати, поле идентификатора скидки IDs не с чем не связано, так что если что тип данных можно поменять. Сейчас стоит числовой 0,1,2,3)

-------
Не все то windows, что висит....

Пока ты продолжаешь делать то, что делаешь, ты продолжаешь получать то, что получаешь...


Последний раз редактировалось FRZ, 02-12-2022 в 13:13.


Отправлено: 22:31, 01-12-2008 | #6


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Мда. Как то неудобно со столбцами.... Вы можете привести внешний вид конструктора запроса, в который будут закинуты таблицы "текущий клиент", "товары", "дисконтные карты". Связи между ними выставлены?


P.S. А не проще просто пересчитать цены "на лету", имея такую мини таблицу:
Код: Выделить весь код
Номер_карты    IDs    Скидка
12   1          5%
12   2          10%
12   3          15%
Для этого надо будет просто создать еще один запрос с параметром - номер карты.

P.P.S Может проще базу выложить, вживую проще решить?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:20, 02-12-2008 | #7

FRZ FRZ вне форума Автор темы

Аватара для FRZ

Ветеран


Сообщения: 2755
Благодарности: 283

Профиль | Сайт | Отправить PM | Цитировать


Цитата Delirium:
Вы можете привести внешний вид конструктора запроса, в который будут закинуты таблицы "текущий клиент", "товары", "дисконтные карты" »
Эмм, ка-то не понял вопроса? Я конструктором запросов не пользуюсь (не понимаю, как он работает). Я все запросы в основном на SQL пишу.
Цитата Delirium:
Связи между ними выставлены? »
Нет, таблицы Товары, Дисконтные карты независимы. Таблицы "Текущий клиент" и "Текущий заказ" используются для временного хранения данных о заказе (пока не оформлен) и товаров со скидками для текущего клиента (в зависимости от номера карты). В конце концов все заказы сливаются в одну табличку и там хранятся. Для этой таблички есть связи. Базу прикрепил! Посоветуйте, как мне лучше сделать, только чтоб не очень сложно было Кстати, можно и на лету пересчитать. Так даже наверное удобнее будет...

-------
Не все то windows, что висит....

Пока ты продолжаешь делать то, что делаешь, ты продолжаешь получать то, что получаешь...


Последний раз редактировалось FRZ, 02-12-2022 в 13:13.


Отправлено: 13:35, 02-12-2008 | #8


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar курсач-БД(Delirium).rar
(39.2 Kb, 25 просмотров)

Значит так. Готово все. Во вложении готовый вариант, надо только напильником обработать.
Суть в чем. Создаем запрос с параметром "номер дисконтной карты". На форме создаем ПолеСкидки (ему надо бы выставить свойство Не отображать на экране, забыл сделать).Его значение = результат выполнения запроса, который выбирает размер скидки в зависимости от номера карты. Далее...
При нажатии на кнопку происходит выполнение запроса и в поле пихается номер скидки. Затем происходит проверка скидки, если это 5%, то выбираем все со столбцом скидка_5, если 10%, то со столбцом скидка_10 и т.д. Если нет скидки, выбираем цена_розн и выводим на экран. Весь код написан в кнопке "пересчитать заказы". Открывай вложение, смотри, будут вопросы, милости просим.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:44, 03-12-2008 | #9


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


P.S. Да, и еще. Перед отправлением баз MDB очень рекомендую делать в Access Сервис - параметры - сжать и восстановить базу данных. Размер уменьшается в разы(сравни наши архивы по размеру).

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:46, 03-12-2008 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Вопросы по MS Access. Тема постоянно обновляется...

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Как изменить 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




 
Переход