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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Открыть новую тему     Написать ответ в эту тему

Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
   
 
Обсуждаем вопросы только по Access VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.

 

NB! Дублирующая тема VBA for Access закрыта во избежание путаницы. Оставлена эта, как более ранняя и имеющая больше сообщений.

Смежные темы:
Помощь в создании SQL-запросов: SQL запрос
Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
Программы » Word FAQ | Excel FAQ | Access FAQ
Прикладное программирование » Word VBA | Excel VBA
Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007
----------
Как в Access перместить запись из одной таблицы в другую (допустим по нажатию кнопки на форме)?

Отправлено: 18:31 05-09-2002 | Исправлено: ALeXkRU, 17:14 03-08-2021
Delaverchik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос. Хотелось бы программно с помощью VBA, некоторые свойства  всех форм изменить сразу.  
 
Конструкция ...
 
Dim frm as Form
 
For Each frm in Application.Form
 
frm.AlllowEdits = False
frm.AllowDeletetions = False
frm.AllowAdditions = False
 
Next frm
 
 
не помог справиться со всеми формами. Она работает только с открытыми (активными) формами, в данном случае одним. Помогите, как решить чтобы свойства всех форм изменились, даже те которые лежат неоткрытыми?
 
А работаю я с MS Access 2003
 
Спасибо.

Всего записей: 23 | Зарегистр. 17-11-2005 | Отправлено: 15:28 17-01-2008 | Исправлено: Delaverchik, 15:30 17-01-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delaverchik
Невозможно что-либо менять у не существующего объекта. Пока форма не загружена в память, ее не существует. Можно было бы делать Load Form в цикле без show. Но это не имеет смысла, т.к. при закрытии формы все изменения будут потеряны. Простейшее, что можно сделать, это поставить эти три строки на On Load каждой формы.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 18:43 17-01-2008 | Исправлено: dneprcomp, 18:49 17-01-2008
jONES1979



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Delaverchik вместо коллекции Application.Form используй другие, типа CurrentProject.AllForms
 
 
Добавлено:
возможно, перед изменением придется их программно открывать в режиме конструктора и программно же сохранять

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 14:01 18-01-2008
mbg



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Access создана ленточная форма. Что она должна возвращать по обращению к ней из VBA (например: [имя формы])?

Всего записей: 11 | Зарегистр. 08-01-2003 | Отправлено: 15:09 21-01-2008
jONES1979



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

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 18:30 22-01-2008 | Исправлено: jONES1979, 18:40 22-01-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mbg
Если имеется в виду использовать для получения данных, то будут данные из текущей записи, как и для неленточной формы.

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 18:16 25-01-2008
erm1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kreol2009
 
По вопросу 2 написал пример. Могу сбросить на "мыло".

Всего записей: 2 | Зарегистр. 15-01-2008 | Отправлено: 01:07 27-01-2008
InsideTM



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время суток.
Подскажите пожалуйста как реализовать, замучался уже, третий день брожу по мсдну но толкового ответа не нашёл.
Есть три таблицы
1. device_type - типы устройств
В ней device_type_id (PK, счётчик), device_type_name (текст)
2. model - модели устройст
В ней model_id(PK, счётчик), model_device_type_id(FKEY int), model_vendor_id(FKEY int), model_name(nvarchar), ....
3. device - сами устройства (серийники и тд)
В ней device_id(PK, счётчик), device_model_id(FKEY int),......
 
Создаю форму для device.
Добавляю комбобокс для выбора типа устройст (cbo_device_type_name)
Для него источник данных: SELECT "device_type"."device_type_id", "device_type"."device_type_name" FROM "device_type" ORDER BY "device_type_name";
В таблицах он ничего не меняет, работает фильтром.
 
Создаю второй комбобокс (cbo_model).
Влияет на данные из device_model_id. Источник строк пустой.
 
Первому комбобоксу пишу в afterupdate() следующее:
Private Sub cbo_device_type_name_AfterUpdate()
Me.cbo_model.RowSource = "SELECT model_id, model_name FROM" & _
   " model WHERE model_device_type_id = " & Me.cbo_device_type_name & _
   " ORDER BY model_name"
Me.cbo_model = Me.cbo_model.ItemData(0)
End Sub
 
При выполнении всего этого дела получаю ошибку 800200009 "Введённое значение не подходит для данного поля"
 
я понимаю, что находит он имена, то есть текст, а формат поля у него цифровой (для записи фкеем). Как сделать так, чтобы выводил он текст, но работал с ID?
 
Заранее спасибо, уверен, что вопрос ньюбский и ответ на поверхности, но VB это не моё. Я вообще сисадмин =) А это так, в догонку к основным обязанностям )
 
Добавлено:
отмечу. база SQL 2005
Access 2007
 
Добавлено:
Вопрос решил сам. руборд помогает отвлечся от америкосов. проблема в "присоеденённом поле", где стояло 2 почему-то, сразу не догадался. Надо брать английскую лицензию.

Всего записей: 70 | Зарегистр. 06-12-2007 | Отправлено: 13:27 31-01-2008
Adm123

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, помогите, плз!
У меня есть таблица. Я делаю выборку по условию "значене поля1=ХХХ".
Получаю, ну, скажем, 100 записей.
Вопрос такой.
Могу ли я сделать выборку по условию "значене поля2=УУУ" из РЕЗУЛЬТАТОВ, т.е. из тех самых 100 записей?
Выборка SQL-запросом по нескольким столбцам не подходит, нужно именно последовательно...
Хотелтсь бы получить совет по реализации на VB, т.к. вся эта беда должна происходить в обработчике клика кнопки, а кроме этого там еще всякие дела...
Access2003.
Спасибо!

Всего записей: 5 | Зарегистр. 04-02-2008 | Отправлено: 10:44 05-02-2008
InsideTM



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Посмотри http://www.fontstuff.com/access/acctut19.htm

Всего записей: 70 | Зарегистр. 06-12-2007 | Отправлено: 12:20 05-02-2008
Adm123

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пасиба! То, что надо!

Всего записей: 5 | Зарегистр. 04-02-2008 | Отправлено: 15:29 05-02-2008
InsideTM



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, замучался уже.
Есть выпадающий список. Источник строк:
SELECT DISTINCT notes_date
FROM          notes
ORDER BY notes_date
 
И есть код VB, который должен делать запрос с учётом выбора в первом выпадающем списке:
 
Private Sub cbo_frm_notes_date_filter_AfterUpdate()
    Me.cbo_frm_notes_text_filter.RowSource = "SELECT notes.notes_id, notes.notes_text, notes.notes_date FROM" & _
   " notes WHERE notes_date =#" & cbo_frm_notes_date_filter & "#" & _
   " ORDER BY notes.notes_text"
End Sub
 
На выходе получаю: Incorrect syntax near '.02.'
 
Я понимаю, что проблема в формате даты. Уже пробовал несколько вариантов сс МСДН, но что то ничего не помогает.  
 
notes_date - хранится в кратком формате даты.
 
Проект Access 2007, на базе MSSQL 2005
 
Добавлено:
.02. это часть от 01.02.2008

Всего записей: 70 | Зарегистр. 06-12-2007 | Отправлено: 15:41 07-02-2008
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
InsideTM
Попробуй дату формировать как #ММ/ДД/ГГГГ# для обращения к Access базам из кода необходим только такое написание даты, может и для MS SQL необходимо такое?

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 16:23 07-02-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
InsideTM
При работе с датами нормально отрабатывает CDate, например:
 
CDate("30.01.2008")


----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 17:07 07-02-2008
InsideTM



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Попробовал так:  
 
Private Sub cbo_frm_notes_date_filter_AfterUpdate()
    Dim formateddate As String
    formateddate = Format(cbo_frm_notes_date_filter, "#mm/dd/yyyy#")
    Me.cbo_frm_notes_text_filter.RowSource = "SELECT notes.notes_id, notes.notes_text, notes.notes_date FROM" & _
   " notes WHERE notes_date =" & formateddate & _
   " ORDER BY notes.notes_text"
End Sub
 
 
Не получилось. Что делать?
 
Добавлено:
MrZeRo
Пробовал и его, в таком коде:
 
Private Sub cbo_frm_notes_date_filter_AfterUpdate()
    Dim formateddate As String
    formateddate = CDate(cbo_frm_notes_date_filter)
    Me.cbo_frm_notes_text_filter.RowSource = "SELECT notes.notes_id, notes.notes_text, notes.notes_date FROM" & _
   " notes WHERE notes_date =" & formateddate & _
   " ORDER BY notes.notes_text"
End Sub
 
Во всех случаях одна ошибка.  
 
Добавлено:
MrZeRo
Ради проверки даже вбивал без поля, а чисто дату, то есть код такой:
Private Sub cbo_frm_notes_date_filter_AfterUpdate()
    Dim formateddate As String
    formateddate = CDate("08.02.2007")
    Me.cbo_frm_notes_text_filter.RowSource = "SELECT notes.notes_id, notes.notes_text, notes.notes_date FROM" & _
   " notes WHERE notes_date =" & formateddate & _
   " ORDER BY notes.notes_text"
End Sub
 
Ошибка такая же как выше, синтаксис, тольлко чуть правее: Incorrect syntax near '.2007'

Всего записей: 70 | Зарегистр. 06-12-2007 | Отправлено: 17:22 07-02-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А так?
 
Private Sub cbo_frm_notes_date_filter_AfterUpdate()  
    Dim formateddate As String  
    formateddate = "08.02.2007"
    Me.cbo_frm_notes_text_filter.RowSource = "SELECT notes.notes_id, notes.notes_text, notes.notes_date FROM" & _  
   " notes WHERE notes_date =CDATE(""" & formateddate & """)" _  
   " ORDER BY notes.notes_text"  
End Sub

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 17:37 07-02-2008
InsideTM



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MrZeRo
Тут говорит ошибка в самом синтаксисе vb

Всего записей: 70 | Зарегистр. 06-12-2007 | Отправлено: 18:24 07-02-2008
AndVGri

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

Цитата:
 formateddate = Format(cbo_frm_notes_date_filter, "#mm/dd/yyyy#")  

А ты проверял, что получается в formateddate? У меня в VBA при использовании # вообще выдаётся 3948mm/dd/yyyy6. А на стандартный  
"#" & Format(Now, "mm/dd/yyyy") & "#" получаю
#02.08.2008# - то есть Format возвращает опрелелённые языком разделители, так что используй Replace для замены точек на /

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 18:53 07-02-2008
InsideTM



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AndVGri
Я может уже с ума сошёл после рабочего дня, но на код:
Private Sub cbo_frm_notes_date_filter_AfterUpdate()
    Dim formateddate As String
    Dim formateddate2 As String
    formateddate = Format(cbo_frm_notes_date_filter, "mm/dd/yyyy")
    formateddate2 = Replace(formateddate, ".", "/")
    Me.cbo_frm_notes_text_filter.RowSource = "SELECT notes.notes_id, notes.notes_text, notes.notes_date FROM" & _
   " notes WHERE notes_date =" & "#" & formateddate2 & "#" & _
   " ORDER BY notes.notes_text"
End Sub
 
Получил туже ошибку.

Всего записей: 70 | Зарегистр. 06-12-2007 | Отправлено: 19:05 07-02-2008
AndVGri

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

Цитата:
"#" & formateddate2 & "#"

А что получается здесь, посмотри в отладчике. Да и " ORDER BY notes.notes_text" попробуй добавить точку с заяпятой " ORDER BY notes.notes_text;" - в Access запросах она присутствует (правда, не знаю как в 2007)

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 20:04 07-02-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Access VBA


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru