26

(15 replies, posted in Russian)

Добавил.

27

(15 replies, posted in Russian)

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

Как сделать, чтобы при клике на визиты(Таблицу2) при добавлении, либо редактировании  объекта к визиту появлялись только объекты выбранного клиента.
Сейчас появляются объекты не выбранного в таблице1 клиента, а последнего открытого через форму AddCl ( т.е. событие OnShow для формы ddVizits корректно работает только при условии открытии формы  AddCl, т.к. ID для комбобокса берется с кнопки на этой форме).

28

(3 replies, posted in Russian)

Спасибо большое за ответы.
Еще вопрос про счетчик.
Можно ли на основе счетчика сделать поле, которое будет брать номер с этого счетчика и будет иметь предустановленный префикс с номером года. Например: 5-125/м/001 (где 5 это 2005 год ).  Это надо для того, чтобы в начале года обнулить номер письма ( у нас каждый год нумерация начинается сначала). Обнулять можно и вручную (минусовать от номера в поле количество записей в предыдущем году), или автоматически как-то настроить. Вопрос только в том, как сделать такое составное поле.

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

P.S. Про SelectedRow понятно, но это только выделяет строку, но не кликает по ней. Какой-то процедуры CellClick  я не нашел, не знаю, существует ли она.

Не могли бы вы выложить уже поправленный проект?

30

(3 replies, posted in Russian)

Сделал частично базу, поднакопилось  несколько вопросов, помогите пожалуйста по-возможности.
База отправлена на почту: support@drive-software.com со ссылкой на данную тему.

1.
На главной форме три таблицы, во второй и третьей значения меняются в зависимости от первой и второй соответственно (корреспонденты, переписка и объекты).
Если последовательно вносить в базу данные таким образом:
Шаг1. Form1: Добавить –  вводим данные о корреспонденте, добавляем объект (объекты),
Шаг2. Открываем форму добавить переписку, там вносим данные о входящей записи,
Шаг3. Выбираем объект (объекты) к этой записи, которые добавляли ранее сохраняем. Все ОК.

Теперь, нам надо изменить данные о переписки, либо изменить, или добавить объект.
Если кликнуть по значению в первой таблице, то проблем нет, но чтобы добраться например до объектов надо открыть три формы (три шага как при добавлении корреспондента).
Если кликнуть  по значению во второй таблице, то действий меньше, но тут возникает проблема.  Комбобокс с добавлением объекта к переписке ( ID объектов комбобокс берет с кнопки сохранить корреспондента на форме его добавления) показывает объекты того корреспондента, которого в последний раз я открывал в первой таблице на главной форме, а им может быть другой корреспондент со своими объектами. И именно его объекты и будут в этом комбобоксе. Аналогично, если кликнуть по значению третье таблицы,. Форма с кнопкой "сохранить корреспондента"   не участвует при изменении данных вторым способом, в этом наверное все дело?

2. Цвет фона ячейки при определенном значении. Очень странно работает. В ином случае подкрашивает, когда значения появляются в таблице, но лишь частично, в ином случае подкрашивает при нажатии на ячейку, в ином случае не подкрашивает вообще. Кстати, в примере в факе работает похоже. Хотелось бы, что цветом выделялось постоянно, т.е. открыл и видно, что есть такие-то записи, соответствующие условию, а не щелкать по записям.

3. Нестандартный счетчик. Для исходящей корреспонденции добавил нестандартный счетчик вида 125/м/001. С этим проблем не было.
Для технических условий нужен счетчик другого типа. В таблице "Uch" (участки) есть аббревиатура, соответствующая определенному участку.  При добавлении технических условий я выбираю объект, который относится к участку.  Хотелось бы при выборе объекта чтобы счетчик брал аббревиатуру с нужного участка. Например: Зав/001.

4. Создание папок.
Возможно ли такое, что при  добавлении корреспондента в определенной директории создавалась папка с наименованием корреспондента и подпапка с наименованием объекта? Туда будут добавляться файлы относящиеся к данному корреспонденту и объекту.

5. Есть ли функция похожая на SetFocus. только не устанавливающая фокус на строке, а выбирающая ее? Т.е. в таблице, от выбора значения которой, изменяются значения в другой,  автоматически выбиралась первая (или последняя) строка.

А можно ли, чтобы вместо MS- присваивалось какое-либо значение по условию. Например, если область ивановская, то Ив-0001, а если Московская, то МСК-001. Значения аббревиатур хранятся в таблице с перечнем областей.

32

(7 replies, posted in Russian)

Спасибо, Дмитрий! Это то что нужно!

33

(7 replies, posted in Russian)

Сделал тестовую базу по вышеуказанной схеме.
Порядок действий такой.
На форме добавления клиента добавляю клиента, сохраняю.
На той же форме добавляю несколько объектов, все объекты отлично привязываются к клиенту.
С этой же формы добавляю визит и на форме добавить визит выбираю дату и  объект из комбобокса. Но запись не сохраняется (в таблицу visits), ругается на id.objects
В качестве ключа в комбобоксе выбрано  visits.id_objects, поля nameOb
Что я делаю не так, или не таком порядке?
Проект прилагаю.

34

(7 replies, posted in Russian)

Спасибо! Самое главное, думал о таком варианте, но так и не смог реализовать.

35

(7 replies, posted in Russian)

Спасибо!
А если за одно посещение регистрируется несколько объектов?
Типичный случай: обратился клиент ООО "ВымпелКом", в одной заявке указал восемь базовых станций по всей области (объекты).

36

(7 replies, posted in Russian)

Помогите пожалуйста сформировать правильные связи с таблицами.
Есть таблица клиенты, обращения клиентов и объекты клиентов
Клиенты могут обращаться много раз и по разным объектам, в том числе много раз по одному и тому же объекту.
Уже и так и так пробовал...
Хотелось бы, чтобы на главной форме пользователь нашел клиента, кликнул по нему в таблице, а там уже  добавлял обращения и добавлял,  либо выбирал уже существующие объекты.

anchoret wrote:

Опаньки! А вот это идея! Можете показать действующий пример? Ибо это как раз то, что нужно! Но сам я не настрою...

Примера нет, сам пока так планирую сделать. В принципе есть готовые примеры на форуме по сохранению резервной копии БД, остается  только Дропбокс установить и аккаунт там зарегистрировать.  Это же просто папка, прописать путь к ней в скрипте и все.

Как промежуточное решение: настроить сохранение резервной копии в папку Dropbox. Через секунды после сохранения база будет в облаке и доступна на любом устройстве с установленным Dropbox. Тоже самое с Гугл докс можно сделать.

Тогда попозже, база готова лишь частично, сначала вроде бы все понятно, а как чего-то касаешься, начинаешь рыть чужие базы в поисках решения.

Кнопка группировки записей на форме - плюсик. Было бы удобно разворачивать расширенный поиск по нажатию этой кнопки.

Вопрос по реализации базы данных.
Делаю базу входящей/исходящей корреспонденции. Главной таблицей у меня будет номер входящей корреспонденции (счетчик), помимо этого в этой таблице добавляется дата, руководитель, исполнитель и пр. Соответственно,  на форме добавления записи есть блок добавления корреспондента, который добавляется в отдельной форме, в отдельную таблицу, в которую вносятся все данные о нем.  Дело в том, что корреспондент может периодически повторятся и я не могу сообразить, как при добавлении записи о входящей корреспонденции реализовать выбор уже существующего корреспондента с подстановкой уже занесенных о нем данных.
Для себя пока вижу такие решения:
1. Выбор контрагента из комбобокса. Скриптом прописать  заполнение определенных тексбоксов/надписей при выборе значения.  Но контрагентов в конечном итоге сотни и листать в последствии будет затруднительно.
2. Добавить на форму добавления записи табличку с поиском в таблице контрагент  и скриптом прописать заполнение определенных тексбоксов/надписей при выборе значения в таблице (в случае нахождения записи). Минус - вероятность ошибки при поиске и как последствие куча дубликатов контрагентов, отличающихся буквой,словом.
3. Добавить промежуточную форму на кнопку "добавить контрагента", где будет происходить поиск в таблице контрагент и выбор значения. Минус тот же.
4.  На главной форме через поиск найти запись с контрагентом и посредством кнопки добавить запись с учетом найденного значения, т.е. с уже заполненным контрагентом.
Интересует 4 вариант, как самый удобный, но  может быть есть другие решения и кто-нибудь поделится примером.

42

(42 replies, posted in Russian)

kunar80 wrote:

Готовый проект.
Учёт контрольных проверок и устранения выявленных недостатков. При доработке "под себя" - учёт выполнения работ и пр.

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

43

(7 replies, posted in Russian)

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

44

(7 replies, posted in Russian)

Спасибо, так работает, хотя не совсем удобно три значения.

45

(7 replies, posted in Russian)

Как осуществлять поиск с учетом чекбокса? При включении  чекбокса в поиск ищет только по чекбоксу, по остальным параметрам поиск пропадает. Версия программы 1.5

Здравствуйте!  Есть ли возможность связать базу с картами (объектами на карте)?Например по клику открывается карта с определенным адресом.