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

» Про MS Access

Автор: SHRIKE74
Дата сообщения: 02.11.2006 13:10
Мега срочно нужна помощь,
описание проблемы
есть таблица в которой есть название дилера и четыре оплаты с датами когда проплачено,
сначала идёт выбор дилера, потом надо найти все записи по нему по датам
получается что четыре даты, они могут совпадать а могут и нет, а некоторые могут вообще отсутствовать.
как сделать так чтобы появлялся запрос, я ввожу начальную и конечную дату и в зависимости от того есть ли такая дата в одном из четырёх полей выдавало результат по всем четырём оплатам.
коряво конечно обьяснил но надеюсь смысл понятен
Автор: SHRIKE74
Дата сообщения: 03.11.2006 13:07
перефразирую вопрос
в таблице есть четыре поля дата1 дата2 дата3 дата4
требуется сделать запрос на выборку чтобы при запуске поочереди выскакивало окошко для даты 1 2 3 4 я туда вводил одну и ту же дату и в итоге выдавался список записей где эти даты фигурируют, причём не во всех четырёх полях они могут иметь место быть поэтому при вводе даты если такой даты в полде вообще нет то этот ввод игнорировался при выборке.
ну или как сделть подобную выборку по всем четырём полям каким-нить другим способом гравное чтоб не пользоваться фильтром а именно сделать запрос
Автор: Dixi257
Дата сообщения: 03.11.2006 17:28
PARAMETERS Par1 DateTime;
SELECT *
FROM [XXXXXXX]
WHERE ([Date1]=[Par1] Or [Date2]=[Par1] Or [Date3]=[Par1] Or [Date4]=[Par1]);
Автор: Pantera3587
Дата сообщения: 03.11.2006 18:53
Есть запрос, в котором выбираются поля Сотрудник, КодДоступа, Поле с информацией
В поле код доступа в условие отбора пишется такое условие Form!КодДоступа. Затем на этот запрос создается форма. При открытии этой формы открывается диалогове окно Введите значение параметра Form!КодДоступа, т.е. в предлагаемое поле необходимо ввести код, который у каждого сотрудника свой, т.е. когда мы вводим код, то он видится в поле диалогового окна.
Вопрос: как сделать так, чтобы в поле ввода кода отображался вместо настоящего вводимого кода, например, звездочки, т.е., чтобы вводимый код был не виден другому.
Автор: Dixi257
Дата сообщения: 03.11.2006 20:01
Pantera3587

Создать форму, на ней текстовое поле с маской ввода ПАРОЛЬ и использовать значение этого поля в запросе. Не забыть скомпилировать .mde
Автор: SHRIKE74
Дата сообщения: 04.11.2006 11:01
Dixi257
я лох в Access

Цитата:
PARAMETERS Par1 DateTime;
SELECT *
FROM [XXXXXXX]
WHERE ([Date1]=[Par1] Or [Date2]=[Par1] Or [Date3]=[Par1] Or [Date4]=[Par1]);

разьясни всё по полочкам плз
допустим я делаю запрос в режиме конструктора или при помощи мастера
что мне вообще делать чтоб такой запрос срабатывал
кстати прежде чем идёт выбор даты нужен выбор дилера

хотелось бы конечно такой запрос сделать чтоб сначала предлагал выбрать дилера а потом один раз спросил дату и выдавал все записи по этому дилеру где присутствует эта дата в четырёх полях дата1 2 3 4
Автор: Dixi257
Дата сообщения: 06.11.2006 11:11

Цитата:
хотелось бы конечно такой запрос сделать чтоб сначала предлагал выбрать дилера а потом один раз спросил дату и выдавал все записи по этому дилеру где присутствует эта дата в четырёх полях дата1 2 3 4


Ну, надо Help почитать про запросы с параметрами. А так, создаешь запрос, кликаешь по запросу правой кнопкой, выбираешь пункт параметры, вводишь сколько тебе нужно параметров, правильно выбираешь их тип, в соответствии с типом данных в таблице.
Потом закрываешь окно с параметрами. В строке условие пишешь =[Parameter], ну или если нужно всякие <>; >=; <=; Like; Between And и т.д. Можно перейти в режим SQL, кликнув по заголовку окна конструтора запроса и вставить там текст, потом его редактировать в соответствии с именами полей и именем таблицы. То что я тебе написал как раз и нужно чтобы один раз запросить дату, потом выбрать все записи, где такая дата есть. Правда, я что-то засомневался, как оно сработает, если будут пустые поля, проверь. На а для дилера, - добавь сам еще один параметр с нужным типом.

Иногда выгоднее для пользователя создать форму, на ней расположить свободное поле со списком, список создать на основе таблицы дилеров. Потом поместить на форму еще одно свободное поле и календарик для выбора даты, дату с календарика передавать в поле. Создать копку - вызов запроса. В запросе в качестве условий указать поля из формы. Гораздо удобнее и быстрее и правильнее, чем набивать дилеров и даты вручную. Программирования - минимум, если сразу не получиться, - пиши в ПМ.
Автор: SHRIKE74
Дата сообщения: 06.11.2006 12:00
Dixi257
спасибо за советы, попробую сделать как ты сказал, если что отпишусь

Добавлено:
Dixi257
создал форму, в ней поле со списком и календарь, в поле со списком выбор дилера
создал запрос в нём дилер, дата1 2 3 4
никак не могу понять что надо вставлять в условиях отбора чтобы использовалось выбранное знаечение из поля со списком формы, и что надо ставить в условиях отбора в датах чтобы использовалась выбранная дата в календаре, можешь подсказать?
Автор: Pantera3587
Дата сообщения: 06.11.2006 16:51
Dixi257
Спасибо за подсказку. Не можешь ли подсказать по этому вопросу. Есть база, как ее можно полностью поместить в интренете, чтобы она была доступна другим пользователям. У меня есть ящик на яндексе. Т.к. создание страниц меня не устраивает, нужно, чтобы пользователи могли использовать созданные формы, изменять или добавлять данные.
Короче говоря, база должна находится на моем компьютере, а пользователи находящиеся допустим в других городах могли также в нее войти.
Автор: SHRIKE74
Дата сообщения: 06.11.2006 18:41
Pantera3587
там вроде страницы делать надо их то вроде и надо в инете размещать настроив связи с базой
Автор: SHRIKE74
Дата сообщения: 07.11.2006 08:06

Цитата:
Потом поместить на форму еще одно свободное поле и календарик для выбора даты, дату с календарика передавать в поле

блин никак не сделать чтоб в поле с календарика вставлялась дата
Автор: kfir
Дата сообщения: 19.11.2006 08:04
Всем огромный привет! Прошу помощи. Вдруг перестал запускаться Access 2003.
Пишет: "Windows configures Microsoft Office", пробегает индикатор бар- и всё, дальше ничего не происходит. Тот же компьютер(P4 3GB+RAM 512 Mb), Тот же Win XP SP2. Но нечем открыть созданные базы. Прошу подавать идеи- буду их проверять и осуществлять. Спасибо и успехов.
Автор: Dixi257
Дата сообщения: 20.11.2006 10:58

Цитата:
Прошу подавать идеи


Первая идея - сесть и подумать, что (кроме даты) поменялось на компьютере. Не спешите с ответом, вспомните все, антивирусные базы, новые вордовские файлы....
Автор: dqddi
Дата сообщения: 27.11.2006 21:31
У меня примитивный вопрос:
Как устанавливать связи между таблицами один-к-одному или один-к-многим? MS Access 2003.
Автор: SHRIKE74
Дата сообщения: 28.11.2006 11:45
dqddi
в двух словах не обьяснить
скачай отсюда какую-нить книжку и там прочитай

http://librus.ru/
очень много литературы бесплатно по огромному колличеству софта
нужна только регистрация на сайте
Автор: Robert
Дата сообщения: 28.11.2006 19:49
dqddi

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

При связи один к одному обе таблицы должны содержать одинаковое число записей, и их первичные ключи (повторения не допускаются) должны совпадать. По сути это одна таблица, искусственно разбитая на две. Например, одна таблица с характеристиками товаров, а вторая - с движениями товаров между магазинами и складами. При этом список товаров один и тот же.

При связи один ко многим связывается первичный ключ (без повторений) одной таблицы с вторичным ключом (повторения допускаются) другой таблицы. Например, одна таблица - список магазинов, а вторая - список товаров в них, или одна - список отделов предприятия, а вторая - список работников каждого отдела. Это гораздо более интересный случай связи, который чаще всего и встречается в реальном мире. Здесь объединить две таблицы в одну нельзя без дублирования данных со всеми сопутствующими проблемами.

А вообще-то SHRIKE74 прав - почитать какую-нибудь книжку по теме не помешает.
Автор: megarom
Дата сообщения: 14.12.2006 14:27
Ребята!! А при открытии БД алцесса из проги на Вижуал Басике, отрабатываються макросы или нет. Надо защитить базу которую сам сделал для некой проги.
Автор: Dixi257
Дата сообщения: 15.12.2006 17:00

Цитата:
открытии БД алцесса из проги на Вижуал Басике


То есть, написана программа на VB, которая подключается к базе Access? Тогда выполняется только сама программа, макросы, которые есть в базе ее не заботят.
Автор: Derinie
Дата сообщения: 11.01.2007 22:58
Друг попросил посмотреть имеющуюся у них базу данных в акссессе - прислал все необходимые файлы. Запускаю стартовый - сама оболочка грузится, но без данных. В принципе, при запуске меня база должны была спросить логин и пароль, но она этого не сделал - и при попытке выполнить в оболочке любое действие выскакивает окно со следующей ошибкой (скрин в урле ниже)
http://test.medic.net.ru/bug.gif
Автор: AlessTO
Дата сообщения: 13.01.2007 16:11
Привет всем. У меня такой вопрос: открываю mdb-шник любой,
пытаюсь открыть любую таблицу, выскакивает ошибка "Неизвестный",
чего бы это могло быть и как это лечить? ?
Автор: PEDKA
Дата сообщения: 13.01.2007 22:55
Друзья, вот появилась следующая проблема...

Раньше нормально открывалась база. Переустановил систему, офис. База перестала открываться. Скачал новую — выдает аналогичную ошибку.


Цитата:
Введите код активации для номера ...

Вот скрин.
При этом сам Access открывается. Вот, что написано в «О программе» — скрин.

Это у меня с офисом проблемы или база с паролем (или защищена каким-либо образом)?

[more=Решение найдено]
Видимо, всё-таки база была защищена.

Запоминаем номер для активации. пишем vbs скрипт:

Код:
dim a,ret

a=inputbox("Input")
ret = Hex((Abs(a) / 6) Xor &H27022004)
ret = Left(ret, 4) & "-" & Mid(ret, 4)
a=inputbox("Output","OK!",ret)
Автор: Pantera3587
Дата сообщения: 30.01.2007 15:48
Кто подскажет? Есть список1, в котором, например, содержаться фамилии, и есть пустой список2. Вопрос: как прописать в VBA код (процедура: двойное нажатие кнопки), чтобы выбрав из первого списка фамилию она скопировалась во второй список.

Private Sub Список1_DblClick(Cancel As Integer)
Список1. Copy Список2 (???)
End Sub
Автор: Star Ik
Дата сообщения: 01.02.2007 11:22
Pantera3587
Чтобы не париться со строковыми ф-циями, я бы сделал так:
1. Создал вспомогательную таблицу, например ТабСп2 с текстовым полем [Фамилия], с помощью SQL инструкции при открытии формы, содержащей эти списки, и установил
Список2.RowSource = "SELECT [ТабСп2].[Фамилия] FROM [ТабСп2]"
в той же процедуре открытия формы.

2. Создал процедуру копирования:
Private Sub Список1_DblClick(Cancel As Integer)
Dim База As Database, ТабСп2 As Recordset
Set База = CurrentDb
Set ТабСп2 = База.OpenRecordset("ТабСп2", dbOpenDynaset)
ТабСп2.AddNew
ТабСп2![Фамилия] = Список1
ТабСп2.Update
Список2.Requery
Список2 = Список1
ТабСп2.Close
Set База = Nothing
End Sub

3. При закрытии формы удалил бы ТабСп2.
Автор: Pantera3587
Дата сообщения: 01.02.2007 17:33
Star Ik
Спасибо, что откликнулся. Попоробовала применить. При двойном щелчке в списке 1 выделяет в коде База As Database и выдает ошибку:User-defined Type not defined. Вообще-то у меня список 1 создан на основе ТаблицаФакт, а список 2 на основе Таблица1. В таблицефакт следующие поля: КодФакт, Фамилия, а в Таблица1 - Код1, ФИО. В форме созданы два списка на основе этих таблиц.
В VBA пишу:

Private Sub Form_Open(Cancel As Integer)
Список2.RowSource = "SELECT [ТаблицаФакт].[Фамилия] FROM [ТаблицаФакт]"
End Sub

или все-таки

Private Sub Form_Open(Cancel As Integer)
Список2.RowSource = "SELECT [Таблица1].[ФИО] FROM [Таблица1]"
End Sub
Далее:

Private Sub Список1_DblClick(Cancel As Integer)
Dim База As Database, Таблица1 As Recordset
Set База = CurrentDb
Set Таблица1 = База.OpenRecordset("Таблица1", dbOpenDynaset)
Таблица1.AddNew
Таблица1![ФИО] = Список1
Таблица1.Update
Список2.Requery
Список2 = Список1
Таблица1.Close
Set База = Nothing
End Sub
В чем все-таки ошибка?
Автор: Star Ik
Дата сообщения: 02.02.2007 08:15

Цитата:
или все-таки

Private Sub Form_Open(Cancel As Integer)
Список2.RowSource = "SELECT [Таблица1].[ФИО] FROM [Таблица1]"
End Sub

Именно так. Ведь данные будут копироваться в таблицу1, а уж потом из неё в Список2, при выполнении Список2.Requery.

Цитата:
При двойном щелчке в списке 1 выделяет в коде База As Database и выдает ошибку:User-defined Type not defined.

1. Необходимо подключить библиотеку Microsoft DAO 3.6 Object Library. Для этого открыть модуль формы, меню Tools -> References. Найти в списке и отметить птицей указанную библиотеку.
2. Если установлен антивирус Касперского, то воизбежание возможных пререканий с ним, в объявлении переменной База надо заменить As Database на As Object.
После этого всё должно работать.
Автор: Pantera3587
Дата сообщения: 02.02.2007 15:48
Star Ik
Все подправила, но опять не хочет работать. Теперь выдает ошибку Type mismatch и выделяет строку:
Set Таблица1 = База.OpenRecordset("Таблица1", dbOpenDynaset)
В чем теперь проблема?
Автор: Star Ik
Дата сообщения: 02.02.2007 21:42
Странно. Попробуй в процедуре Список1_DblClick объявить Таблица1 тоже As Object. Возможно какойто конфликт версий. К стати, какая версия Windows и Access? И установлен ли Касперский?
Автор: Pantera3587
Дата сообщения: 05.02.2007 14:50
Star Ik
Спасибо тебе за помощь. На компе стоит Windows XP Home Edition, Access 2002. Исправила Таблицу1 на As Object, заработало, только где-то я напортачила, т.к. в таблицу 1 в столбец Фамилия добавляется ключевое поле, и в самом списке ничего не появляется. Попробую разобраться в чем дело, скорее всего где-то в инструкции.


Добавлено:
Все заработало, все дело было в том, что в Списке2 в строке тип источника строк ничего не стояло, выбрала Таблица или запрос и все появилось, да и вместо ключевых полей выдает фамилии, т.к. из списка1 убрала ключевое поле в строке Источник строк.

Добавлено:

Цитата:
Потом поместить на форму еще одно свободное поле и календарик для выбора даты, дату с календарика передавать в поле.

А как это можно сделать? Кто подскажет?
Автор: Star Ik
Дата сообщения: 06.02.2007 09:09
Pantera3587

Цитата:
Все заработало

Я рад за тебя!

Цитата:
А как это можно сделать?

1. В свойствах свободного поля (назовем его Дата) установить "Формат поля" (вкладка "Макет") любой (по вкусу) формат даты.
2. Поместить на форму элемент "Календарь": Панель элементов -> Другие элементы -> Элемент управления Календарь (назовем его Календарь).
3. Создать процедуры:

Private Sub Form_Open(Cancel As Integer)
Календарь.Value = Date
Дата = Date
End Sub

Private Sub Календарь_AfterUpdate()
Дата = Календарь.Value
End Sub
Автор: Pantera3587
Дата сообщения: 06.02.2007 17:19
Star Ik
Оказывается все так просто. Здорово! Огромное спасибо за помощь.

Страницы: 12345678910111213141516171819202122

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


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