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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разбираюсь с чужой прогой на Access, но в самом Access не шуруплю. Кто-нить может помочь оптимизировать сей запрос?  

Код:
SELECT Attivita.Nome, Scadenza.Nome, Interventi.IDIntervento
FROM Scadenza INNER JOIN (Attivita INNER JOIN QueryUnion ON Attivita.IDAttivita=QueryUnion.IDAttivita) ON Scadenza.IDScadenza=QueryUnion.IDScadenza
WHERE QueryUnion.IDServer=Forms!ListaServer!tidServer;

Почему сделано так, не знаю, автор программы уже давно тут не работает.

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 14:24 12-07-2006
reddestfox



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сабж: MSAccess2003SP2.rus.
ОС: MSWinXPProSP2+.rus.
В существующей БД, где готова структура (3 НФ: несколько связанных таблиц) почему-то в формах (и старых и новых) при создании (или копировании) кнопки создаётся кнопка старого образца (NT,2k) -- такая плоская и неизменяющаяся, когда на неё наводишь курсор.
В других или новых БД кнопки в стиле ХР -- красивые, объёмные, подсвечивающиеся при наведении курсора.
В чём дело -- не пойму никак. Сравнивал и свойства кнопок и форм -- всё одинаково.
Вообще, не нашёл ничего похожего на old style button и new style button.
Похоже на глюк.
Как его избежать?
Уж больно не хочется создавать проект на таких убогих кнопках.

----------
Самый Рыжий Лис На Свете!

Всего записей: 1857 | Зарегистр. 25-11-2005 | Отправлено: 23:12 19-07-2006 | Исправлено: reddestfox, 23:29 19-07-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
reddestfox
http://forum.ru-board.com/topic.cgi?forum=33&topic=7120#2

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 01:48 20-07-2006
reddestfox



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашёл!  
 
Проблема:
В существующей БД, где готова структура (3 НФ: несколько связанных таблиц) почему-то в формах (и старых и новых) при создании (или копировании) кнопки создаётся кнопка старого образца (NT,2k) -- такая плоская и неподсвечивающаяся, когда на неё наводишь курсор.  
 
Решение:
Открываем проблемную БД, строка меню: Сервис -- Параметры -- Формы и отчёты -- ставим галку напротив "Элементы управления из тем Windows в формах".  
 


----------
Самый Рыжий Лис На Свете!

Всего записей: 1857 | Зарегистр. 25-11-2005 | Отправлено: 20:37 20-07-2006 | Исправлено: reddestfox, 12:35 22-07-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaylang
Да здесь не запрос надо оптимизировать...
В общем, то это тоже способ, и если всё работает, то можно обойтись без реорганизации структуры БД. Нужно видеть все составляющие и цель.

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 14:16 24-07-2006
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unfreqient

Цитата:
Да здесь не запрос надо оптимизировать...  

Я бы мог показать все составляющие, боюсь ты по-итальянски можешь не понять.
Проблема этого запроса в том, что после 50 записей в Interventi, программа начинает заметно тормозить. Ну и чем дальше, тем хуже. Доходит до того, что на отработку одного запроса уходит 5 мин и более...
Имхо, там проблема не только в этом запросе, но с чего-то надо начинать...

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 15:29 24-07-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А Attivita, Scadenza на сколько строк и где они размещены (не в сети?), если 5 минут запрос выполняется, какой ПК? Если на 500,000 строк таблички, ещё размещённые на сетевом ресурсе, то для P-III может и 5 минут выполняться, теоретически. А начать можно стого, что, например, вместо Forms!ListaServer!tidServer поставить значение, потом исключить какую-нибудб табличку из запроса и т.д. Пока не станет понятно, что наиболее тяжело идёт. Далее можно переделать запрос: например, создание промежуточных таблиц и запроса с их участием.

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 16:39 24-07-2006
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unfreqient

Цитата:
А Attivita, Scadenza на сколько строк и где они размещены (не в сети?),  

Эти вообще на 5-20 строк... Файл .mdb с таблицами и программой размещен в сети, но при переносе на локал ничего не меняется. Компы PIV с достаточной памятью. Правда меня всегда убивает то, как Access жрет до 100% процессорного времени.

Цитата:
вместо Forms!ListaServer!tidServer

Ну это не проблема. На самом деле Forms!ListaServer!tidServer это номер сервера.  

Цитата:
потом исключить какую-нибудб табличку из запроса и т.д.

Я тут еще нашел несколько запросов, которые добавляются к вышеуказанному запросу в процессе выполнения. Они входят в QueryUnion...

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 16:57 24-07-2006
unfreqient



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

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 17:10 24-07-2006
Almaz



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaylang
запрос какой-то подозрительный
таблица Interventi не подцеплена через JOIN ON
в результате к выбранным Attivita.Nome, Scadenza.Nome цепляются все значения Interventi.IDIntervento

Всего записей: 2219 | Зарегистр. 20-06-2002 | Отправлено: 17:17 24-07-2006
unfreqient



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

Цитата:
к выбранным Attivita.Nome, Scadenza.Nome цепляются все значения Interventi.IDIntervento

ну такое может быть, почему бы и нет, хотя можно и уточнить так ли

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 17:51 24-07-2006
Almaz



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

Цитата:
такое может быть
в педагогических целях, типа так делать не надо

Всего записей: 2219 | Зарегистр. 20-06-2002 | Отправлено: 18:04 24-07-2006
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Almaz

Цитата:
запрос какой-то подозрительный  
таблица Interventi не подцеплена через JOIN ON  

Самое интересное, что именно она должна обрабатываться.
Попробую вкратце объяснить задачу, которую должна была решить данная программа.
Есть сервера, на них выполняются кое-какие работы. Периодичность работ может быть разная: ежедневно, раз в неделю, раз в месяц и т.д.
В таблице Interventi записи о проделанных работах.  
Вышеуказанный запрос должен просто выводить те работы, которые еще не были выполнены согласно периодичности.

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 18:08 24-07-2006 | Исправлено: Kaylang, 18:08 24-07-2006
Almaz



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaylang
есть шанс, что ситуацию может прояснить структура QueryUnion
поищи что-нить типа CREATE TABLE QueryUnion или CREATE VIEW QueryUnion
если там объявлено поле IDIntervento, то можно попытаться заменить в твоем кусочке кода  Interventi.IDIntervento на QueryUnion.IDIntervento, тогда хоть какой-то смысл во всем этом появится

Всего записей: 2219 | Зарегистр. 20-06-2002 | Отправлено: 19:10 24-07-2006
stoun



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток. Я недавно начал изучать access, помогите написать такую базу данных:
Разработать информационную систему (ИС) для кафедры универа, выпускающей студентов в кол-ве одной группы в годы. ИС должна содержать сведения:
- Курс,
- Ф. И. О. старосты,
- Ф. И. О. всех студентов,
- предметы, изучаемы в данном учебном году (предмет может изучаться несколько семестров)
- ФИО, ученая степень, звание преподавателя, ведущего данный предмет.
- Отчисленные студенты и причины.
Система должна позволять получать
- Списки студентов какой-либо группы(контрактники отдельно)
- Список предметов изучаемых студентами в течении всего срока обучения в институте.
Организовать поиск:
- Номера группы, в которой учился данный студент или учился отчисленный студент,
- Преподавателя, ведущего дынный предмет.
Заранее огромное спасибо....

Всего записей: 451 | Зарегистр. 15-10-2003 | Отправлено: 12:13 25-07-2006
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Almaz

Цитата:
есть шанс, что ситуацию может прояснить структура QueryUnion  

Скорее она все еще больше запутает.

Код:
SELECT *
FROM QueryGiorno
UNION  
SELECT *  
FROM QuerySettimanaArretrati
UNION
SELECT *  
FROM QuerySettimana
UNION  
SELECT *
FROM QueryMese
UNION SELECT *
FROM QueryNessunGiornale;
 

Для примера еще и структура QueryGiorno как она есть в оригинале:  

Код:
SELECT DISTINCT [Interventi].[IDIntervento], [Interventi].[IDUtente], [Interventi].[IDServer], [Interventi].[IDAttivita], [Interventi].[IDScadenza]
FROM Giornali INNER JOIN Interventi ON [Giornali].[IDIntervento]=[Interventi].[IDIntervento]
WHERE Interventi.IDIntervento  IN    (    SELECT *    FROM QueryUtenteENomina    )  AND  Interventi.IDScadenza=1  AND Interventi.IDIntervento  NOT IN    (        SELECT  Interventi.IDIntervento       FROM       (           SELECT Interventi.IDAttivita as attivita, Interventi.IDServer as server           FROM Giornali INNER JOIN Interventi ON Giornali.IDIntervento=Interventi.IDIntervento           WHERE  day(Giornali.Data)=day(Date())                  AND month(Giornali.Data)=month(Date())                 AND year(Giornali.Data)=year(Date())        )        AS T INNER JOIN Interventi ON (T.attivita=Interventi.IDAttivita AND T.server=Interventi.IDServer)            );
 


Таблица Giornali - куда заносятся выполненные работы.  
 
Вобщем, чем ломать голову, чувствую, что быстрее будет переделать ее в Delphi.

Всего записей: 38546 | Зарегистр. 29-08-2002 | Отправлено: 14:22 25-07-2006
Almaz



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaylang
там действительно объявлено поле IDIntervento, и можно попытаться заменить в твоем кусочке кода  Interventi.IDIntervento на QueryUnion.IDIntervento, тогда хоть какой-то смысл во всем этом появится
почему бы не попробовать? вдруг получится

Всего записей: 2219 | Зарегистр. 20-06-2002 | Отправлено: 16:46 25-07-2006
RobinStone

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток!
Не очень хорошо знаю сабж, но необходимость заставила изучать
Проблемма вот в чем:
1. Как вставить в некое произвольное поле на форме значение SQL запроса к таблице?
(не предлагайте поставить источник записей для формы - такое решение не подходит)
надо чтобы все это делалось в коде формы
2. Как выяснить (так же через VBA) существует ли запись в таблице и если нет - создать ее
3. Как потом данное поле обновлять (то есть при вводе в него данных обновлять их в таблице)
 
Подробнее зачем это нужно:
- Есть таблица планирования бюджета. Там поля СтатьяРасхода, Сумма, Месяц, Год
- Надо вывести на форме список статей и суммы по ним за определенный месяц/год (который устанавливается в заголовке формы в лист-боксе)

Всего записей: 14 | Зарегистр. 27-06-2006 | Отправлено: 06:20 26-07-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Set rs = CurrentDb.OpenRecordset("SELECT ...")
n=rs.Fields(0) - ноль это номер поля которое берём из "запроса"
DoCmd.RunSQL "... - встявляем куда надо значение n
2. создать селект на выборку с этим полем и подсчитать количество строк, если ноль, то нету его в таблице
Set rs = CurrentDb.OpenRecordset("SELECT ...")
If rs.RecordCount > 0 Then
3. Зарустить запрос на обновление: DoCmd.RunSQL "UPDATE ... SET..."

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 09:27 26-07-2006
RobinStone

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо
Пробывал так делать еще до того, как задать вопрос, но оказалось что у меня не загружена библиотека DAO, а с ADO он почему-то не хочет работать Может тоже чего не подключено
 
А можно еще один вопрос?
Как из скрипта создать на форме надпись и поле
задать им цвет, границу и разместить в определенном месте

Всего записей: 14 | Зарегистр. 27-06-2006 | Отправлено: 09:34 26-07-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 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