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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
О, а ведь и правда.

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 10:57 13-10-2011
ffrosttutby



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день! Помогите пожалуйста:
 
На форме есть поле1, значение в которое вносятся через маску ввода "___х___" , т.е. например "640х480".
 
Подскажите, как в другом поле получить произведение 640 и 480, которые берутся из поле1?
 
Добавлено:
Ответ был найден.

Всего записей: 23 | Зарегистр. 23-02-2011 | Отправлено: 15:51 20-10-2011
SevereK20

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые форумчане, такой вопрос...
Есть форма. На форме есть кнопка, вызывающая другую форму.
После открытия второй(дополнительной) формы фокус переходит на нее.
Мне надо сделать так, чтобы дополнительная форма автоматически закрывалась при переходе обратно на основную форму.
В подчиненной форме в событиях писал - "Потеря фокуса" - "doCmd.Close".. не помогло..

Всего записей: 7698 | Зарегистр. 07-05-2010 | Отправлено: 11:04 08-11-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SevereK20
Мне кажется, писать команду закрытия нужно в той форме, которая получает фокус... Я всегда делаю попап модальным и, пока юзер его не закроет, на основную форму не выйдет.
 
Народ, а никто не подскажет: пытаюсь посчитать в коде количество записей в определенном сохраненном запросе, который фильтром имеет значение отдельной формы - все время ошибка rs.open ((( У меня такое впечатление, что такие неявные фильтры через код не работают...

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 15:37 18-11-2011
grbdv

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

Цитата:
все время ошибка rs.open  

Если бы еще кто-то знал - что такое rs...
 

Цитата:
посчитать в коде количество записей в определенном сохраненном запросе,

Точную цифру даст только рекордсет на запросе и то, если ты его populated - .MoveLast с последующим .MoveFirst
 

Цитата:
который фильтром имеет значение отдельной формы  

Я где-то выше высказывался - не доверяю встроенным механизмам передачи значений контролов. Загони в переменную, обнови ее по нужде, и, в последнюю очередь ужЕ - передай в запрос. Строкой передай :)
 
Чтобы точно знать, где новое занчение получается, - точки останова на событиях формы, контролов и связанных с ней форм... По идее - чудеc не бывает. А что, в дебаггере не судьба посмотреть базовый запрос?
? recordset.name
is the first 256 characters of the SQL statement
 
Другое дело, если ты вторичный реордсет формируешь на базе основного через .Sort или .Filter - там сложнее. Через переменные все надо делать - спросил ее - она тебе сказала.

Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 17:19 18-11-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grbdv
"Спросил ее - она тебе сказала" - золотые слова)
Помогла функция по подсчету записей на листе без обращения к рекордсету под этим листом.
 
rs, пардон - рекордсет.
Еще пардон - немного спутанно описал ситуацию: есть необходимость сделать функцию, которая считает количество записей. Внутри функции рекордсет, количество записей которого, собственно, необходимо посчитать, получает в качестве фильтра WHERE значения из формы - они же являются аргументами функции. Так вот этот рекордсет строится на ряде таблиц и на сохраненном запросе. Сохраненный запрос в качестве фильтра также использует значение формы. Все фильтры засунуть в рекордсет низзя ибо сначала должен фильтровать один, потом другой.
Скармливать сохраненному запоросу паблик переменную не пробовал ибо пустое)
 
Спасибо за отклик!

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 17:41 18-11-2011
Yado

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, а какие можно еще символы использовать в строке поиска кроме *. А то я пока использую именно ее. Например, надо найти: Трубы 450мм красные. Пишу: *трубы*450*красные. Но такой поиск не находит таких строк: Трубы красные 450мм.  Или например, надо чтоб не было в строке какого-нибудь слова. Какой символ ставить? Как будет тогда выглядеть строка поиска?

Всего записей: 8 | Зарегистр. 29-01-2009 | Отправлено: 20:01 18-11-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
надо в фильтре напечатать like *трубы* and like *450* and like *красные*
чтобы не было символа, надо ставить перед ним "<>"
 
Добавлено:
надо в фильтре напечатать like *трубы* and like *450* and like *красные*
чтобы не было символа, надо ставить перед ним "<>"

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 21:18 18-11-2011
grbdv

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
novo_again
Странно, часть поста сожралась... Повторю. Может пригодится на будущее. Про нюансы.  
 
Приметил как-то: при накладывании .Sort и .Filter св-во .Name нового рекордсета возвращает запрос родительского рекордсета, а не того, который получился. Т.е. все эти неявные WHERE и ORDER "сглатываются". А что там будет при n-й степени навороченности их друг на друга - не знаю. Дальше одной не нырял. А нырял-то из нужды только. Если масса БД позволяет, лучше отдельный рекордсет отдельным запросом сделать. По месту, короче. Вобщем, аккуратней надо с ними.  
 
 
Добавлено:
novo_again

Цитата:
есть необходимость сделать функцию, которая считает количество записей.

Давно сделано :))

Код:
 
Public Function fn_RecCntRst(pRst As Recordset) As Long
    With pRst
        Select Case .BOF And .EOF
            Case True:  fn_RecCntRst = 0
            Case False: .MoveLast: .MoveFirst: fn_RecCntRst = .RecordCount
        End Select
    End With
End Function
 

Для новрожденного, не тронутого только рекордсета! После перемещения пойнтера - сам понимешь...

Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 22:11 18-11-2011
Yado

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
novo_again
нее...не правильно меня поняли. Вот такой скрипт есть:
 
Private Sub Поле0_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strSQL As String
    strSQL = "SELECT запрос2.Goods, запрос.Price, запрос2.Suppl, запрос2.Cod, запрос2.Credit FROM запрос2 WHERE запрос2.Goods Like '" & Me!Поле0.Value & "*' order by запрос2.Price"
         
        If KeyCode = vbKeyReturn Then
            Me!List2.RowSource = strSQL
        End If
End Sub
 соответственно есть форма, в которой вбивается в строке поиск Трубы красные 450 и по нажатию enter выдаются записи соответствущие  поиску.  
Просто попробовал в строке поиска набрать ваш вариант...ничего не нашел(

Всего записей: 8 | Зарегистр. 29-01-2009 | Отправлено: 22:27 18-11-2011
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как сформировать вывод в Excel?
Есть форма с подчиненной таблицей table1. По каждой записи в ней нужно выбрать все записи из table2, где table1.ID =  table2.ID.  
В table1 ID уникальные, а в table2 могут повторяться.
Циклом уж больно долго считать...

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 10:07 21-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
А не проще ли данные запроса импортировать в Excel, чем формировать вывод?

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:23 21-11-2011
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да вот с запросом засада, не могу SQL написать.
Table2 это таблица, а Table1 это подчиненная форма, вот и не могу Table1 использовать в запросе.
Получаю ID так:

Код:
 
Set rstПеревод = Forms![Перевод списком].Controls![Перевод списком подчиненная].Form.RecordsetClone
With rstПеревод
 Do While Not rstПеревод.EOF
  p = rstПеревод.ID
 Loop
End With
 

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 10:28 21-11-2011 | Исправлено: aidomars, 10:40 21-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
Так чего проще то?
1. Используя конструктор запросов, кидаем table1 и table2 в него
2. перетаскиванием соединяем ID двух таблиц
3. накидываем необходимые поля для вывода
4. если необходимо, то устанавливаем порядок сортировки и, возможно, ограничений на выборку
5. сохраняем
6. в Excel импортируем данные запроса

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:40 21-11-2011
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Говорю ж, table1 то нет.

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 10:41 21-11-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aidomars
Извиняюсь, но при ответе не было приведённого Вами кода. Но, подчинённая форма откуда-то берёт данные эту таблицу или запрос и добавляем

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:47 21-11-2011
aidomars



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Берет из других двух таблиц и формированием Form.RecordSource и Form.Filter (с помощью полей со списком на форме). Так что если только подставить эти самые RecordSource и Filter в запрос, что я точно не соображу как. А ведь еще подтянуть данные из table2 нужно.
Пока все-таки делаю циклом и присваиваю в массив, а его потом в книгу запихну. Хотя с запросом возможно быстрее бы было.

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 10:54 21-11-2011 | Исправлено: aidomars, 10:57 21-11-2011
Yado

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
никто на мой вопрос выше не может ответить?

Всего записей: 8 | Зарегистр. 29-01-2009 | Отправлено: 11:14 21-11-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yado
я еще только учусь) - по- моему, так просто символами здесь не обойдешься ибо скармливая sql строчку с фильтром сложновато его заставить не обращать внимания на порядок слов... надо делать функцию по разбору текста условия и обратной сборке фильтра для sql со словами OR (смотри дисклеймер в начале)...
 
Добавлено:
aidomars
если мне ничто не изменяет, в конструкторе формы можно зайти в свойство рекордсорса, открыть конструктор запроса, перевести его в sql-вид, скопировать код, создать новый запрос и засандалить код туда.

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 11:25 21-11-2011
aidomars



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

Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 12:38 21-11-2011
Открыть новую тему     Написать ответ в эту тему

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