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

» VBA for Access

Автор: jek1976
Дата сообщения: 05.07.2009 23:49

Цитата:
2.Когда и как происходит поиск?
3.Где и как происходит отображение результатов поиска?

НИКАК. Представленная мною форма будет нужна для пошагового последовательного продвижения по базе данных. О поиске пока речь не идет, хотя для просмотра найденных записей она (форма) тоже потребуется.
Автор: dneprcomp
Дата сообщения: 05.07.2009 23:50
jek1976
Пока нет ответа на #2, о какой логике работы можно говорить?
Автор: jek1976
Дата сообщения: 05.07.2009 23:51
Сейчас важны лишь две вещи: возможность удобной коррекции данных и мгновенное отображение результатов в процессе этой коррекции.
Автор: dneprcomp
Дата сообщения: 05.07.2009 23:55
jek1976

Цитата:
и мгновенное отображение результатов в процессе этой коррекции.

Переменные надо объявить на уровне модуля.
И присваивать значение только одной переменной в каждом контроле, а не в sub.
Значение для записи бери только из переменных - хоть и на Change
На Change/Click вызывай Sub и формируй строку
Автор: jek1976
Дата сообщения: 05.07.2009 23:55

Цитата:
Пока нет ответа на #2, о какой логике работы можно говорить?
Поиск пока не нужен, пока мне важно правильно собирать значения из различных атрибутов в записи БД и отображать их в "склеенном" виде по определенным правилам (я уже говорил об этом ранее), т.е. в виде библиографической записи.



Добавлено:

Цитата:
Значение для записи бери только из переменных - хоть и на Change
На Change/Click вызывай Sub и формируй строку

Да! Именно этим сейчас и пытаюсь заняться.
Автор: dneprcomp
Дата сообщения: 06.07.2009 00:01
Если не сработает, не забудь поместить код. Для длинного кода используй tag more(см. справку)
Автор: jek1976
Дата сообщения: 06.07.2009 00:03
ОК. Про more я в курсе.
Автор: jek1976
Дата сообщения: 06.07.2009 12:21
Ни хрена не выходит.
Перепробовал события Change, AfterUpdate.
При изменении текста в TextBox'е и прочтении его свойства .Text при событии Change (или AfterUpdate), оказывается, что значение свойства не изменено, хотя визуально в этом TextBox'е на форме - изменения ЕСТЬ!

dneprcomp, я забыл упомянуть про то, что этот TextBox связан с полем БД. Может быть, изменение содержимого TextBox'а на форме не отражается на значении его свойства .Text до тех пор, пока изменения не попадут в запись БД (написал несколько путанно, но смысл, думаю, понятен)?



Автор: dneprcomp
Дата сообщения: 06.07.2009 19:42
jek1976

Цитата:
этот TextBox связан с полем БД. Может быть, изменение содержимого TextBox'а на форме не отражается на значении его свойства .Text до тех пор
Может быть. Для чего TextBox, предназначеный для поиска, привязан к базе?! Ты же с него даные в базу заносить не дожен и не будешь.
Отвяжи все контролы связаные с формированием строки и попробуй
Автор: jek1976
Дата сообщения: 06.07.2009 19:50

Цитата:
Для чего TextBox, предназначеный для поиска, привязан к базе?! Ты же с него даные в базу заносить не дожен и не будешь.

Наоборот, обсуждаемый TextBox НЕ предназначен для поиска, а служит для занесения и показа содержимого определенного поля при перемещении по БД. Я об этом раньше уже написал: с поля "Название" данные должны попадать в определенное поле строки БД.


Добавлено:
А если мне попробовать перейти на чистый VB, чтобы не иметь геморроя с событиями в Access, логику которых, мягко говоря, сложно уяснить даже методом научного тыка? Что дополнительно может потребоваться из инструментальных средств?
Автор: dneprcomp
Дата сообщения: 06.07.2009 22:13
jek1976

Цитата:
Наоборот, обсуждаемый TextBox НЕ предназначен для поиска, а служит для занесения и показа содержимого определенного поля при перемещении по БД


Цитата:
При изменении текста в TextBox'е и прочтении его свойства .Text при событии Chan
Я так понимаю, что при внесении юзером изменений в данный TextBox переформируется строка на Change. Если так, то TextBox не должен быть привязан к базе. А если должен, то, возможно, change происходит только после update рекорда.
А update для привязанных контролов, если я не ошибаюсь, происходит на LostFocus


Цитата:
Что дополнительно может потребоваться из инструментальных средств?
Если имеется в виду VB6, то стандартных контролов(инсталлируются вместе с VB6) хватит.

PS.Работа с привязаными контролами не есть хорошо.

Автор: jek1976
Дата сообщения: 07.07.2009 19:22

Цитата:
PS.Работа с привязаными контролами не есть хорошо.

"Привязанный" к полю БД?
Ну а если контрол "отвязать" от поля БД, то каким образом тогда заносить значения из БД в эти "отвязанные" контролы?
Автор: dneprcomp
Дата сообщения: 07.07.2009 20:37
jek1976
Через VBA код. Лучший контроль за действиями юзера; более гибкая логика; лучшая сохранность даных.

http://www.everythingaccess.com/tutorials.asp?ID=VBA-Traps%3A-Working-with-Recordsets
http://blogs.techrepublic.com.com/10things/?p=373
http://bioinfo.unice.fr/enseignements/EPU_2005/Master_bd/Session9/DoCmd.RunSQL.html

PS. Если юзер вносит что-либо в привязанный контрол, то даные в базе будут изменены.
Автор: jek1976
Дата сообщения: 07.07.2009 22:30
Вот, попробовал отвязать контрол (пока только один).
Ситуация аналогичная.



Цитата:
Через VBA код.

А смысл какой здесь в использовании именно VBA? Ведь в Access форму придется создавать только программным способом в момент выполнения, а это не совсем удобно. По крайней мере, я не нашел в Access способов добавления готовой формы - "чистой", такой, как в Visual Basic 6, Excel или в Word...
Access'овская форма, которая разделена на область данных, заголовок и подвал, имеет те неудобства, с которыми я столкнулся - неясную работу событийных процедур, зависящую от обновления записей в БД. Это мое впечатление.

Можно ли использовать "стационарный" Visual Basic 6.0?
Автор: dneprcomp
Дата сообщения: 07.07.2009 23:19
jek1976

Цитата:
Можно ли использовать "стационарный" Visual Basic 6.0?

Сколько угодно

Цитата:
Ведь в Access форму придется создавать только программным способом в момент выполнения, а это не совсем удобно
С какой стати именно в момент выполнения? Если перестать пользоваться визардами(а мне кажется, что именно пользуешься), то создаешь все формы заранее. Точно так же как и в VB.
Цитата:
По крайней мере, я не нашел в Access способов добавления готовой формы - "чистой", такой, как в Visual Basic 6
Там же где и New Table, New Query

Автор: jek1976
Дата сообщения: 08.07.2009 01:16

Цитата:
Если перестать пользоваться визардами(а мне кажется, что именно пользуешься),

Нет, только конструктором. Кстати, вставку формы нашел, но результат работы с событиями - тот же...
Автор: dneprcomp
Дата сообщения: 08.07.2009 06:56
jek1976
Визард и конструктор одно и тоже

Цитата:
результат работы с событиями - тот же
Конечно тот же. Вот так вот Access работает.
Автор: jek1976
Дата сообщения: 08.07.2009 16:46
Блин горелый!
А как же тогда создавать?


Цитата:
Там же где и New Table, New Query

Это в верхней менюшке?


Автор: dneprcomp
Дата сообщения: 08.07.2009 19:35
jek1976
Похоже, да. Я не использую руссие версии(ну так сложилось), т.ч. как перевели то или иное меню сказать не могу.
Но когда добавляешь новую форму, надо отказаться от всех конструкторов. Просто добавить голую форму. Потом с панели инструментов(контролов) добавляем вручную все что надо: textbox, labels и т.п.

Кстати, вон же видно: "СОЗДАТЬ"
Автор: jek1976
Дата сообщения: 08.07.2009 19:38
Вот так я и делал
Автор: dneprcomp
Дата сообщения: 08.07.2009 19:49
jek1976
А "СОЗДАТЬ" прбовал?
Автор: jek1976
Дата сообщения: 09.07.2009 10:38

Цитата:
А "СОЗДАТЬ" прбовал?

Делаю так (других команд нет), как в менюшке на рисунке:

Автор: ZlydenGL
Дата сообщения: 09.07.2009 12:14
jek1976, перейди на вкладку "Формы", и уже там нажми "Создать"
Автор: jek1976
Дата сообщения: 09.07.2009 12:34
Ну ведь там же есть только Мастер и Конструктор (не считая Автоформ, Диаграмм и Сводных таблиц, которые не подойдут), а ты ранее говорил, что это одно и то же! Вот скриншот:
Автор: ZlydenGL
Дата сообщения: 09.07.2009 12:47
jek1976, чтобы создать ПУСТУЮ форму - запускай КОНСТРУКТОР и уже в нем тащи в тело формы нужные тебе поля, предварительно указав, какую таблицу использовать в качестве базиса.

Добавлено:
Совсем потерял нить рассуждений. jek1976, можешь еще раз суть проблемы в ЛС изложить? Или здесь суммировать, чтобы не лазить назад?
Автор: jek1976
Дата сообщения: 09.07.2009 12:52
ОК, попытаюсь изложить снова.
Автор: dneprcomp
Дата сообщения: 09.07.2009 19:00
jek1976
http://databases.about.com/od/tutorials/ss/forms_4.htm
http://databases.about.com/od/tutorials/ss/forms.htm
Да перепробуй ты все пункты с конструктора и вниз и найди нужный
Кто может помнить и знать всевозможные переводы меню для всех версий Access?...
Автор: jek1976
Дата сообщения: 11.07.2009 20:08

Цитата:
http://databases.about.com/od/tutorials/ss/forms_4.htm
http://databases.about.com/od/tutorials/ss/forms.htm

Там почти ничего нет: несколько строк текста и все!

Добавлено:
Сейчас сделал новую чистую форму, накидал в нее текстбоксов, комбобоксов и надписей. Проверил нужное мне событие Change - вроде бы все нормально.

Вопрос теперь в другом: для комбобокса необходимо сформировать список значений и занести этот список в него. Сами значения списка - это одно из полей записей в определенной таблице. Как вытащить их из таблицы?
Автор: dneprcomp
Дата сообщения: 12.07.2009 02:56
jek1976

Цитата:
Там почти ничего нет: несколько строк текста и все!

А боьше и не надо. Там просто расписано за что отвечает каждый пункт меню
Цитата:
Вопрос теперь в другом: для комбобокса необходимо сформировать список значений и занести этот список в него.
Уже давал
http://www.everythingaccess.com/tutorials.asp?ID=VBA-Traps%3A-Working-with-Recordsets

Или если значений не много, занести нарямую в коде
Автор: jek1976
Дата сообщения: 19.07.2009 01:40
dneprcomp
Буду делать привычным мне способом - на VB. Через ADO.
Перехожу на ветку Visual Basic 6 (раздел "Прикладное программирование"). Если ты не против, продолжим общение там .

Страницы: 1234567891011121314151617

Предыдущая тема: Delphi+ADO


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