![]() |
VBA, Access, MSDN и прочие неприятности
Доброго времени суток.
Есть access и база данных в нем. Точнее пока ее нет. Но будет. В форме есть незамысловатый контрол - TextBox. Еще там есть строка ввода и кнопка. При загрузке формы в TextBox грузится содержимое столбца таблицы. По нажатии кнопки в эту таблицу добавляется то что в строке ввода. Естественно надо обновиьт содержимое TextBox. Вот тут у меня ступор. Никаких тебе рефрещей. Только какой то подозрительный .Requery. Естественное решение вопроса - открываем MSDN и смотрим. Вот тут и появляется целый ряд вопросов: 1. В MSDN я не нашол у TextBox такого метода. Его нет. Такого метода вообще нет. Фильтровал по Visual Basic. Искал по TextBox и .Requery. MSDN за апрель 2003. В MSDN что информации о классах VBA нет ? 2. Есль ли какой то специализированый форум по VBA. А еще лутше по VBA и Access ? Вопросов у меня судя по всему будет много... 3. Как эту гадость обновлять то ? На всяк случай привожу текущий код формы: Код:
Option Compare Databaseметод вроде нашло. Что то я ничего не понял... |
Сходу еще один вопрос.
Не бейте сильно : Как и где тут обьявитьглобальную переменную ? Хотелось бы соединятся с базой ОДИН раз при загрузке формы, ане каждый раз когда кнопку жмут. ибо последнее - бред. НО при этом Код:
Private Sub Form_Load()Если вынести процедуру в модуль то обьявление ошибки не выдает, но переменную из другого модуля не видно.... |
А сделать в проекте файл типа класс не пробовал?
|
Нет. А как это применимо в данном случае ?
В том смысле что зачем мне новый класс ? Это относится к какой из проблем : 1. Обновление TextBox. 2. Создание глобальной переменной ? Очень надеюсь на ваши пояснения. :beer: А то :help: С уважением. Ворон. |
Глобальные переменные в VBA (если я правильно помню:)) объявляются вне процедуры так:
Код:
Public VarName As String |
Public VarName As String
- сейчас попробую. А по поводу Requery (в принципе) - а как иначе получить измененные данные из таблицы, если не выполнить запрос ешё раз? -Никак. По логике должно работать. Но не работает. Не обновляется TextBox с таким кодом. Точнее обновляется но с "задержкой". Тоесть: 1. Нажал на кнопку. видимого эффекта нет. 2. Нажал еще раз появилось то что сохранил в прошлый раз. 3. Нажал еще раз появилось то что сохранил в прошлый раз. Тоесть RecordSet.Close Connection.Close proff_list.Requery Нехватает. Нужно еще чего то. Но что ? |
На
Цитата:
Цитата:
|
Попробуй так (объявит глобальную переменную вне процедуры):
Код:
Public Connection As VariantПо поводу обновления - сейчас уже и не вспомню почему так делал, но когда мне надо было обновить список я делал так (strFilter - SQL запрос): Код:
If SysCmd(acSysCmdGetObjectState, acForm, "frmExportWord") Then _ |
1. Не помогло. Не видит оно этой переменной.
2. Не ругалось, о и не работало. К своему стыду вынужден заметить что не понял что и как оно должно было сделать... |
С Public... я пробовал в Access 2003 - у меня он переменную видел.
Обновление скопировал из одного старого проекта. Можешь базу выложить (2 файла - com_db.mdb и другой *.mdb в котором код)? Или там один файл? |
Там один файл.
Сейчас еще раз попробую с public... Вроде все зделал как ты посоветовал... |
Цитата:
Код:
Private Sub proff_in_b_Click() |
Спасибо.
ОБНОВЛЕНИЕ РАБОТАЕТ !!!! проблема похоже было в использованиии ADO/ Но конечно лутше без ADO. Просто во всех книгах которые мне в руки попадали я сталкивался только с соединением через ADO и DAO. А appliction для Access нигде описано не было. =( Правда появились вопросы по DoCmd.RunSQL =( Изложил в новой теме так как вроде бы к этой не относятся. |
| Часовой пояс GMT +4, время: 21:36. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.