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

» Access VBA

Автор: aidomars
Дата сообщения: 13.07.2011 11:05
dneprcomp
Вот спасибо! Я уже начинаю немного въезжать). Еще вопрос: данные в основную таблицу подгружаются из текстовых файлов, где каждому договору уже присвоены регион и подрегион. Нужно ли создавать таблицы "Регион" и "Подрегион", если они уже есть у каждого договора? Сам думаю что нет, но все-таки?
Автор: dneprcomp
Дата сообщения: 13.07.2011 16:14
aidomars
Что такое "Регион" и "Подрегион"?
Дайте пример информации как она выглядит в текстовом файле.
Автор: aidomars
Дата сообщения: 13.07.2011 16:52
Вот так:
Регион Подрегион ФИО Номер дог. Дата дог. Сумма дог. Долг на сегодня
Автор: PrWork1
Дата сообщения: 13.07.2011 17:44
videolamer_V
Вот держи, сделал наверное как тебе нужно. (изменились оба запроса)
http://webfile.ru/5436852
Пароль 123
Автор: dneprcomp
Дата сообщения: 13.07.2011 18:20
aidomars
Видя структуру данных, я бы добавил поле DogovorNo в таблицу "Договора" и его сделал бы связующим полем в "Результаты звонка". Т.е. заменил бы в "Результаты звонка" поле DogovorID на DogovorNo.
В теории, можно было бы сделать еще 2 таблицы - " Регион" и "Подрегион"

Правда это может несколько усложнить для вас как начинающего работу с данными.
В добавок, еще и ваше примечание
Цитата:
Текстовые файлы выгружаются ежедневно.
Все поля кроме "Долг на сегодня" никогда не меняются.
Если у клиента нет долга то его нет и в файле.
вызывает вопросы.
1.Для чего в сущности предназначена данная база
2.Какие действия будут осуществлятся с данными
3.Каков источник текстового файла и как/кто этот файл производят
4.Если " у клиента нет долга то его нет и в файле", то что должно произойти с рекордом
из предыдущего файла, когда у клиента долг был.
Т.е., так и будет висеть с долгом?
5.Производное от 4, 1 и 2
Собираетесь ли каждый раз полностью очищать таблицу "Результаты звонка" перед
добавлением данных из файла.

Было бы не лишним услышать ваше видение процесса работы с данными

Базу проектируют под задачу, под необходимось. Пока задача не определена, невозможно дальнейшее обсуждение структуры базы
Автор: videolamer_V
Дата сообщения: 13.07.2011 18:49
PrWork1
Спасибо! А можно исправить в "Итоговом запросе по чекам" колонка с "Погашено1" переименовать в "погашено" у меня не получилось, ошибка цикличесской ссылки. И в запросе списание в непогашеном чеке колонка "погашено" можно вывести 0,00 или она будет пуста? И ещё я никак не мог найти в Аксесе формат доллара...
Автор: aidomars
Дата сообщения: 13.07.2011 18:51
dneprcomp
А зачем менять DogovorID на DogovorNo, или в чем разница между ними?
1. База нужна для занесения результатов обзвона должников.
2. Результат звонка записывается в таблицу "Результаты звонка" с указанием фио сотрудника, даты звонка и даты обещания оплаты, которая нужна для повторного звонка, если задолженность не была погашена.
3. Источник текстового файла - филиалы. Выгружаем ежедневно сами через телнет. В настоящий момент ведем базу в excel 2003. Есть макрос, преобразует текстовые файлы в отдельную книгу, а оттуда уже в рабочую. В ней и пишем результаты звонков. Уже за 10000 строк перевалило), еще чутка и писать некуда будет.
4. Если строка не нашлась в файле, считается что клиент погасил долг, добавляется дата гашения (в таблице строка остается), и суммы обнуляются. Забыл написать, что есть еще дата начала долга.
5. Нет, таблица не очищается. В том то и дело, что нужны все данные, что были введены. Для отчетов и статистики.
Краткая суть:
а) Сотрудник открывает файл, т.е. основную таблицу (Регионы, ФИО, номер, дата начала долга, дата обещания, сотрудник).
б) Выбирает строку, щелкает на ней, появляется форма для записи с основными данными (ФИО, Номер, долг и т.д.). Вводит текст и сохраняет запись.
в) При желании может посмотреть предыдущие записи по этому клиенту.
Ну и много еще чего. Повторюсь, это все сделано мной в excel + vba, но думаю правильней будет в access перевести, да и самому интересно.
Автор: dneprcomp
Дата сообщения: 13.07.2011 20:47
aidomars
1.Просто более наглядно в SELECT и в таблице выглядит.
Не придется постояно подставлять. Это если номер договора действительно является
уникальным. Если да, то номер договора точно так же может служить полем связи.

3.Судя по описанию, количество регионов и подрегионов величина более-менее
постоянная. Надеюсь, что и названия тоже постоянно используют стандартные.
И не печатают вручную, а выбирают из списка
Если все так, то тогда можно в дополнение создать эти 2 таблицы.
Я так понимаю, что один и тот же подрегион не может принадлежать двум регионам.
Принимая такое условие

"Регион"
RegionID(autoincriment), название, + по потребности

"Подрегион"
PodRegID(autoincriment), название, RegionID, + по потребности

Связь "Регион" и "Подрегион" через поле RegionID.
Связь "Подрегион" и "Результаты звонка" через поле PodRegID

Вариант связи:
Один рекорд в "Подрегион", многие в "Результаты звонка"
Один рекорд в "Регионы", многие в "Подрегион"

RegionID добавлять в "Результаты звонка" не надо. Имя региона можно найти через RegionID в "Подрегион"
Автор: aidomars
Дата сообщения: 13.07.2011 21:39
dneprcomp
Спасибо за подсказки! Сегодня я научился из формы другую форму вызывать, с подставлением данных из выделенной строки первой. Завтра буду учиться из второй напечатанный текст заполнять в таблицу звонков. Осталось еще со сравнением таблиц поработать и можно будет менять Excel на Access.
p.s. По поводу регионов: их не выбирают и не печатают, они уже есть в строке, текстовый файл это как бы отчет полный, там все есть, только суммы задолженностей меняются.
Автор: PrWork1
Дата сообщения: 14.07.2011 00:40
videolamer_V
Поставь в запросе Итоговый..
в выражении IIf(IsNull([Списание].[погашено]);0;[Списание].[погашено])
и исправь название на Погашено
Автор: dneprcomp
Дата сообщения: 14.07.2011 01:37
aidomars

Цитата:
По поводу регионов: их не выбирают и не печатают, они уже есть в строке

Но в эту строку они как-то попадают? Да?
Вот если источником для этой строки является печатание юзера на клавиатуре, то возможы опечатки и найти что-либо в базе будет проблематично. А если юзер только выбирает из списка, тогда все 100% совпадет с таблицами "Регион" и "Подрегион"
Автор: videolamer_V
Дата сообщения: 14.07.2011 07:45
PrWork1
Спасибо добрый человек!!!!! Получилось.
Автор: PrWork1
Дата сообщения: 14.07.2011 10:48
videolamer_V
Я рад, если что пиши.
Автор: aidomars
Дата сообщения: 14.07.2011 21:10
dneprcomp

Цитата:
Но в эту строку они как-то попадают? Да?
Вот если источником для этой строки является печатание юзера на клавиатуре, то возможы опечатки и найти что-либо в базе будет проблематично. А если юзер только выбирает из списка, тогда все 100% совпадет с таблицами "Регион" и "Подрегион"

Та нее, юзерам по барабану регионы, их задача выбрать строку, позвонить и занести результат разговора в базу. Регионы нужны для статистики, типа сколько за месяц платежей по конкретному региону, сколько звонков было таким то юзером и т.п.
Все данные уже есть в исходниках, моя задача обновлять таблицу (сравнивать с новыми исходниками, менять суммы долга) и заносить мероприятия (звонки) в таблицу "Результаты обзвона".
Автор: dneprcomp
Дата сообщения: 15.07.2011 00:39
aidomars
Ну, смотри Тебе виднее
Просто кгда будешь делать связь "Регион" и "Подрегион" или
"Результаты звонка" и "Подрегион" могут быть проблемы если значения полей в "Подрегион" не совпадут со значением из файла.
Но если не создавать таблицы "Регион" и "Подрегион", тогда об этом можно не задумываться.
Автор: videolamer_V
Дата сообщения: 15.07.2011 16:27
Подскажите можно ли как то связать базу Аксесс через интернет, имеется база в которой работаю, например в городе Н, нужно чтобы человек мог смотреть отчеты по базе и так же добавлять или изменять сохранять но в городе Б?
Автор: PrWork1
Дата сообщения: 15.07.2011 16:55
videolamer_V
А просто по RDP работать не подойдет?
Автор: dneprcomp
Дата сообщения: 15.07.2011 18:12
videolamer_V
ms access internet
Автор: videolamer_V
Дата сообщения: 18.07.2011 09:29
dneprcomp
Спасибо, до этого гуглил без результата, вернее результат был но не то что бы хотелось.

PrWork1
Это единственный вариант.
Автор: PrWork1
Дата сообщения: 18.07.2011 09:33
videolamer_V
Но может проще сделать такую программку на Delphi, например?
Базу можно использовать и accessa.
Автор: videolamer_V
Дата сообщения: 18.07.2011 10:34
Сколько будет стоить? И как это будет работать?
Автор: PrWork1
Дата сообщения: 19.07.2011 12:08
videolamer_V
Я думал сам напишешь , но можно обсудить в ПМ
Автор: dmention
Дата сообщения: 22.07.2011 13:55
Существует БД на MS Access в формате Access 2000. Работаем в MS Access 2003.

База используется много лет. С недавних пор при добавлении новой записи или при выполнении запроса, который в новую запись копирует данные из записи предыдущего периода стали происходить странные вещи.

При попытке сохранении записи (перехода на другую запись) или удалении записи выдается сообщение "Ключ поиска не найден ни в одной записи".

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

Удалить запись не получается.

После выполнени "Сжать и восстановить БД" запись можно удалить обычным способом.

В базе около 5000 записей. Работают одновременно до 6 человек.

В чем может быть причина ошибки? Как определить из-за чего это происходит?

Спасибо!
Автор: videolamer_V
Дата сообщения: 22.07.2011 14:16
PrWork1
Написал в ПМ
Автор: YuriyRR
Дата сообщения: 23.07.2011 02:19
dmention
Опиши подробно по шагам, что делает программа при этой операции. Так не разобраться. Записей очень мало соотв-но проблемы в программе.
Автор: PrWork1
Дата сообщения: 24.07.2011 09:47
dmention
Если эти ошибка вылезают в чистом акссесе (не в пользовательских формах), можно попробовать вручную перенести всю структуру и данные в новую чистую базу
Если ошибка вылезают в форме(формах) то возможно это прораммные ошибки, можно исправить в исходном коде
Автор: aidomars
Дата сообщения: 26.07.2011 14:45
Есть форма содержащая поле со списком (сотрудники) и список в виде таблицы, куда подтягиваются данные из запроса.
Надо чтобы при выборе в поле сотрудника, в таблице оставались только те строки, которые содержат в столбце(8) этого сотрудника.
Пробовал в событии изменения поля прописать Me.Filter = "Список5.Column(8) = " & ФильтрОтв, не получается.
Подскажите как сделать.
Автор: YuriyRR
Дата сообщения: 26.07.2011 17:44
aidomars

Цитата:
Me.Filter = "Список5.Column(8) = " & ФильтрОтв, не получается.

Фильтр действует на запрос который подтягивает данные. В него нужно записать дополнительное условие WHERE предложения, например
СОТРУДНИК = "ИВАНОВ"
Автор: aidomars
Дата сообщения: 26.07.2011 18:02
а полностью как? у меня в список5 данные подтягиваются из запроса. не пойму, действовать через запрос и потом обновлять список или через список напрямую?
Автор: PrWork1
Дата сообщения: 26.07.2011 22:49
aidomars
Если таблица с данными сделана как подчиненная форма(ПФ) можно по событию изменения списка модифицировать источник данных ПФ, либо через поле на форме связать основную и ПФ

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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