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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
evle
А как организовано сейчас и что значит попроще?

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:04 13-08-2005
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Сейчас все организовано плохо: для каждого спопоба набор дополнительных полей из которых потом выбирается через IIf. Но пока было всего 3 способа, а планируется десяток, да и бардак все равно устранять надо. Интересуют стандартные способы решения подобных задач.  
Сам думаю делать VB-скриптом: в справочнике с названиями способов завести поля для каждого вычисляемого поля и писать туда формулы в текстовом виде. При подсчете брать функцией формулу, парсить ее и подставлять аргументы.
Но тут вижу три проблемы:
1. Чем парсить формулы
2. Как передавать аргументы скрипту
3. Не будет ли такая конструкция тормозить
Может что посоветуете?


----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 07:53 14-08-2005
Orakle

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возникла проблема в следующем:
 
Есть таблица "расходы", в котрой Столбец Дата и Столбцы Расходы. И отдельная таблица "Зарплата", в которой столбец Дата и Зар.плата (Я думаю что даты нужно связать способом "один-к-одному", хотя не уверен). Мне нужно чтобы в запросе выводилось: Дата и в столбце "Сумма расходов" производилась следующая операция: Складывались данные за введенную дату в таблице "Расходы" с данными за туже дату в таблице "Зарплата" (если в таблице Зарплата ничего не введено, нужно чтобы считалось как 0). Как такое провернуть?
 
Спасибо.

Всего записей: 76 | Зарегистр. 23-02-2005 | Отправлено: 01:13 20-10-2005
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Orakle
Например, таблица "расходы" ras:
fdate - дата
amt - сумма расхода (или несколько видов расхода)
 
Таблица "Зарплата" zp:
fdate - дата
amt - зарплата
 
Тогда я бы сделал так:
 

Цитата:
 
SELECT fdate, SUM(amt) as amt1
FROM
(
  SELECT fdate, amt
  FROM ras
  UNION ALL
  SELECT fdate, amt
  FROM zp
) as t1
GROUP BY fdate
 

 
Но интуиция подсказывает, что у тебя неэфективный дизайн базы, на этот вывод наводит тот факт, что

Цитата:
Столбец Дата и Столбцы Расходы

То есть при добавлении нового вида расхода надо добавлять новый столбец и переписывать запросы. Тут надо как минимум 2 таблицы: виды расходов и значения расходов, связанных по полю "уникальный идентификатор вида расхода".
Но это так, к слову, информации мало, поэтому могу и ошибиться.


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

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 17:26 21-10-2005
Shadi



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть база на 60М на Access 2003! Фирма разрослась и сейчас с базой работает до 17 человек одновременно. Есть большие проблемы.Программист до меня был наркоман. Спер комп и скрылся. Запросы все идут "матрешкины"(сплошные вложенные). При попытке добавить в запрос что-нибуть еще сразу кричит "Не хватает памяти"!
Вопрос! С чего начать перенос на MS SQL? Может кто-то уже переносил таким образом базу. Буду очень благодарен за любые созидательные советы

Всего записей: 110 | Зарегистр. 07-05-2003 | Отправлено: 08:00 19-01-2006
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shadi
На delphikingdom было как раз об этом статья.
Опыт прикладного программиста в деле перевода базы данных с MS Access на SQL-Server

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 13:24 19-01-2006
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shadi
Самое трудное - это перевести запросы, так как в акцезе SQL немного извращенный, так как некоторые вещи там не реализованы. Начни с самого просто, вначале создай аналогичные базы на серваке, а потом начинай переносить запросы по одному, с самых маленьких сравнивая результаты работы в том и другом случаях. Как раз при сложных запросах уже разберешься где на что менять.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:02 20-01-2006
Shadi



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergeBS
ShIvADeSt
 
Спасибо за советы! Смотрю в сторону мастера преобразования в формат SQL Server.
Вроде MS сервак установил.. Запустил мастер.. Выдал 250 страниц протокола Вроде прошло все гладко??? Но надо еще смотреть и смотреть...  
Может есть какой мастер по переводу запросов из MS Access в MS SQL или все ручками?

Всего записей: 110 | Зарегистр. 07-05-2003 | Отправлено: 09:40 23-01-2006
Arjuna

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаете случайно, есть ли для Delphi компонент, который бы смог заменить многостолбцовый раскывающийся список (как в Access)?
 
А то трудно отвыкнуть от хорошего...

Всего записей: 6 | Зарегистр. 27-01-2006 | Отправлено: 20:17 27-01-2006
Silla



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Arjuna
Посмотри компоненты от ДевЭкспресс
Обсуждаются
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=0939&start=1640#lt
Скачать помогут здесь
http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=28418&start=1600#lt

Всего записей: 244 | Зарегистр. 18-11-2004 | Отправлено: 21:25 27-01-2006
Arjuna

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо Silla!
 
Просто решил с Access на Delphi мягко перейти ))

Всего записей: 6 | Зарегистр. 27-01-2006 | Отправлено: 21:38 27-01-2006
kii

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arjuna
Не понятен мне такой переход. Access это Access - для доступа клюбым базам и быстро я использую его, даже отчеты получаю в нем. А Delphi это шикарный инструмент. Икак это "мягко перейти" ?

Всего записей: 137 | Зарегистр. 11-02-2004 | Отправлено: 10:09 01-02-2006
vredinka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, помощи прошу!
Дано: таблица с именами людей и датами рождения + поле "возраст"(пустое).
Вопрос: как посчитать возраст для ВСЕХ людей в таблице на данный момент.
 
Нашла прорамму (VB): (Аргументы: Дата рождения и текущая дата; Назначение: Расчитывает разницу  
 
в годах между двумя датами (использовать для расчета возраста); Возвращает: Количество лет Integer)  
 
Function Age(Bdate, DateToday) As Integer  
If DateToday < Bdate Then Age = 0:Exit Function  
If Month(DateToday) < Month(Bdate) Or (Month(DateToday) = Month(Bdate) And Day(DateToday) <  
 
Day(Bdate)) Then  
    Age = Year(DateToday) - Year(Bdate) - 1  
Else  
    Age = Year(DateToday) - Year(Bdate)  
End If  
End Function
 
Взяла ленточную форму (фамилия, дата рождения, возраст), пихнула в неё поле с сегодняшней датой и  
 
кнопкой. На кнопку навесила эту функцию ([let]=Age([birfday], [today]), но она считает только  
 
активную запись, а не все. Что делать? Если можно - без SQL.

Всего записей: 19 | Зарегистр. 06-02-2006 | Отправлено: 21:36 06-02-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vredinka
А как функция может знать сколько записей в таблице и какие они? Надо пробежаться по рекордсету и на каждую строку сделать вызов функции.
IF я бы несколько упростил:
If Month(DateToday) <= Month(Bdate) And Day(DateToday) < Day(Bdate)) Then

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



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

Цитата:
На кнопку навесила эту функцию ([let]=Age([birfday], [today]),  

Так делать не надо, если нужны все возрасты. Надо добавить вычисляемое поле в запрос, которое бы вычислялось вашей функцией.

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

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 14:23 07-02-2006
vredinka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
А что такое рекордсет?
 
MrZeRo
В запросе я нашла только как простой вычислитель вызвать (стандартные функции) а вот как в него мою запихать?

Всего записей: 19 | Зарегистр. 06-02-2006 | Отправлено: 21:57 07-02-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vredinka
Recordset это результат любого SQL запроса. Это набор/set записей/records. Все что отображается в контролах на экране - результат явного или скрытого SQL запроса. Когда применяются команды MoveFirst, MoveNext, MoveLast то движение осуществляется по строкам рекордсета.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 06:45 08-02-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vredinka
При работе с базами данных есть правило: если какое-то поле можно посчитать исходя из других полей, в таблице его быть не должно.  
В запросах Access можно пользоваться любыми функциями из модулей. Используй построитель выражений.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 07:34 08-02-2006
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vredinka
Вставляй в запрос непосредственно выражение, которое необходимо. Н-р:

Цитата:
 
SELECT field_1, field_2, Age([birfday], [today]) as field_age, field_3, ...
FROM table_1
ORDER BY field_1  
 


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

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 09:39 08-02-2006
vredinka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем. Всё работает! Упихнула функцию в модуль. Теперь я беру маленькую формочку: два поля (ДАТА, на которую считаем и требуемый ВОЗРАСТ) и кнопка. По клику на кнопку открывается запрос, выводящий фамилии всех людей на ДАТУ, старше указанного ВОЗРАСТА.
 
Одна проблема: оно выдаёт не только тех, кто старше, но и почему-то тех, кто к заданному времени ещё не родился (с отрицательным возрастом). Функция перед вами (см. ранее). Где ошибка?

Всего записей: 19 | Зарегистр. 06-02-2006 | Отправлено: 23:30 08-02-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