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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skif21
интересует алгоритм или запрос? дайте структуру - верну запрос
З.Ы. на будущее - в личку

Всего записей: 177 | Зарегистр. 06-02-2008 | Отправлено: 10:15 24-01-2011
skif21

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vofkanov посмотрите пожалуйста пример:
 
Таблица OPL, в ней поля - L_SCHET (лицевой счет), OPLDAT (дата платежа), OPLSUM (сумма платежа).
Задача - по столбцу OPLDAT оставить поля с самой новой датой, а остальные поля удалить. Ключа в таблице нету
В SQL не особо шарю, потому прошу помощи профессионалов.

Всего записей: 174 | Зарегистр. 03-09-2006 | Отправлено: 10:19 24-01-2011
vofkanov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
petrosyanserg
я бы предложил другую схему хранения данных
тут
 
Добавлено:
skif21
попробуйте вот так типа идентификатор
delete from opl as t where t.l_schet&t.opldat&t.oplsum in  
(select t1.l_schet&t1.opldat&t1.oplsum from opl as t1 where t1.opldat<(select max(t2.opldat) from opl as t2 where t2.l_schet=t1.l_schet))

Всего записей: 177 | Зарегистр. 06-02-2008 | Отправлено: 10:32 24-01-2011
skif21

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за помощь ребята - все получилось!
 
Добавлено:
Мастера по Access.. Подскажите пожалуйста пример (или готовый алгоритм - может есть у кого) по поиску данных введных в текстовое поле.  
Есть форма.. в ней текстовое поле txtPoisk, на форме также поля с "Лицевой счет", "Фамилия" и так далее..
Хотелось бы введя данные в поле txtPoisk автоматом (или при нажатии на кнопку - не суть важно) данные  находились в базе и заполнялись в поля на форме.

Всего записей: 174 | Зарегистр. 03-09-2006 | Отправлено: 16:18 25-01-2011
vofkanov



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

Всего записей: 177 | Зарегистр. 06-02-2008 | Отправлено: 09:19 26-01-2011
skif21

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот такой код поисковика - если вдруг кому нибудь надо:
 
Private Sub txtPoisk_Change()
     
    Dim rst As DAO.Recordset, intI As Integer
 
    Set rst = Form.Recordset
    rst.FindFirst "[LS] like '" & txtPoisk.Text & "*'"
    Debug.Print rst.NoMatch
    txtPoisk.SelStart = Len(txtPoisk.Text)
     
End Sub
 
Единственная заморочка - что если лицевой счет имеет номер "1" - то он почему то не находится. Вместо него находится "1111". Вполне возможно что лицевой счет "1" лучше пронумеровать как "0001".

Всего записей: 174 | Зарегистр. 03-09-2006 | Отправлено: 10:32 26-01-2011
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skif21
В данной ситуации применять LIKE и * я бы не стал. Запрос вернет все подходящие под маску рекорды: 1, 11, 111 , 189 и т.п.
Данными какого из рекордов заполнятся поля формы? Где гарантия, что первым из найденных окажется именно тот, что запрашивали?
Лучше использовать безусловное подобие:
rst.FindFirst "[LS] = '" & txtPoisk.Text & "'"  
Если по синтаксису не проходит, то можно и LIKE, но без *
rst.FindFirst "[LS] like '" & txtPoisk.Text & "'"  
 

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:33 27-01-2011
skif21

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да - так действительно лучше работает код.

Всего записей: 174 | Зарегистр. 03-09-2006 | Отправлено: 09:16 27-01-2011
skif21

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята - добрый день! Подскажите пожалуйста выход. На форме №1 есть подчиненная Форма №2 в которую вводятся данные. Введенные данные при нажатии на кнопку "Добавить запись" записываются в подчиненную табличную форму №3. Соержимое этой таблицы видно на Форме №1. Но только данные в подчиненную табличную форму №3 не обновляются сами. Пока не нажмешь на панели инструментов кнопку "Обновить". Кнопка "Добавить запись" работает через встроенный макрос, созданный при создании кнопки мастером. Пытаюсь дополнить макрос следующими условиями: Макрокоманда - "ОбновитьОбъект", аргументы: тип объекта -  форма, имя объекта - имя табличной формы (назвал ее "subFormsPokaz").
 Можно ли это как то поправить?

Всего записей: 174 | Зарегистр. 03-09-2006 | Отправлено: 16:38 27-01-2011
Yado

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
помогите построить простой поиск по базе. Сейчас такой поиск, который выводит на экран все подходящие значения с вводом каждого символа в строку поиска. Красиво, но проблема! База около 50 000 записей. Работает такой поиск очень медлено.
Требуется: ввел в строку поиска строку, нажал enter, вышло на экран что нашлось.
 
Текущ. поиск
Private Sub Поле0_Change()
    Dim strActiveControlName As String
    Dim strSQL As String
    Dim strWhere As String
     
    strActiveControlName = Screen.ActiveControl.Name
    strWhere = "WHERE True "
         
    If strActiveControlName = "Поиск0" Then
        If Len(Me!Поиск0.Text & "") > 0 Then
            strWhere = strWhere & "And Запрос2.Goods Like '" & Me!Поле0.Text & "*' "
        End If
    Else
        If Len(Me!Text0.Value & "") > 0 Then
            strWhere = strWhere & "And Запрос2.Goods Like '" & Me!Поле0.Value & "*' "
        End If
    End If
 
     
    strSQL = "SELECT Запрос2.Suppl, Запрос2.Cod, Запрос2.Goods, Запрос2.Price FROM Запрос2 " & strWhere & ";"
    Me!List2.RowSource = strSQL
End Sub
 
 
Заранее спасибо!  

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yado
Перенеси весь код в событие Поле0_KeyUp  
Добавь в конец кода вместо строки Me!List2.RowSource = strSQL  

Код:
If KeyCode = vbKeyReturn Then
      Me!List2.RowSource = strSQL  
End Sub

 
 

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 17:49 03-02-2011
Yado

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделал но как то странно работает при третьем нажатии enter
 
Private Sub Поле0_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim strSQL As String
    Dim strWhere As String
     strWhere = "WHERE True "
         
     
        If Len(Me!Поле0.Value & "") > 0 Then
            strWhere = strWhere & "And Запрос2.Goods Like '" & Me!Поле0.Value & "*' "
        End If
           
    strSQL = "SELECT Запрос2.Suppl, Запрос2.Cod, Запрос2.Goods, Запрос2.Price FROM Запрос2 " & strWhere & ";"
    If KeyCode = vbKeyReturn Then
    Me!List2.RowSource = strSQL
    End If
End Sub
 
что не так...сам плох в аксессе

Всего записей: 8 | Зарегистр. 29-01-2009 | Отправлено: 21:04 03-02-2011 | Исправлено: Yado, 21:57 03-02-2011
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yado
Каким образом был создан Поле0_Change и кто добавил код в ивент?
Точно так же созается ивент для Поле0_KeyUp
 
Смотрим properties для текстбокса и отмечаем KeyUp
Весь код переносится с Change в KeyUp  
В Change не долно быть никакого кода вообще
Заменяется одна строка

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:23 03-02-2011 | Исправлено: dneprcomp, 22:25 03-02-2011
Yado

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

Всего записей: 8 | Зарегистр. 29-01-2009 | Отправлено: 12:07 04-02-2011 | Исправлено: Yado, 12:32 04-02-2011
dneprcomp



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

Цитата:
надо нажать 2 раза enter? чтобы осуществился поиск

Возможно, что vbKeyReturn добавляется в strSQL и влияет на выполнение кода.
Что бы полностью исключить всякое лишнее я бы просто поставил на форму button и на ее клик ивент перенес весь код так как он был на Change. Без блока IF
Код:
    Dim strActiveControlName As String  
    Dim strSQL As String  
    Dim strWhere As String  
     
    strActiveControlName = Screen.ActiveControl.Name  
    strWhere = "WHERE True "  
         
    If strActiveControlName = "Поиск0" Then  
        If Len(Me!Поиск0.Text & "") > 0 Then  
            strWhere = strWhere & "And Запрос2.Goods Like '" & Me!Поле0.Text & "*' "  
        End If  
    Else  
        If Len(Me!Text0.Value & "") > 0 Then  
            strWhere = strWhere & "And Запрос2.Goods Like '" & Me!Поле0.Value & "*' "  
        End If  
    End If  
   
     
    strSQL = "SELECT Запрос2.Suppl, Запрос2.Cod, Запрос2.Goods, Запрос2.Price FROM Запрос2 " & strWhere & ";"  
    Me!List2.RowSource = strSQL

На ивентах Change и KeyUp кода быть не должно вообще.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:20 04-02-2011
ifs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
При импорте из тектового файла нужно текст  20110210 в Access видеть как дату 10.02.2011
Может подскажте?
 
Добавлено:
Вообще-то я, видимо, начал не с того.
Опишу задачу.
Есть участники форума, пишущие сообщения. Надо вести статистику кто, когда, сколько запостил. Присутствие участника ограничено временными рамками (с 01.01.2011 по 30.06.2011, например). Его можно продлевать.
Данные с сайта можно получить один раз в сутки в виде текстового файла в таком виде (построчно):
 
Ник1,20110101,20110228,888
Ник2,20110110,20110309,50
Ник3,20010201,20110331,25
.
.
.
И т.д.
 
Это было вчера. Завтра может быть
 
Ник1,20110101,20110228,898
Ник2,20110110,20110309,50
Ник3,20010201,20110331,27
.
.
.
И т.д.  
 
Т.е., Ник1 сделал 10 сообщений, Ник2 прогулял, Ник3 - 2 сообщения. И т.д.
 
Может кто знает что-то похожее? Чтобы покопаться.
Или куда в другую сторону направит.
Спасибо.

Всего записей: 111 | Зарегистр. 14-10-2004 | Отправлено: 10:58 10-02-2011
Vitus_Bering



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

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 12:39 10-02-2011
albelous



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте все!
Пытался обновить записи поля "1" таблицы RS2009 значениями из поля "1" таблицы Importer при совпадении связанного ключвого поля "Time", для чего соорудил с помощью мастера Access следующее:
UPDATE RB2009, Importer SET RB2009.1 = Importer.1, RB2009.2 = Importer.2 WHERE RB2009.Time=Importer.Time
Однако, Access выдаёт ошибку: Недопустимое использование '.', '!' или '()'. В выражении запроса 'Importer'. '.
 
Что поправить, чтобы заработало?
Спасибо.
 
UPD: Решено. RTFM. Time - зарезервированное слово, ссылку на поле Time нужно убрать в квадратные скобки.

Всего записей: 5 | Зарегистр. 06-09-2006 | Отправлено: 13:48 16-02-2011 | Исправлено: albelous, 16:02 16-02-2011
vofkanov



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

Всего записей: 177 | Зарегистр. 06-02-2008 | Отправлено: 16:03 16-02-2011 | Исправлено: vofkanov, 16:03 16-02-2011
gilmOFF

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!!! помогите пожалуйста, есть база в access, есть фирмы и указана дата регистрации и дата банкротства!!!! как сделать выборку по дате, чтобы задавать период и по данному запросу выводились все фирмы которые прошли регистрацию?????

Всего записей: 4 | Зарегистр. 27-02-2011 | Отправлено: 21:45 27-02-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