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

» Про MS Access

Автор: grbdv
Дата сообщения: 20.08.2012 12:08
msmih
[no]У меня щаз нет Акса под руками. Поэтому по памяти:
1. SELECT DISTINCT [Field1] FROM [Table]; выбираем уникальные записи по Полю 1
2. Создаем рекордсет на базе этого запроса
3. По каждой записи (каждому значению Поля 1) строим новый запрос SELECT [...] FROM [Table] WHERE [Field1] = Value AND [Field2] = N
4. На этом SQL строим рекордсет.
5. Если в нем есть записи - пробегаемся по ним и редактируем.

Как-то так... Спецы, ужаленные SQL, модет и водин запрос все это впихнули бы. Но я только учусь :) Да и нагляднее так...[/no]
Автор: msmih
Дата сообщения: 20.08.2012 13:02
grbdv

спасибо, но это сложная конструкция. может есть у кого еще мысли?
Автор: grbdv
Дата сообщения: 20.08.2012 13:12
msmih
Цитата:
спасибо, но это сложная конструкция

Не за что.
Поясни, плз, "сложная". С чем сравниваешь? Просто только кошки родятся.
Автор: A1exSun
Дата сообщения: 15.09.2012 17:22
Ребят, подскажите. В версии 2003 был мастер таблиц, на сайте MS прочитал:

Цитата:
Модели вместо мастера таблиц . В Access 2003 для быстрого создания таблиц использовался мастер таблиц. В Access 2007 мастер таблиц был заменен шаблонами таблиц и полей. В Access 2010 шаблоны таблиц и полей заменены моделями.

Где эти модели в Access 2010?
Автор: 7yang7
Дата сообщения: 18.09.2012 07:11
Здравствуйте, проблема заключается в следующем. Имеется созданная база в Access 2007 на Windows 7. И там размер и стиль шрифта на кнопках и в различных отчетах отображается нормально, но при открытие на других компьютерах этой базы шрифт увеличивается и не влезает в размер кнопки или поля. Например на кнопке написано Закрыть, а при открытие на другом компьютере на этой же кнопке шрифты выглядит по другому и там написано уже Закры. И такой сбой не обязательно может происходить на каждом компьютере, а как то выборочно что ли. Подскажите пожалуйста как можно решить эту проблему.
Автор: Mikky72
Дата сообщения: 25.10.2012 18:46
Объясните, пожалуйста, как сделать такую логику заполнения базы (на примере персонала).
Допустим надо внести информацию по сотруднику в некую сводную таблицу "Персонал" - Фамилия, отдел, должность.
Фамилия вводится с клавиатуры (тут и ежу понятно как)
Отдел берется из списка отделов (например, мастер подстановок хорошо справится).
загвоздка вот в чем - как организовать, чтобы при заполнении поля "должность" выпадал список только по должностям в ранее выбранном отделе, а не полный список должностей в компании... Я так понимаю, надо как-то связать часть записей из таблицы "Полный список должностей" с нужной записью в таблице "Список отделов" и потом ещё как-то всё это увязать с общей таблицей...
Помогите, пожалуйста!
Заранее благодарен.
Автор: LorIps
Дата сообщения: 25.10.2012 19:24
Mikky72
Делается таблица Отделы. Делается таблица Должности. Делается связующая таблица Отдел-Должность, состоящая только из индексов Отделов и Должностей.

Выбрав Отдел, по его индексу выбираем из связующей таблицы соответствующие индескы должностей, по ним - их наименования. Можно и наоборот.
Автор: Mikky72
Дата сообщения: 25.10.2012 20:41
LorIps
Спасибо за ответ.
Можно чуть поподробнее?
Создал таблицу Отделы (1-конструкторский, 2-технологический), создал таблицу Должности (1-начальник, 2-конструктор, 3-технолог).
Создал таблицу Отдел-Должность и заполнил её путем подстановки кодов из таблиц Отделы и Должности (4 строчки: 1 1, 1 2, 2 1, 2 3).
А теперь нужна таблица Персонал (фамилия, отдел, должность) - как её создавать и заполнять?
Автор: LorIps
Дата сообщения: 25.10.2012 21:08
Mikky72

Цитата:
Создал таблицу Отдел-Должность и заполнил её путем подстановки кодов из таблиц Отделы и Должности (4 строчки: 1 1, 1 2, 2 1, 2 3).

Йез. 4 строчки, два поля.


Цитата:
А теперь нужна таблица Персонал (фамилия, отдел, должность) - как её создавать и заполнять?

Так и будет список полей:
User_ID - счетчик
фамилия - string
отдел - long
должность - long

В поля отдел и в должность будут заноситься не наименования, а их идентификаторы из справочников. Таблицы первого уровня - справочники. Их два - Отдел и Должность.

Вообще-то, это самые азы. Называется нормализация БД, что ли.
Все это есть в учебных базах Борей и Северный Ветер. Рекомендую посмотреть.
Автор: Mikky72
Дата сообщения: 25.10.2012 21:34
LorIps
Так я вроде и так делаю.
Я через мастер подстановок подставляю в таблицу Персонал в поле отдел идентификатор отдела из таблицы Отдел, а в поле Должность её идентификатор, но - если брать идентификатор из таблицы Должность - выпадают все три варианта (1 2 3), а если из таблицы отдел-должность, то вообще выпадает четыре (1 2 1 3). А надо, чтобы выпадало только два варианта (1 и 2 или 1 и 3, в зависимости от отдела). Т.е. в выпадающем списке при заполнении таблицы не должно быть вариантов, противоречащих таблице Отделы-Должности.
Можете описать всю процедуру по шагам? В самоучителях по Аксесу как-то не нашел этого момента.
Автор: LorIps
Дата сообщения: 25.10.2012 22:06
Mikky72
Цитата:
Я через мастер подстановок...

Я про эти мастера мало что знаю. Да и зачем это в таблице? Все равно в форму надо будет выводить... Там среди опций, что будет источником поля надо указать запрос.

По идее, источником данных для поля Должность должен быть запрос к связующей таблице, котоорым будут выбраны все ид должностей выбранного отдела (все должности если отдел не выбран) и, наоборот, для поля Отдел - запрос к той же связующей, которым выбираются все ид отделов, содержащих эту должность.
Автор: Mikky72
Дата сообщения: 25.10.2012 22:59

Цитата:
По идее, источником данных для поля Должность должен быть запрос к связующей таблице

Ага, уже теплее. Только как в этот запрос условие загонять, чтобы автоматически срабатывало в момент заполнения формы?
Можете мне сделать такую "базу" из нескольких сотрудников? (для спеца - это несколько минут). Я бы поковырял, может и сообразил бы. А то Борей в шок повергает.
Автор: vikkiv
Дата сообщения: 30.10.2012 07:35
Mikky72
Тут не чисто Access а скорее SQL + VBA, в форме делаешь VBA-refresh с первого ComboBox на второй типа
----
Private Sub FirstCombo_Combo_AfterUpdate()
Me.Second_Combo.Requery
End Sub
----
A во втором в список опций добавляешь SQL условие по первому ComboBox типа ...
---
SELECT ... Where XX_ID=[Forms]![Your_Form_Name]![Your_First_Combo_Name]
---
Образец например такой DepComboBoxForm-RuBoard.accdb (0.6 MB)
Автор: Elder
Дата сообщения: 03.12.2012 01:47
Извиняюсь за тупость, но не могу разобратся: форма с полем ввода и подчиненной формой основанной на запросе к таблице + макрос обновления подчиненной формы. Вопрос: почему если я рисую кнопку и назначаю ей этот макрос все замечательно работает, а если назначаю макрос на изменение поля формы - нет. хотелось бы видеть результат сразу при вводе, а не после нажатия на кнопку
Автор: Elder
Дата сообщения: 19.03.2013 12:50
Поражает активность данного топика

Как всетаки сделать
чтобы при вводе в поле значения, по мере ввода выполнялся SQL запрос и результат сразу выводился в таблицу в этой же форме, и возможно ли такое или для обновления результата обязательно обновлять всю форму с потерей фокуса в поле ввода

Боюсь говорить спасибо заранее
Автор: aidomars
Дата сообщения: 19.03.2013 14:11

Цитата:
а если назначаю макрос на изменение поля формы

AfterUpdate пробовали?
Автор: Elder
Дата сообщения: 20.03.2013 09:54
aidomars
пробовал через DoCmd.Requery, к сожалению с VBA слабо знаком, чтото нетак делаю

После подключения AfterUpdate и кнопка перестала работать
Автор: aidomars
Дата сообщения: 20.03.2013 10:48
Elder
Свойства поля, вкладка "События", на выбранном событии нажать кнопку справа, откроется "Построитель", там можно выбрать макрос или Программы, т.е. VBA. Ну и там уже писать запрос или еще что.
Автор: Elder
Дата сообщения: 20.03.2013 11:10
так и делал, выбирал программа и прописывал DoCmd.Requery, не работает

попытаюсь описать проблемму попроще:
есть таблица1, запрос1, форма1 и форма2
форма2 содержит результаты запроса1
форма1 содержит поле ввода поле1 и подчиненную форму форма2

необходимо чтобы результат выполнения запроса выводился сразу при вводе, например: нажал букву Н - результат обновился, В (НВ) - опять обновился, без потери фокуса полем1, т.е. результат динамично изменялся по мере ввода

во намудрил, а хотел попроще
Автор: aidomars
Дата сообщения: 20.03.2013 15:00
На событие Поля1 Change вешай изменение SQL:
CurrentDb.QueryDefs("Запрос").SQL = "SELECT field1, field2 FROM Таблица1 WHERE поле1 Like '*" & Me.Поле1 & "*'"
и обновление формы: Me.Requery или Me.Refresh. Me - это текущая форма, если не сработает попробуй также обновить подчиненную.
А насчет фокуса - можно запоминать введенное, а затем заново вставлять, вот только выделение всей записи надо победить.
Автор: ttVEN
Дата сообщения: 21.03.2013 20:18
Нужна помощь, создаю базу в Access 2007. Нужно в форме сделать вложение, чтобы можно было вставить фото человека или товара, значок "скрепка-вложение" работать не желает, не нажимается вообще.как исправить?
Пытаюсь создать кнопочную форму, создаю, а она не отображается в формах. Ищу её по всей базе и не могу найти.Где она может быть?
И ещё вопрос - мне нужно создать формулу для данных нескольких таблиц.
Допустим, есть таблица "норма продуктов для взрослого человека с группой"+"список населения с группой". Мне нужно, чтобы программа увидев в списке населения определённую группу рассчитала для определённых людей норму по каждому из продуктов. Есть ещё нормы замены этих продуктов и если есть необходимость нужно рассчитывать норму исходя из замены некоторых продуктов.
Возможно ли это сделать в Access 2007?
Автор: rex24
Дата сообщения: 09.04.2013 08:52
Сослуживец поддерживает базы на Access с которой работают 15 человек.
От меня требуется научиться делать то, что делает он. Как минимум заменять его когда он в отпуске, болеет, занят.
Как мне научиться это делать?
Пробовал читать различные книги. Ничего не получается из них почерпнуть. Я просто увязаю
в массе текста.
Правильно ли я понимаю, что более правильно будет если сослуживец мне будет давать задачи от простого к сложному
например по работе с базой Борей (встроена в сам Access) и далее я уже сам пойму что вычитывать из книг и со
временем научусь делать, что нужно?
Усугубляется все тем, что как я предполагаю сослуживец опасается, что если я научусь делать то, что делает он,
это уменьшит рост его зарплаты, значимость для окружающих и т.д. Но начальство требует от меня
чтобы я работал на подстраховке чтобы не получилось так что базы окажется поддерживать некому.
Автор: aidomars
Дата сообщения: 09.04.2013 09:28

Цитата:
сослуживец опасается, что если я научусь делать то, что делает он,
это уменьшит рост его зарплаты

Правильно опасается), но с нуля научиться до его уровня это займет минимум год.
А начальство скорее всего экономит на зп, ни к чему хорошему это не приведет, телега без лошади сама не поедет.
Разбирай сам примеры, переходи от простого к сложному, наконец гугл в помощь.
Автор: Nikolai2004
Дата сообщения: 02.05.2013 10:42
Tr12
Цитата:
Есть база данных в формате Cronos. Эта же база данных есть уже и в текстовом файле. Размер базы около 600 000 записей при 50-60 полей. Ее хотелось бы отрабатывать в Access'e. Обычным импортом она в Access не влазает. Срабатывает ограничение на размер файла. Открывается только через ссылку на текстовый файл. Запросы обрабатываются очень долго. Вопрос 1. Можно ли убрать ограничение на размер файла Access?. 2. Можно ли впихнуть базу данных в акцесс, пусть в разные файлы, разбив ее при импорте? Если можно, то как это сделать?

Dixi257
Цитата:
Я бы написал код, который создаёт нужную мне таблицу, а потом читает в неё текстовый файл, правда, поля придётся "вручную" разбирать. Но в целом, особой проблемы нет.

проблема актуальна. есть база cronos порядка 160 млн. записей и выгруженные из неё *.txt размером 20 гигабайт.
access 2003/2010 не хочет открывать большие *.txt. подозреваю, что импорт возможен через VBA-скрипт. нужен рабочий код.
помогите, пожалуйста, кто сталкивался с похожим вопросом.
Автор: Black_Lung
Дата сообщения: 30.05.2013 11:29
В 2003 не нашел "запись макроса", которые есть в ворде и екселе. Получается в аксес вручную всё делать. Например из десяти текстовых файлов нужно создать таблицу.


я хочу перейти на аксэс чтобы с данными (изменять, вносить...) могло работать много человек одновременно.
Автор: aidomars
Дата сообщения: 30.05.2013 14:59
Black_Lung
Access это совсем другой принцип хранения информации, там запись макроса бессмысленна.
Автор: Black_Lung
Дата сообщения: 30.05.2013 17:19

Цитата:
другой принцип хранения информации

Работает он на том же VBA. Почему бессмысленно записать один раз действие "Вставка-Таблица-Импорт-Text Files", и выполнить потом сколько угодно раз автоматически?
Автор: Vitus_Bering
Дата сообщения: 30.05.2013 20:19
Black_Lung
В Access есть макрокоманда ПреобразоватьЭлектроннуюТаблицу.
Автор: aidomars
Дата сообщения: 31.05.2013 08:04

Цитата:
Почему бессмысленно записать один раз действие "Вставка-Таблица-Импорт-Text Files"

Потому что этим запись макроса и ограничится, и смысла встраивания его в access нет.
Автор: Vitus_Bering
Дата сообщения: 31.05.2013 09:59
Black_Lung
Данную задачу можно решить написанием собственных процедур на VBA, макросами вряд-ли это реализуемо...

Страницы: 12345678910111213141516171819202122

Предыдущая тема: Как замедлить скорость чтения CDROM?


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