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

» Access VBA

Автор: Minoru
Дата сообщения: 15.04.2008 08:31
Очень нужна помощь. Перенес свои рабочие базы из Excel'я в Access для большкго удобства. Раньше я активно использовал функцию ВПР для того, чтоб добавлять значения в одну базу из другой. Хотел бы делать тоже самое и в Access.

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

Вот и интересуют два вопроса:
А) Можно ли как-нибудь подправить действие этого запроса? Чтоб он не проглатывал эту строку, а выдавал, если не найдет, пустую ячейку или что-то типа #Н\Д?

Б) Нашел альтернативу ВПР - DLOOOKUP. Но обсалютно не могу понять, как ее использовать. Что именно прописывать и где. В FAQ'е самого Access'а лишь описание функции, а ответов на нужный вопрос - не нашел

Очень нужна помощь, помогите люди добрые
Хотя бы ссылкой, где это все написано на доступном языке, ибо Access'ом научился пользоваться лишь недели две назад (на видео уроках).. так что сами понимаете.
Автор: AndVGri
Дата сообщения: 16.04.2008 00:27
Minoru

Цитата:
одной из баз в которой идет поиск, то вместа пустой ячейки

Испльзуй Left Join в SQL запрсе
Автор: Minoru
Дата сообщения: 16.04.2008 10:17

Цитата:
Испльзуй Left Join в SQL запрсе


Это не совсем то.. это тоже самое, что стандартный запрос на выборку. Я, похоже, не совсем четко выразился.

Таблица1
А - А1
Б - Б1
Г - (пусто)
Таблица2
А -
Б -
В -
Г -

В Таб2: А, Б - искомые значения, которые совпадают со значениями А, Б из Таб1.
Задача: Выдать что-то типа:
Таб3
А- А1
Б - Б1
В - (пустая ячейка или какой-нибудь знак ошибки)
Г - (пусто, т.к. и в Таб1 пусто)

Т.е. при стандартном запросе на выборку (JOIN (Left, Right и т.д.), он не выводит поля В, т.к. этого значения нет в Таб1 (но есть в Таб2).

При тех же условиях в Excel'e (ВПР) - выводилась ошибка (#Н\Д).
Автор: Czechoslovak
Дата сообщения: 16.04.2008 10:37
Minoru
Так чем тебе не устраивает left join
select tab1.А,tab1.Б,tab2.В,tab1.Г tab1 left join tab2 on tab1.А=tab2.А and tab1.Б=tab2.Б
Автор: Minoru
Дата сообщения: 16.04.2008 10:48
Как я понимаю, нужно будет прописать по каждой строке (tab#.#) (которых может быть до 20 000), то он не выдаст ее.
Во всяком случае, у меня так и вышло, когда я переписал стандартный запрос на выборку (INNER JOIN).
Автор: Sanyaaa
Дата сообщения: 16.04.2008 10:55
Подскажите уважаемые. Access в разделе таблицы - прилинкованная таблица, которая находится на Оракл сервере.


Если я пишу запрос к этой таблице, неужели все расчеты и нагрузки несет локальный комп?


Я просто думал что запрос уходит на сервер, сервер там его обрабатывает, считает и шлет обратно в Access результат
Извините если чайниковским языком
Автор: MrZeRo
Дата сообщения: 16.04.2008 11:02
Sanyaaa
Если прилинкованная таблица, то конечно локальный комп.
Чтобы обрабатывал сервер, надо делать запрос к серверу и указать строку подключения ODBC.
Автор: Sanyaaa
Дата сообщения: 16.04.2008 12:55
MrZeRo
Удивительоно... а ведь чтобы обрабатывать таблицу на локальном компе, эта таблица должна быть на локальном компе, а она ведь орооооомная.

А если закрыть Access во время выполнения запроса... сессия к базе на сервере Оракл умирает?
Автор: Unsiker
Дата сообщения: 17.04.2008 10:18
Народ помогите с такой делемой:
Есть таблица в которой 5 полей, одно из полей имеет тип: Поле объекта OLE.
при просмотре самой таблицы а поле отображется значение двоичные даные.
Подскажите как можно вытащить данные оттуда? тоесть узнать что именно там хранится и просмотреть эти данные
Автор: MrZeRo
Дата сообщения: 17.04.2008 12:50
Sanyaaa
Сессия умрет, но не сразу, а через какое-то время, это определяется сервером Оракл.
Unsiker
Можно попробовать создать форму и на форме элемент управления "Присоединенная рамка объекта"
Еще можно написать небольшую программку, которая бы выгружала содержимое этого поля на диск в виде двоичного файла и потом по содержимому файла попытаться догадаться, что это такое.
Автор: Unsiker
Дата сообщения: 17.04.2008 14:31
Это 100 % двоичные даные ... подскажите алгоритм их извлечения ...
Автор: Sanyaaa
Дата сообщения: 17.04.2008 16:54
MrZeRo
Спасибо!

Unsiker
Автор: allximik1
Дата сообщения: 21.04.2008 16:04
Извеняюсьможет быть за немножко не научный вопрос. Но все же пришлось сталкнуться с accessom впервые.
Если не будет очень тяжело ответьте плиззз....


Я создал форму источником записей служит одна таблица. Форма сама по себе большая и имеет вертикальное колесо проктутки (т.к. вкладки в данном случае не допустимы). И теперь непосредственно пришлось столкнуться с проблемками:...

1. Интуинивно прокручивание формы все осуществляют с помощью колеса мыши. Но это приводит только к переходу между записями таблицы. Как можно заблокировать этот переход и сделать так, чтобы колесо управляло ползунком прокрутки. ???
2. Подскажите пожалуйста как осуществлять сохранение в таблице данных только после нажатия на кнопку "Сохранить", Имеется ввиду чтобы значение не сразу вносилось в таблицу, после того как его вписали в форму, а только после нажатия на кнопку. (Если это возможно...)

Заранее благодарен...
Автор: Minoru
Дата сообщения: 22.04.2008 10:08
Очень срочный вопрос.
Я сделал форму (поиска) следующего образца:
"Вкладка", в ней "Подчиненная форма\отчет", в ней Столбцы "Code", "Name", "Weight". Отдельно сделал "Поле".
Нужно, привязать к "Поле" функцию поиска в столбце "Code" по частичному имеющемуся значению. Т.е. есть запись 12345678 и т.п. Нужно, чтоб при вбивании 345 в части "Подчиненная форма\отчет" отображались лишь те значения, которые содержат эти условия.
В принципе, внешний вид - готов, но осталось лишь привязать это все. Так же, вроде бы есть код для VB, но я не знаю, как его впихнуть и правильно привязать к этой форме. Помогите пожалуйста, очень нужно.
Автор: dmention
Дата сообщения: 22.04.2008 10:23
1. Является ли операция Сжать и восстановить базу данных безопасной? Возможна ли при этом потеря (отброс при сжатии) каких-то данных?
Эта операция является НЕОБХОДИМОЙ ДЛЯ РЕГУЛЯРНОГО ВЫПОЛНЕНИЯ в целях поддержания нормальной работоспособности БД?

2. Просба все-таки подумать над тем вопросом, который я задавал ранее, но не получил ответа. Очень нужно!


Цитата:
Имеется БД на Access 2000. В базе есть кнопка, представляющая собой Гиперссылку на документ Word. Документ Word по средством слияния настроен на один запрос в данной базе.

БД перенесли вместе с документом Word на другой Сервер. Получилось так: Гиперссылка работает нормально, а при открытии документа Word он долго ищет старое месторасположение БД, в конце концов находит новое и нужные цифры в поля подставляет. Но, данная ситуация не является нормальной.

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

Пытаюсь изменить источник данных в документе Word. Делаю выбрать Источник данных, нахожу БД, открываю файл БД и в списке Таблиц и запросов он дает мне все Таблицы и запросы БД, кроме того, который мне нужен. Видимо потому, что он уже прицеплен? Как мне с наименьшими потерями перестроить источник данных?
Чтобы поля, которых очень много, после изменения источника данных встали в теже места в документе Word.
Автор: Vitus_Bering
Дата сообщения: 22.04.2008 10:40
dmention
1. Да.
2. Удалите все ссылки и установите всё заново.
Автор: dmention
Дата сообщения: 22.04.2008 11:10
Vitus_Bering

Цитата:
dmention
1. Да.
2. Удалите все ссылки и установите всё заново.


1. На счет потери данных не понял, вроде ответ Да не подходит?

2. Даже если создать новый документ (пустой) и пытаться прицепить его к БД выдаются все те же запросы, а нужного мне нет!


Автор: Vitus_Bering
Дата сообщения: 22.04.2008 12:17
dmention
Сжатие БД - полезная и безопасная процедура, восстановление БД зависит от каждой конкретной ситуации. Может воостановить, может написать, что восстановить невозможно.
Автор: dmention
Дата сообщения: 22.04.2008 13:46
А на счет слияния? Что может ограничивать возможность вывода запроса в списке? Например версия офиса. Все базы переведены в Office 2000. Открываю из Word 2002 XP, 2003.

Какие есть еще варианты, чтобы прицепить документ Word к Access, кроме как из Word открывать источник данных?

Если я в Access встаю на запрос и делаю сервис > связи с office > слияние в документ Word, то он предлагает мне несколько вариантов, в том числе Базы данных Microsoft Access ODBC или что-то в этом роде.

Что я должен выбрать?
Автор: Minoru
Дата сообщения: 22.04.2008 13:59
Помогите пожалуйста найти ошибку:

Private Sub find_Change()
Dim s As String
s = Me.find.Text 'Определяем текст
With Me.myFind3.Form 'Выбираем форму
If Len(s) <> 0 Then
s = " WHERE Left([Code]," & Len(s) & ") = '" & s & "'"
Else
s = ";"
End If
.RecordSource = "SELECT Code FROM [Film]" Code LIKE '*" & s & "*';"
.Requery 'Меняем запрос
End With
End Sub

Цель: Есть записи

АБВГД
АГДВ
ГДБВ
АВ

Нужно, чтоб этот поиск отбирал записи по "БВ" и выводил лишь их на экран.
Так же, есть там кроме столбца Code (по которому идет поиск) два других: NameRu и NameEn. Нужно, чтоб при выдече результата отображались значения из базы, а не "#Имя?".


Оооооочень нужна помощь, спасибо :(
Автор: dmention
Дата сообщения: 24.04.2008 09:38
А все-таки, что мешает некоторым запросам появляться в списке источников при попытке слияния?

Иду другим путем, встаю на имя запроса, в меню сервис выбираю "слияние с документом Word", выбираю создать новый документ, и он выдает окно "преобразование источника данных". Выбираю пункт БД Access и дальше выбор таблиц, причем изначально показаны только "ТАБЛИЦЫ", если добавить "ПРЕДСТАВЛЕНИЯ", то появится и часть Запросов.

Что это за "ПРЕДСТАВЛЕНИЯ"? Почему ими являются одни запросы а другие нет.

При попытке слияния из Word, в окне с выбором таблиц имеются два типа источников: TABLE - все таблицы и VIEW - та часть запросов, которые доступны.

Видимо VIEW - это и есть ПРЕДСТАВЛЕНИЯ? Что же это?
Автор: tadej2000
Дата сообщения: 24.04.2008 17:23
Помогите пожалуйста. Мне надо сделать в базе выборку по датах продаж (период от "дд/мм/гг" и до дд/мм/гг") даты вносятся во время вызава выборки.

Если можна подскажите. Или дайте пример на такую задачу.

Пример базы. (500кБ)

http://dump.ru/files/p/p636828881/

MAccess 97 http://ifolder.ru/6289383

ОЧЕНЬ СРОЧНО!!!

Как я понял, можна єто решить с помощью запроса, но как вводить период не доганяю.
Автор: Vitus_Bering
Дата сообщения: 24.04.2008 19:15
tadej2000
Сохрани в формате Access 97, посмотрим...
Автор: dmention
Дата сообщения: 25.04.2008 09:37
Я все о запросах при слиянии...

Такая вещь. В запросе к которому нужно прицепить слияние Word и который не отражается в списке есть условие отбора, ссылающееся на текстовое поле формы.

Если я это учловие убираю, то запрос появляется в списке и к нму можно прицепиться. Все начинает работать, но в документе Word присутстсвуют все записи, а условие отбора включено, для того, чтобы существовала только текущая. Поэтому без него никак.

Если же после выбора нового источника, я снова вставляю условие отбора в запрос, то при открытии документа Word выдается ошибка: "Не удается завершить операцию из-за ошибки окна диалога или обработчика базы данных. Повторите попытку позже."
И слияния не происходит.

Как это обойти?
Автор: Vitus_Bering
Дата сообщения: 25.04.2008 10:33
tadej2000

Цитата:
надо сделать в базе выборку по датах продаж (период от "дд/мм/гг" и до дд/мм/гг") даты вносятся во время вызава выборки.

Вот здесь посмотрите запрос, дату вводить в формате, как в таблице.
Автор: tadej2000
Дата сообщения: 25.04.2008 10:50
Vitus_Bering

Огромнейшее спасибо. Куда высылать пиво???
Автор: frolsom
Дата сообщения: 29.04.2008 15:16
Ребят, нужна помощь!
Есть форма, в которой отображается содержание нескольких таблиц, например:
препод | методичка | вид занятия

При этом на машине есть папки где хранятся методички отсортированые по видам занятия, например:
C:\лабораторные
C:\контрольные
C:\практические

Создал таблицу где хранятся эти пути к папкам, и эта таблица связана с таблицей "вид занятия" по коду. Необходимо сделать так, чтоб при нажатии на кнопку в форме открывалась папка соответствующая виду занятия, который указан в той строчке где находится курсор, например если курсор находится на строчке:
Иванов | анализ систем | лабораторные
то при нажатии на кнопку должна открыться папка - C:\лабораторные

как это можно осуществить?
Автор: Vitus_Bering
Дата сообщения: 29.04.2008 16:19
frolsom
Посмотрите здесь.
Автор: Celeron
Дата сообщения: 03.05.2008 04:24
Minoru

Цитата:
Помогите пожалуйста найти ошибку:Нужно, чтоб этот поиск отбирал записи по "БВ" и выводил лишь их на экран.

Что-то у тебя код какой-то мутный! Я вот свой написал, смотри:
[more]
- Создаём форму "Поиск", в которой есть поле SearchCriteria (куда пользователь вводит подстроку условия), вложенная форма SubForm (из формы Поиск_СписокРезультат) и кнопка "Обновить"

- Создаём форму "Поиск_СписокРезультат", которая в табличном виде отображает результат запроса с отфильтрованными записями. И RecordSource для этой формы будет запрос типа: SELECT * FROM Таблица1 WHERE (name like '*фильтр*'); - этот запрос будет изменятся при нажатии на кнопку "Обновить" и подставляться новая строка "фильтр". Как показывает практика играться со всякими фильтрами формы - дурная затея ибо Access очень глючной - то работет фильтр, то нет...

- Далее обработчик на кнопку "Обновить" будет такой:

Private Sub Refresh_Click()
Dim s As String
On Error Resume Next
s = [Forms]![Поиск]!SearchCriteria.Value 'подстроку, которую надо найти
If Len(s) > 0 Then
[Forms]![Поиск]!SubForm.Form.RecordSource = "SELECT * FROM Таблица1 WHERE (code like '*" & s & "*');"
Else
[Forms]![Поиск]!SubForm.Form.RecordSource = "SELECT * FROM Таблица1;"
End If
[Forms]![Поиск]!SubForm.Requery
End Sub

[/more]

Цитата:
Так же, есть там кроме столбца Code (по которому идет поиск) два других: NameRu и NameEn. Нужно, чтоб при выдече результата отображались значения из базы, а не "#Имя?".

А это ты, наверное, неправильно указал "Источник данных" для контролов для этих полей. Проверь в конструкторе формы. (студенческая ошибка? )
Вообще, в моём примере, эти поля должны автоматически вывестись в подчинённой форме, т.к. "select * ..."
Автор: Meysoncup
Дата сообщения: 05.05.2008 18:07
Help!!! диплом горит!

Данное окно реализовано как форма в Аксес. как сделать функцию сумма по странице?

т.е. пользователь вводит данные с 1ой страницы(дата, № кассы, время постоянны) нажимает флажок считается сумма по странице(показывается тут же), вводит со второй - нажимает - смотрит-показывается сумма уже по второй странице.
Затем меняет дату или № кассы или время, опять вводит с 1ой страницы, нажимает флажок, смотрит сумму и т.д.

как это реализовать? я пробовал написать =NZ(sum([Сумма])) в поле, но выводит сумму за всё время - очень много тыщ. Надо чтоб аксес учитывал страницу, дату, № кассы и выводил сумму только для страницы, даты и кассы введённых последними. Как это сделать? пожалуйста! диплом уже очень скоро.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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