Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access

Модерирует : ShIvADeSt

ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

   

taravasya



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо.
Как я понял из описания, этой функцией задается интервал обновления? Если не прав поправьте пожалуйста. Если прав то она не совсем подходит... Хотелось бы обновления, только после внесения новых данных.
И есть ещё один вопрос. Ищу решение уже несколько дней. Нигде не могу найти даже зацепку.  
Имею таблицу :
Счётчики  
В ней столбцы:
№Смены, Дата, R4, R5, R6,..
Данные заполняются ~ раз в сутки.
Как создать запрос или VBA модуль для формы, в которой подсчитывалась бы разница полей?
То-есть допустим:
№Cмены  |      Дата     |      R4     |      R5     |      R6       |
--------------------------------------------------------------------------
1               |25.01.10      |    100     |     150    |       50       |
2               |26.01.10      |    200     |     200    |       60       |  
 
Как вычислить разницу между 1-й и 2-й сменами в поле R4?
Я понимаю, что это элементарно делается в Exele, но задача стоит, собрать всё в одну кучу. Что бы не приходилось метаться из окна в окно.

Всего записей: 251 | Зарегистр. 16-11-2007 | Отправлено: 16:45 09-02-2010 | Исправлено: taravasya, 16:49 09-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
taravasya
Ты так вскользь упамянул, что интерфейс сделан на Visual Studio, что я не сразу и заметил. Тем более, что задал вопрос в топике Access.
Строго говоря, Access не является сервером(ну или полноценым сервером), поэтому  возможностей по самостоятельному информированию клиентов у него нет.  
Посмотри http://www.tek-tips.com/viewthread.cfm?qid=1178990&page=1
 
Можно перейти на бесплатный MS SQL SERVER EXPRESS. Он гораздо мощнее Access.  Хотя и не предлогает front-end решений. Но, т.к. у тебя всеравно сделано на VS, то это и не помешает. В SQL Server уже можно будет попробовать использовать SqlDependency.
http://www.google.com/#hl=en&source=hp&q=SqlDependency+express&btnG=Google+Search&aq=0&aqi=&oq=SqlDependency+express&fp=1&cad=b
 
Опять же, если использована .NET, то можно порыться  в сторону broadcast message
http://www.google.com/#hl=en&source=hp&q=vb.net+broadcast+message&btnG=Google+Search&aq=0&aqi=g1&oq=vb.net+broadcast&fp=1&cad=b
 
Но все это при условии использования .NET. Какая имено VS использована ты не указал. Т.ч. сам гадай
 
 
 
 
Добавлено:
taravasya
По второму вопросу тоже не все понятно. Не мог бы ты все же объяснить на чем написан интерфейс. Потому как если есть не связанный с Аccess GUI, то и делай в нем вычисления. При чем тут VBA?

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:02 09-02-2010
taravasya



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я конечно дико извиняюсь...  Дело в том, что бросился на амбразуру как говорится с пустого места. Поэтому наверное мои комменты не очень то  понятны. Я ещё не совсем понимаю на чём нужно акцентировать внимание. Но постараюсь.
Есть фотолаба. Есть Win XP, под управлением которой, работает прога "DlabGui", которая в свою очередь контролирует лабораторию. Прога хранит статистику печати в Access-овской базе. Некоторое время, мы работали даже и не подозревая об этом. Просматривали статистику из интерфейса DlabGui. После, довольствовались тем, что переписывали ручками показания в Exele(ух... иногда мне кажется, что уж лучше так и продолжать!!!!)  Но! Эти долбанные немцы... млин! Они так неудобно всё организовали. Я не буду вдаваться в подробности этого аспекта. Скажу только что недочётов - море. Причём просто таки детских Видно, что те кто разрабатывал принципы обработки статистики этой лабораторией, никогда не пробовал печатать фотографии....
Одна из самых больших неудобностей:
Во время печати невозможно проконтролировать сколько в каком заказе ушло фоток. При выходе последних из лаборатории, часто приходится их пересчитывать вручную. А это и отпечатки пальцев на фотках, и ЗРЯ потерянное время.
Я подумал-подумал, и решил - вот было бы класно, если бы где нибудь, постоянно отображалась инфа о текущих заказах. Прога то проносит данные о том, что напечатала, в режиме реального времени.  А нигде её не отображает.
Держать постоянно открытым окно Access-а очень не удобно. По специфике работы программы DlabGui, её неудобно сворачивать потом разворачивать. Она как бы и не расчитана на это. А удобным мне показалось манюсенькое, полупрозрачное окошко, созданное в VS2008, в котором отображается всего лишь 10-15 строк из запроса(данные добавленные за последние 15минут).
Больше от VS мне ничего и не надобно, за исключением как раз поднятого вопроса об автоматическом обновлении(и в идеале звуковом сопровождении обновления).
Второй вопрос чисто Access-овский. Речь идёт про данные, о кол-ве напечатанных фоток за всю смену, и ведении отчетов о ней. Данные беруться опять же из обычной MDB таблицы. Ранее(как я уже говорил), эти данные переписывались в Exele вручную. Сейчас я вынужден контролировать 3 лаборатории, и вечерний отчёт стал для меня пыткой. Вот и бьюсь теперь как рыба для того что-бы облегчить свою участь.(а вскоре брезжит 4-я лаба).....
Если что не ясно, прошу не пинать, не ругать. Задайте мне пару наводящих. pleas....

Всего записей: 251 | Зарегистр. 16-11-2007 | Отправлено: 23:50 09-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
taravasya
Так я совсем и не ругаю, и не пинаю.
Просто чем лучше объяснишь, тем лучше будет ответ. Вот сейчас уже понятно, что SQL Sever не подойдет.
В данной ситуации я бы все же рекомедовал поставить на форму, созданную в VS2008, контрол Timer и по его команде запрашивать обновления. Ничего другого или лучшего при данной базе и конфиге не придумать.
Звук тоже можно сделать. Запоминаем количество рекордов или какой рекорд был последним и делаем запрос. При изменении запомненного значения, подаем звуковой сигнал.
Импорт из базы в Excell руками делать совершенно не надо. Смотри в своей версии Excell help для import/export data. Там можно как источник указать Access.  
Или можно на другом Timer настроить на импорт в Excell по ночам.
Или вобще ничего никуда не импортировать, а все делать в этом "манюсенькое, полупрозрачное", забирая данные напрямую из Access и обрабатывая в програме.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:34 10-02-2010
taravasya



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Проблема в том, что "манюсенькое, полупрозрачное", ничего никуда не сохраняет. Только показывает. А моей подготовленности, явно не хватит, на то что бы создать полновесное приложение, способное без глюков общаться с базой данных.  

Цитата:
Импорт из базы в Excell руками делать совершенно не надо. Смотри в своей версии Excell help для import/export data.

Это я уже проходил. Ничего плохого в этом не вижу, но всё же хотелось бы собрать всю отчётность в одно русло, ведь есть ещё другие аспекты деятельности, которые надо документировать, а Exele становится не достаточным...
Так, что если с "манюсенькое, полупрозрачное" я вроде как определился, то со второй проблемой я бы ещё хотел разобраться в рамках Access-а(тем более, что я уже не впервые сталкиваюсь с таким вопросом).

Всего записей: 251 | Зарегистр. 16-11-2007 | Отправлено: 00:52 10-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
taravasya

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

Так что же в таком случае можно сделать? Ни в какой базе нет чудесного визарда, который сделает именно то, что надо.
Могу только посоветовать обратиться к специалисту.  
Давайте договоримся. Мы обязуемся не продавать ваши фото, а вы не будете програмировать  Да, и еще мы оба не будем торговать семечками.
 
PS. Cмотри PM

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 02:11 10-02-2010 | Исправлено: dneprcomp, 06:47 10-02-2010
taravasya



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Так может быть Вы ещё и фотографировать откажетесь?

Всего записей: 251 | Зарегистр. 16-11-2007 | Отправлено: 02:18 10-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
taravasya
Ну, я в принципе и не занимаюсь. Но отказываться не буду. А то мало ли что...

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 02:32 10-02-2010 | Исправлено: dneprcomp, 03:31 10-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
taravasya
 

Цитата:
со второй проблемой я бы ещё хотел разобраться в рамках Access-а(тем более, что я уже не впервые сталкиваюсь с таким вопросом).
Вот в этом и сложность. Сталкиваешься не впервые и решения нет. Верно? Но по прежнему  
хочется.  Вот потому и надо дать програмисту делать а не фотографу.
В рамках только Access и без програмирования получить запрашиваемое решение не получится.  
 
Впрочем, если хочется научиться, то пожалуйста. Задавай вопросы и делай.
 
Да, забыл упомянуть, что та программа именно и расчитана на работу и обмен данными c несколькими лабораториями/филиалами. И репорты тоже предоставляет.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 06:46 10-02-2010 | Исправлено: dneprcomp, 07:02 10-02-2010
Oyger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги.
Подскажите, прибегать ли к помощи макроса.
Есть таблица с двумя столбцами (А и Б).
В столбце А содержатся номера (число - длинное). Без разницы чего - пусть будут заказы.
В столбцу Б - характеристика (текстовая).
Номера в А могут повторяться.
Надо сделать новую таблицу в которой будут уникальны номера заказов (А), а все значения в столбце Б из первой таблицы по заказам будут объеденены в одну ячейку.
К примеру:
Исходная таблица
А      Б
12     а
16     к
12     у
17     н
 
Получаем
А      Б
12     ау
16     к
17     н
 
Написать макрос ручным перебором через два рекордсета - я могу. Только надо ли так? Может есть пути попроще?
Подскажите.

Всего записей: 122 | Зарегистр. 22-03-2007 | Отправлено: 11:25 12-02-2010
Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Как можно сделать фильтр SQL в форме (Фамилия, Имя, Отч.. и т.д.)?
   
 
а следующий вводил:
   
 
Код

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 15:43 15-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Anton T
Честно говоря, непонятно что именно не работает и что надо.
Строка
Код:
 
strFiltr = " WHERE Left([" & strFieldName & "]," & Len(strFiltr) & ") = '" & strFiltr & "'"

тоже несколько смущает. Последний параметер strFieldName всегда = одной букве. По крайней мере в примере это так. Как же можно от него отрезать  Len(strFiltr) при Len(strFiltr) >1 ?
Рискну предположить, что должно быть что-то вроде:
Код:
 
strFiltr = "WHERE [" & strFieldName & "] LIKE '" & strFilter & "*'"

Предложенный код добавляет фильтр только для одного поля. Собственно, как и изначальный код.
Если же надо иметь фильтр для нескольких полей одновременно, то
Код:
 
Dim strTemp as String
 
If frm.Поле1 <> "" Then
   strTemp = "WHERE [Ф] LIKE '" & strFiltr & "*'"
End If
If frm.Поле3 <> "" Then
   If InStr(strTemp, "WHERE") > 0 Then
      strTemp = strTemp & " AND [И] LIKE '" & strFiltr & "*'"
   Else
      strTemp = "WHERE [И] LIKE '" & strFiltr & "*'"
   End If
End If
If frm.Поле5 <> "" Then
   If InStr(strFiltr, "WHERE") > 0 Then
      strTemp = strTemp & " AND [О] LIKE '" & strFiltr & "*'"
   Else
      strTemp = "WHERE [О] LIKE '" & strFiltr & "*'"
   End If
End If
frm.RecordSource = strSql & strTemp & " " & strSql1 & ";"  
 

 
Можно и не обращаться напрямую к контролам на форме,  
но мне не хотелось переделывать структуру параметров Sub fFilForm
 
http://www.techonthenet.com/access/queries/like.php

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:20 15-02-2010 | Исправлено: dneprcomp, 21:50 15-02-2010
Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dneprcomp
Ничего не получается, пишет: Object variable or With block variable not set (Error 91)
и переезжает желтую строку:
Код:
If frm.Поле1 <> "" Then

 
#

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 12:10 16-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Anton T
 
И не будет работать. У тебя же нет формы с именем frm. Как же оно рабoтать должно, если такого объекта нет?
Мой код надо было использовать в модуле. В Sub fFilForm. На change контролов поставь только вызов sub с передачей всех параметров.
 
На будущее, старайся избегать кирилицы в коде, в названиях объектoв и в названиях полей и таблиц базы данных. Не у всех может показывать нормально. И не всегда может работать нормально. Даже если неправильно будет работать один из ста компьютеров, это не значит, что именно он не попадется первым. И будешь гадать, отчего не работает.
 
Код

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 04:42 17-02-2010 | Исправлено: dneprcomp, 06:41 17-02-2010
Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dneprcomp
Кириллицы уже избегал. Форма есть называется Form_ClientForm. В коде был frm As Form заменен на frm As Form_ClientForm, запустил и снова ошибка выдает: Type mismatch, переезжает желтую строку: Call fFilForm(strFiltr, strSql, strSql1, Me.Subfrm.Form)

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 12:25 17-02-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Anton T
 
Передаешь не те параметры по типу.  
Попробуй уйти от передачи формы как параметра
При вызове sub strFiltr1 соответствует значение Поле1 и т.д.
Код

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 17:20 17-02-2010 | Исправлено: dneprcomp, 18:50 17-02-2010
dzjundzja88

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста, в Access 2007 как с помощью VBA с поля формы данные записать в таблицу?

Всего записей: 1 | Зарегистр. 18-02-2010 | Отправлено: 22:20 18-02-2010
Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dzjundzja88
ой извиняюсь, думал я выложил этот код это ексел, а ты просил аксесс...

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 11:34 19-02-2010 | Исправлено: Anton T, 11:35 19-02-2010
Oyger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А по моему вопросу кто-нибудь может что предложить?
Ссылка
 
Добавлено:
Ура!!!
Все решил! Всем, кто ломал голову (если такие нашлись /улыбается/) - спасибо.
Первоначально думал объеденять с помощью 2-х рекордсетов и дополнительной таблицы. Долго и муторно.
А сделал намного проще:
Создаем публичную функцию (Public Function) и используем ее в запросе.
 
Кому надо - могу привести детальный пример с полным описанием и примером кода...
 
Еще раз - всем спасибо!

Всего записей: 122 | Зарегистр. 22-03-2007 | Отправлено: 14:47 26-02-2010
Oyger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ честной!
Помощи вашей прошу, ибо не силен я еще в access'е:
Есть форма. На форме есть группа. В группе есть переключатели.
Как обратится к значению переключателя?
Если на форме создать переключатели (без группы) и работать с ними - у меня получается. А как вытащить из группы...
Подскажите, пожалуйста.
Спасибо.

Всего записей: 122 | Зарегистр. 22-03-2007 | Отправлено: 16:51 17-03-2010
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access
ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru