Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Access

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Открыть новую тему     Написать ответ в эту тему

Wizzz_art



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

HELP | Обсуждение | FAQ

 
| В варезнике ищите по полному наименованию: Microsoft Office 2003-2016 |

 
Реляционная система управления базами данных (СУБД) корпорации Microsoft. Входит в состав пакета Microsoft Office. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.
 

Смежные темы:
Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
Программы » Word FAQ | Excel FAQ
Прикладное программирование » Word VBA | Excel VBA | Access VBA  
Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

Всего записей: 310 | Зарегистр. 28-04-2002 | Отправлено: 19:06 12-09-2002 | Исправлено: AlexDAT, 03:36 03-09-2020
Star Ik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The Invisible
Для разработки кода макроса мало исходной информации и много "допустим".
Нужно знать структуру файлов *.xls (один или несколько листов, есть ли там посторонняя информация - другие таблицы, диаграмы и т.п.), структуру таблиц, колонки для фильтрации одни и те же, или могут быть разными. Если хотя бы некоторые из этих параметров могут меняться, то это будет уже не макрос, а небольшое приложение с интерфейсом выбора параметров, кодом их анализа, ообработки исключительных ситуаций (ошибок), выполнения объединения и фильтрации данных.
В общем, для начала неплохо было бы взглянуть на образец файла .xls.

Всего записей: 62 | Зарегистр. 20-01-2006 | Отправлено: 10:01 13-02-2007
Pantera3587

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Star Ik
Привет. Послала тебе сообщение с прикрепленной базой, дай знать о получении. У меня снова скопились вопросы. Если базу опять не получится получить, то вот какие вопросы, можно на примере той базы, которую ты мне прислал.
Только для начала нужно дополнительно сделать таблицу Заказы (КодЗаказ, Артикул, Наименование, Цена, Количество, №Договора, ДатаОформления, Месяц, Год, Сотрудник, Клиент). В таблицу Подбор добавить поле Количество. Сделать запрос на добавление на основе таблицы Подбор и добавлять данные в таблицу Заказы. Сделать таблицу, например , Оформление (Код, Сотрудник, Клиент, ДатаОформления, Месяц, Год) и на основе этой таблицы сделать форму Оформление, куда ввести все поля. В форме сделать кнопку КнОформление, а в форме ПодборТовара - кнопку В заказы (кнЗаказы) и еще в список Подбор добавить поле Количество.
Если нажать на кнопку В заказы, должна открываться форма Оформление, далее (вопросы),  
1. например в форму вносятся данные: сотрудник, клиент и т.д. и нажимается кнопка КнОформление и вот что должно происходить: внесенные данные из этой формы должны добавиться в таблицу Заказы для всех уже добавленных данных из таблицы Подбор, т.е. мы как бы формируем заказ. В принципе в своей базе я использовала тот же код, что и для добавления из одного списка в другой, только вместо ADDNEW использовала команду EDIT, но при этом данные добавляются, но только в одну первую строчку, а в остальные нет.
2. Еще в форму ПодборТовара нужно вставить элемент Поле (Кол), внося в это поле любую цифру она должна изменять в списке Подбор  поле Количество, либо щелкая по любому наименованию в списке Товар, сколько нажатий, такое и количество. А еще около этого элемента может быть расположен элемент типа Счетчика, который бы изменял цифра в поле Кол. Только такого элемента почему то нет в Access, но есть в Excel. У меня была сделана форма в Excel, где был вставлен элемент TextBox, кнопка CommandButton и элемент
SpinButton. А код был такой:
Private Sub OKButton_Click()
    If CStr(SpinButton1.Value) = TextBox1.Text Then
        ActiveCell = SpinButton1.Value
        Unload Me
    Else
     
        MsgBox "Неправильный ввод", vbCritical
     
    TextBox1.SetFocus
        TextBox1.SelStart = 0
        TextBox1.SelLength = Len(TextBox1.Text)
    End If
     
End Sub
 
Private Sub SpinButton1_Change()
    TextBox1.Text = SpinButton1.Value
    Dim Новое_значение  As Variant
    Новое_значение = Val(TextBox1.Text)
    If Новое_значение >= SpinButton1.Min And _
       Новое_значение <= SpinButton1.Max Then _
       SpinButton1.Value = Новое_значение
     
End Sub
 
Может поможешь в решении этих вопросов? Жду ответа.

Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 16:58 15-02-2007
Star Ik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pantera3587
Базу получил. Разберусь в выходные и вышлю результат.
 

Всего записей: 62 | Зарегистр. 20-01-2006 | Отправлено: 22:41 15-02-2007
larin1069

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
access 2000
есть таблица  Assigning
 
ID   PatientID    DataPrich
1         55         01.01.2002
2         56         19.02.2003
3         57         19.03.2003
4         58         22.04.2004
5         55         19.05.2003
6         55         14.06.2004
7         58         19.07.2005
8         99         30.10.2006
9         55         19.08.2005
10       55         11.09.2006
 
 
Я что то туплю.
 
Как сделать запрос, чтобы была выборка PatientID только с последней датой DataPrich, чтобы потом можно было выбрать тех кто не посещал более 2-х лет, или если можно, сразу в одном запросе.
 
Я что то туплю

Всего записей: 20 | Зарегистр. 25-01-2007 | Отправлено: 18:09 16-02-2007
Pantera3587

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Удалено
 
Добавлено:
larin1069

Цитата:
чтобы была выборка PatientID только с последней датой DataPrich

 
Попробуй так: в запросе в строке Условия отбора под полем DataPrich  
запиши следующее:
DLast("[Assigning]![DataPrich]";"[Assigning]")
 
это условие покажет только последнюю запись.
 
Добавлено:
larin1069

Цитата:
или если можно, сразу в одном запросе

 
сразу, кажется, не получится, но вот что можно попоробовать еще: сделать другой запрос на таблицу, в этом запросе добавить поле Year: Year([DataPrich]), а в строке Условия отбора под этим полем записать следующее условие:
 
<Year(DLast("[Assigning]![DataPrich]";"[Assigning]"))-1
 
Попробуй, по крайней мере выдает все записи отстоящие от последней даты на 2 года раньше.
Может, конечно, кто-то знает другой способ?

Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 20:04 16-02-2007 | Исправлено: Pantera3587, 21:32 16-02-2007
Star Ik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pantera3587
Держи отрихтованную базу и комментарии к ней! Отправил по e-mail.
 
 
Добавлено:
larin1069
Создай запрос LastData
 
SELECT Assigning.PatientID, Max(Assigning.DataPrich) AS LastDataPrich, DateDiff("yyyy",[LastDataPrich],Date()) AS DiffDate
FROM Assigning
GROUP BY Assigning.PatientID;
 
затем запрос 2Year
 
SELECT LastData.*
FROM LastData
WHERE (((LastData.DiffDate)>2));
 
и будет тебе счастье!

Всего записей: 62 | Зарегистр. 20-01-2006 | Отправлено: 21:50 18-02-2007
Pantera3587

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Star Ik
Базу получила. Большое спасибо. До скорой связи.

Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 17:39 19-02-2007
larin1069

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Добавлено:  
larin1069  
Создай запрос LastData  
 
SELECT Assigning.PatientID, Max(Assigning.DataPrich) AS LastDataPrich, DateDiff("yyyy",[LastDataPrich],Date()) AS DiffDate  
FROM Assigning  
GROUP BY Assigning.PatientID;  
 
затем запрос 2Year  
 
SELECT LastData.*  
FROM LastData  
WHERE (((LastData.DiffDate)>2));  
 
и будет тебе счастье!

 
 
Спасибо.  
До меня уже "дошло".
Сделал почти именно так.

Всего записей: 20 | Зарегистр. 25-01-2007 | Отправлено: 21:08 19-02-2007
Pantera3587

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Star Ik
Привет! У меня уже вопросы. Выслала письмо  по e-mail.

Всего записей: 40 | Зарегистр. 20-10-2006 | Отправлено: 22:09 19-02-2007
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребята, возник такой вопрос:
есть таблица.  
Дата,Столбец1, Стобец2, ИТОГО
Мне надо чтобы в каждой строке было так:  
[ИТОГО]=[Столбец1]+[Столбец2]
причём ИТОГО считалось сразу после внесения данных в [Столбец1] или [Столбец2]
Енто я не придумал как сделать. Поэтому подумал, что можно всё сделать в форме.
Сделал форму. Написал, чтобы в форме было в [ИТОГО]
=[Столбец1]+[Столбец2]
в форме считает всё прекрасно. Как теперь сделать чтобы из формы енто само заносилось ещё и столбец [ИТОГО]?

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 07:11 22-02-2007
Star Ik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VovaMozg
В самой таблице енто сделать нельзя, в запросе - элементарно:
 
SELECT Таблица1.Дата, Таблица1.Поле1, Таблица1.Поле2, [Поле1]+[Поле2] AS ИТОГО FROM Таблица1;
 
А ведь запрос, это та же таблица - в чем проблема?
 
Pantera3587
Материал по первому вопросу отправил на Mail. Остальное - чуть позже.
 

Всего записей: 62 | Зарегистр. 20-01-2006 | Отправлено: 17:00 22-02-2007
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Star Ik
А можно поподробнее, а то я в таком виде вставляю в запрос у меня матюгается...
Мож можно в форме сделать? я там делаю Edit для столба итого, чтобы он считался у меня получается, а вот сам в таблицу результат писаться не хочет...

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 15:20 25-02-2007
Sws



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VovaMozg
А зачем? Такой подход противоречит принципам нормализации в части избыточно хранящихся данных. Абсолютно нет необходимости хранить таую информацию, которая получается расчетом из имеющейся.  
 

Всего записей: 570 | Зарегистр. 27-02-2002 | Отправлено: 21:05 26-02-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sws

Цитата:
Абсолютно нет необходимости хранить таую информацию, которая получается расчетом из имеющейся.  
Не совсем верно.
'ИТОГО' = 'ЦЕНА' x 'КОЛИЧЕСТВО'
Цена - величина, меняющаяся со временем. Соответственно, репорт, сделанный в этом году, будет не соответствовать такому же репорту за тот же период, но сделанному в прошлом году.
Можно конечно хранить все изменения цен, но тогда очень усложняются правила расчета. Проще хранить 'ИТОГО' на момент исполнения.
 
VovaMozg
Для сохранения в таблицу вообще-то используют не SELECT, a UPDATE

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:02 27-02-2007 | Исправлено: dneprcomp, 00:06 27-02-2007
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dneprcomp да именно. Начальству нужны отчёты, чтобы он сам мог залезть и посмотреть прямо в таблице и чтобы, он потом мог сохранить только итого... в общем сохранить в столбец иныу действительно нужно...

Цитата:
Для сохранения в таблицу вообще-то используют не SELECT, a UPDATE

а какой должен быть синтаксис? Т.е  что мне написать в свойство яейки в форме, в которой будет показываться [ИТОГО]?

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 06:52 27-02-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VovaMozg
Что-нибудь вида  
UPDATE Таблица1 SET Таблица1.[ИТОГО] = 50;
или
UPDATE Таблица1 SET Таблица1.[ИТОГО] = тхт1.Техт;

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 07:14 27-02-2007
Star Ik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VovaMozg

Цитата:
а то я в таком виде вставляю в запрос у меня матюгается...  

Такой простенький запрос может ругаться только в трех случаях: ошибка в имени таблицы или полей (у меня Поле1, у тебя Столбец1), нечисловой тип данных суммируемых полей, нетуда было вставлено SQL-выражение запроса. Но раз уж ИТОГО нужно именно в таблице, привожу подробную инструкцию (без SQL-выражений - с ними, похоже, проблема).
1. Если в таблице уже есть записи, открываем конструктор запросов и добавляем в него нашу злосчастную таблицу. Вставляем в бланк запроса лишь поле ИТОГО, хотя можно и все - роли не играет. В меню "Запрос" выбираем "Обновление". В бланке запроса в столбце поля ИТОГО в строке Обновление вводим
[Поле1]+[Поле2]
Нажимаем "Запуск" (!) и подтверждаем свои намерения. Проверяем результат.
Если таблица изначально пуста - пункт 1 можно пропустить, это была лишь подготовка таблицы к эксплуатации.
2. В окне базы выделить название таблицы -> Панель инструментов -> Новый объект -> Автоформа, либо в своей форме привязать итоговое поле к полю ИТОГО таблицы.
В режиме конструктора формы открыть свойства любого поля, входящего в сумму (Поле1 или 2), выбрать вкладку События, строку "После обновления", в ней из списка "Процедура..." и нажать кнопку "...". В тело процедуры, тоесть между строками "Private Sub..." и "End Sub", вписать строку:
   [ИТОГО] = [Поле1] + [Поле2]
Аналогично поступить со вторым полем и вставить в его процедуру это же выражение.
ВНИМАНИЕ! В обоих пунктах необходимо использовать СВОИ названия полей.
Этот способ будет работать только если заполнять таблицу и изменять данные в ней только через форму.

Всего записей: 62 | Зарегистр. 20-01-2006 | Отправлено: 14:59 27-02-2007
do_nor



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос возможно детский однако… В окне MS Access в верхнем левом угле иконка и надпись Microsoft Access – [название базы данных]. Так вот как название Microsoft Access изменить? Я делал это раньше, но забыл )).

Всего записей: 14 | Зарегистр. 26-02-2007 | Отправлено: 15:49 27-02-2007
Star Ik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
do_nor

Цитата:
Вопрос возможно детский однако…  

Конечно детский, однако Сервис -> Параметры запуска -> Заголовок приложения. И что-нибудь исконно русское, в пику дядюшке Биллу.

Всего записей: 62 | Зарегистр. 20-01-2006 | Отправлено: 21:36 27-02-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Star Ik

Цитата:
И что-нибудь исконно русское, в пику дядюшке Биллу

Посконное...  
Не надоело фигу в кармане 'дядюшке Биллу' показывать? Впрочем, видимо это и есть 'исконно русское' занятие...

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:32 28-02-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Компьютерный форум Ru.Board » Компьютеры » Программы » Microsoft Access


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru