Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Access VBA

Автор: Changeless
Дата сообщения: 03.06.2010 23:23
Спасибо, но я уже давно решил.
Не [TvoePole], а твоя переменная. Как раз когда дата в поле - задать нужный формат даты не проблема. Проблемы начинаются когда дата передается в переменную. Если переменная определена как Date функция формат не помогает. Вышел из ситуации определив тип переменной как String. В этом случае с содержимым можно делать любые операции и формат не изменяется при передаче значения в переменную.
Автор: mauar
Дата сообщения: 06.06.2010 19:22
Как в форме создать вычисляемое поле, в котором отображалось бы количество дней, оставшихся до 1 января 2011 года.
Автор: Changeless
Дата сообщения: 06.06.2010 22:36
В свойстве данных этого поля:
=#01.01.2011#-Now()
При этом выставь формат поля - Фиксированный, число десятичных знаков - Ноль.
Автор: mauar
Дата сообщения: 06.06.2010 23:58
Это вроде из экселя в ассеss это не прокатывает

Добавлено:

Цитата:
В свойстве данных этого поля:
=#01.01.2011#-Now()
При этом выставь формат поля - Фиксированный, число десятичных знаков - Ноль.

Получилось, спасибо!!!
А как сделать на форме с кнопкой, при нажатии на которую случайным образом изменялся бы цвет фона формы?
Автор: Changeless
Дата сообщения: 07.06.2010 10:52
Private Sub BTN_Click()
Me.OblastDanih.BackColor = Int((16777215 * Rnd) + 1)
End Sub
Где OblastDanih это переименованная область данных. Событие, как ты понял, вешается на нажатие твоей кнопки.
Автор: Wukuze
Дата сообщения: 07.06.2010 11:21
Добрый день, подскажите пожалуйста, короче есть база, где множество повторяющихся данных в одном из столбцов. Надо сделать выборку уникальных данных по этому столбцу, то есть если эти данные уже есть в выборке, то просто игнорировать их копии.
Автор: Changeless
Дата сообщения: 07.06.2010 11:57
Такая конструкция запроса будет иметь вид:
SELECT DISTINCT <Поле>
FROM <Таблица>;
Удобно создавать запрос в режиме конструктора, а когда нужна выборка уникальных значений переключаться в режим SQL и дописывать слово DISTINCT.
Автор: mauar
Дата сообщения: 07.06.2010 22:25
Есть форма, на ней есть поле оклад, есть кнопка при нажатии на которую оклад должен увеличиться на 25% как это сделать?
Автор: Changeless
Дата сообщения: 08.06.2010 18:03
Если тупо и по простому, то так:
Private Sub Button_Click()
Me.TvoePole.value = Me.TvoePole.value * 1.25
End Sub
Автор: corollansk
Дата сообщения: 09.06.2010 06:10
помогите разобраться!?!
вроде сделал по уму - основная таблица + 2 таблицы подстановки.
так вот: в отчетах иногда, вместо подставных значений выводятся их коды.
сейчас делаю запрос - получаю код, без вариантов.
как быть , помогите...
Автор: Changeless
Дата сообщения: 09.06.2010 10:42

Цитата:
иногда

Иногда или всегда? Отчет строится на основании запроса? В запросе ты просто указываешь связь по уникальным кодам между таблицами, а вот выборку из этих таблиц делаешь по их полям. Но даже если ты случайно вытащил код в запрос, ты можешь указать для поля в котором выводятся ошибочно "их коды" источник данных "Желаемое поле" из твоего запроса.
В идеале - базу в студию (или фрагмент базы), сложно гадать на кофейной гуще.
Автор: mauar
Дата сообщения: 12.06.2010 14:28
Как сохранить сводную таблицу чтобы она открывалась при открытии (загрузки базы) в режиме сводной таблице, а не в обычном табличном режиме?
Автор: Changeless
Дата сообщения: 13.06.2010 22:51
Открой таблицу в режиме конструктора, затем (Alt+Enter или...): Вид -> Свойства -> Режим по умолчанию -> "Сводная таблица"
Загружаться будет долго + так ты себя сильно ограничиваешь, лучше не сводную таблицу, а сводную таблицу в форме.
Автор: mauar
Дата сообщения: 14.06.2010 14:16
Есть таблица с сотрудниками, в ней есть столбцы с сотрудниками и отделы в которых они работают, надо создать сложную форму для учёта сотрудников по отделам.
То бишь отдел такой то и работают сотрудники такие то
Как это сделать?
Автор: Changeless
Дата сообщения: 14.06.2010 16:24
Эти все вопросы что ты задаешь, это что какой-то учебный курс?

Цитата:
и отделы

Что такое "Отделы" это название столбца или содержимое столбца сотрудники? Опиши подробно название нужных тебе полей и их содержание. Какой вид должен быть у "сложной формы" (Например при выборе из списка "Отдела №1", в форме из общего количества сотрудников остаются только те, что работают в этом отделе; или к примеру можно воспользоваться для наглядности вложенной ленточной формой)?
Автор: mauar
Дата сообщения: 14.06.2010 17:05
Changeless

Есть таблица, в ней есть столбцы ФИО сотрудников и есть столбец отделы где эти сотрудники
работают, например инженерный отдел, экономический и так далее. Только поле Отдел
он у меня присоединенный из таблицы Отделы.
Насчет вложенной ленточной формы я не подумал, забыл, что то подзабыл как её сделать, если не сложно напомните пожалуйсто?
Автор: Changeless
Дата сообщения: 14.06.2010 18:10

Цитата:
в ней есть столбцы ФИО сотрудников

Столбцы или столбец? Должен быть только один столбец со всем сотрудниками!
Я не зря спросил о виде "сложной формы", не нужно игнорировать мои вопросы. Вариантов решения задачи может быть очень много, описать все я немогу и совсем не обязательно использовать ленточную форму. Если тебе абсолютно все равно, то по простому можно сделать так:
1) Создай форму с двумя объектами:
- полем со списком (тип его источника сток установи на "Таблица или запрос" а источник сток вбей такой - SELECT SotrudnikName FROM TvoyaTablica ORDER BY SotrudnikName;
- список ( тип источника строк - список значений)
2) Далее можно пойти двумя путями - программно задать этому списку свойство фильтр, указав в качестве значения значение поля со списком, или проще в источник сток вставить запрос вида - SELECT SotrudnikName FROM TvoyaTablica
WHERE (((TvoyaTablica.Division)=[Forms]![TvoyaForma]![Имя твоего поля со списком]));
3) Возможна ситуация что при переключении отделений список обновлятся не будет, тогда нужно на событие "после обновления" твоего поля со списком повесить, например: Me.Имя списка.Requery
P.S. По хорошему это все делается программно - ADO или DAO RecordSet
Автор: Yorcfild
Дата сообщения: 14.06.2010 18:16
Есть задание по Access: запросы, формы, отчеты.

Формы:

1. На базе таблицы "студенты" и "общежитие" построить табличную форму "Студенты АП-группы" с полями "Фио", "Адрес" и "год рождения". Поле "Фио" должно содержать фамилию, имя и отчество студента, а поле "Адрес" - сведение об общежитии и комнате. Список должен быть отсортирован по фамилиям

2. На базе таблицы "студенты" и "общежитие" построить табличную форму " Девушки ММ" с полями: "Фио", "Курс", "Группа", "Адрес" и "дата рождения". Поле "Фио" должно содержать фамилию и имя студентки, а поле "Адрес" - сведение об общежитии и комнате. Список отсортировать по группам а потом по фамилиям.

3. Построить составную форму "Лучшие студенты" Главная форма должна содержать название предмета, а подчиненная форма - список студентов получивших по этому экзамену 4 и 5. Список должен включать "номер группы", "фамилию, имя" и оценку, и должен быть отсортирован по группам и фамилиям студентов.

4. Построить форму "списки групп", содержащую кнопки с номерами групп, При нажатии на кнопку должен появится список студентов соответствующей группы

Помогите пока построить эти формы сама БД тут зеркало bd.accdb
Автор: Changeless
Дата сообщения: 14.06.2010 18:25
Yorcfild
Это не подход к решению проблемы!!! В твоем задании нет ничего сложного. Лучше спроси, что у тебя не получается и я тебе помогу.
Автор: Yorcfild
Дата сообщения: 14.06.2010 19:19
Changeless
эм, не получается именно объединить, отдельные столбцы Фамилия Имя и Отчество в один столбец ФИО, а так же № общежития и комнату так же само только в другой столбец, я сам понимаю что это несложно, но застрял пока на этом...
Автор: Changeless
Дата сообщения: 14.06.2010 19:48
Ок.
Открой запрос в режиме конструктора, вытащи из таблиц нужное количество полей для объединения. В пустом столбце конструктора в поле, которое называется "Поле" кликни ПКМ и нажми построить. Введи выражение по аналогии:
Комбинированное поле: IIf(Таблица1.Фамилия Is Null Or Таблица1.Фамилия='';'';Таблица1.Фамилия)+IIf(Таблица1.Имя Is Null Or Таблица1.Имя='';'';" " & Таблица1.Имя)+IIf(Таблица1.Отчество Is Null Or Таблица1.Отчество='';'';" " & Таблица1.Отчество) и далее по аналогии
Где "Комбинированное поле" - будет желаемое название столбца при выводе запроса; функция Iff нужна на тот случай если одно из объединяемых полей окажется пустым. Сделай по аналогии №общежития и комнату. Можно и без Iff но получиться не так красиво, писать нужно так: =[Фамилия]&", "&[Имя]&", "&[Отчество] (если не ошибаюсь так можно делать прямо в текстовом поле формы). Расказать тебе как сделать так, что бы имя и отчество сокращались до первых букв, например так Иванов А.С.? Тебя зауважают.
Автор: Yorcfild
Дата сообщения: 14.06.2010 20:52
Changeless
вышло объединить при помощи запроса, а можно чтоб те данные которые вывел запрос на объединение столбцов, вывести в отдельную таблицу?.

Но если начинать с 1-го задания: На базе таблицы "студенты" и "общежитие" построить табличную форму "Студенты АП-группы" с полями "Фио", "Адрес" и "год рождения". Поле "Фио" должно содержать фамилию, имя и отчество студента, а поле "Адрес" - сведение об общежитии и комнате. Список должен быть отсортирован по фамилиям

теперь вопрос: как сортировать в самой форме по фамилиям? и как вывести в форме только данные студентов (мужиков, а не девушек) АП группы

П,С чем дальше копаю тем глубже захожу в тупик, сижу покрываюсь потом, завтра днем надо сдавать...
Автор: Changeless
Дата сообщения: 14.06.2010 21:53

Цитата:
вывести в отдельную таблицу?.

Это решается запросом на добавление, только я не пойму зачем это тебе? Это что тоже есть в задании? По-моему ты не в ту степь копаешь.
Делается это задание так: Вытягиваешь в запрос две таблицы (между ними обязательно должна быть связь по каким-то полям - обычно она по ключевому полю), добавляешь нужные тебе поля, указываешь группировку "по возрастанию" (это то, что ты называешь сортировкой, только почти всегда это делается на уровне запроса, а не формы). Поскольку в том запросе кроме оригинальных полей этих таблиц есть "Комбинированное поле" с ФИО (см.предыдущий пост) ты указываешь группировку для оригинального поля "Фамилия". Создаешь табличную форму с двумя полями. Источник записей для формы это твой запрос. Источник записей для твоих двух полей это всего два поля из твоего запроса.

Цитата:
как вывести в форме только данные студентов (мужиков, а не девушек)

Если записи мужчин отличаются по каким либо признакам от записей женщин, тогда можно. Назови чем отличаются и я скажу как переделать наш запрос.
Кстати, я что-то не припомню в твоем задании такого пункта?

P.S. Отставить панику, солдат.
Автор: Yorcfild
Дата сообщения: 14.06.2010 22:14
Changeless
ох, первые 2-ва задания 4-е сделал осталось еще 3-тье

3. Построить составную форму "Лучшие студенты" Главная форма должна содержать название предмета, а подчиненная форма - список студентов получивших по этому экзамену 4 и 5. Список должен включать "номер группы", "фамилию, имя" и оценку, и должен быть отсортирован по группам и фамилиям студентов.

3. Как я понимаю нужно сначала создать запрос который содержит №Группы, Фамилия Имя, и становлюсь в тупик как в запрос вставить предмет, а потом сделать выборку по оценками
Автор: dneprcomp
Дата сообщения: 14.06.2010 22:53
Changeless

Цитата:
указываешь группировку "по возрастанию" (это то, что ты называешь сортировкой,

ORDER BY - сортировка
GROUP BY - группировка
Если "по возростанию", то это все же ORDER BY - сортировка
T.ч. клиент был прав
Автор: Changeless
Дата сообщения: 14.06.2010 23:03

Цитата:
как в запрос вставить предмет

Создай одиночную форму, а в ней ленточную или табличную. Название предмета - это скорее всего один из столбцов твоей таблицы. В одиночной форме создай поле со списком (Тип источника строк укажи - таблица или запрос, Источник строк - запрос вида: Открой конструктор, вытащи одно единственное (!!!) поле (то где указывается предмет) из нужной таблицы, укажи для него сортировку по возрастанию, переключись в вид SQL и после слова Select добавь слово Distinct (должно получиться - Select Distinct поле1...). В этом же режиме скопируй содержимое и вставть в поле источник строк твоего поля со списком.

Цитата:
потом сделать выборку по оценками

Ты наверно обращал внимание, в конструкторе запросов есть пункты условие отбора. Так вот, тебе нужно создать запрос в котором будут все поля (номер группы, фамилию, имя и оценка), в столбце оценка в пункте условие отбора ввести "4" и на одну строчку ниже (там где "или") ввести "5". Отсортируй так как сказано в задании: сначала по возрастанию для поля Группы, а затем для поля Фамилии.
Далее необходимо добавить значение поля со списком в запрос. Для этого добавь поле название предмета в запрос, сними галочку с пункта вывод на экран и в поле условие вбей [Forms]![Имя твоей формы]![Имя поля со списком одиночной формы]. Теперь на событие после обновления поля со списком добавь программу:
Me.Имя вложенной формы.Requery где имя вложенной формы это имя формы внутри одиночной формы, а не настоящее имя вложенной формы (будь внимателен). Теперь при переключении поля со списком "Предмет" будут выводится разные списки студентов в подчиненной форме.

Добавлено:

Цитата:
Если "по возростанию", то это все же ORDER BY - сортировка

Ну да, че-то перемкнуло.
Yorcfild
4й пункт это просто кнопки по нажатию на которые открываются запросы ограниченные условием "Номер группы" по одноименному полю.
Автор: Yorcfild
Дата сообщения: 15.06.2010 08:42
Changeless
спс, чуток разобрался пойду сдаваться
Автор: DocBeen
Дата сообщения: 21.06.2010 19:11
Ребята подскажите такой вот вопрос:

Разработать базу данных "Производство" для учета расходования материалов на производство станков.
Предусмотреть таблицы:
"Станки" с полями: НомерОбъекта (тип – счетчик, ключевое поле), НаименованиеСтанка (тип – текстовый), КоличествоКомплектующих (тип – числовой), Себестоимость (тип – Денежный);
"Склад" с полями: КодДетали (тип – счетчик, ключевое поле), НаименованиеДетали (тип – текстовый), Количество (тип – числовой), Цена (тип – Денежный);
"РасходМатериалов" с полями: НомерОбъекта (тип – числовой), КодДетали (тип – подстановочное поле из таблицы "Склад", по названию детали подставляется ее код), Количество (тип – числовой), Цена (тип – подстановочное поле из таблицы "Склад", по коду детали подставляется ее цена), Дата (тип – дата);


как сделать чтоб в РасходМатериалов цена бралась из Склад - по коду ... знаю что как то просто, а вот как ваще из головы вылетело...
Автор: Changeless
Дата сообщения: 21.06.2010 20:22

Цитата:
как сделать чтоб в РасходМатериалов цена бралась из Склад - по коду

Для этого в "Схеме данных" нужно установить связь между полем, например, "Склад" таблицы "Расход материалов" и полем "Код" таблицы "Склад". Перед объединением поле "Код" таблицы "Склад" сделай ключевым. Забегая вперед скажу, что на этапе создания запроса, в констуктор нужно будет вытянуть две таблицы: Склад и Расход материалов (Если пишешь руками, то это констуркции left join, right join, inner join - тип объединения зависит от твоих задачь). При этом код в запрос вытаскивать не нужно (если это не предусмотрено).
Автор: mdid
Дата сообщения: 13.07.2010 20:53
не нашел сегодня как создавать такие поля типа Вложение через sql запрос...access 2007 и написано что вроде тип этот Attachment..а вот при создании запроса ругается

Код:
create table ttt
(
[ID] AutoIncrement NOT NULL PRIMARY KEY,
[RecipName] varchar,
[Email] varchar,
[attach] Attachment
)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: BDE - траблы, помогите пожалуйста срочно...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.