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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема вот в чём: как можно прочитать выше, запросы основаны на создании уникальных таблиц - т.е. при выборке по таб № создаётся таблица "по таб№", при выборке по дате создаётся таблица "по дате" и т.д., потом таблица превращается в подчин-ю форму, которая уже отображается в основной форме(всё это конечно сделано автоматически). Но при таком раскладе пользователь может делать отбор или по одному или по другому параметру.
 
если же сделать, чтобы запрос был и по тому и по другому - т.е. вначале выполнялся отбор по таб№ с созданием таблицы, а потом(если пользователь захочет) запрос на изменение этой таблицы(отбор по дате), то исчезнет возможность отбора в произвольном порядке (сначала например по дате, а потом по таб№), т.к. в запросе по дате будет написано изменение созданной таблицы, но если перед эти невыполнить отбор по таб№, то таблица не будет создана и изменять будет нечего.  Это можно осуществить только при одном условии: что пользователь будет делать выборку либо только по таб№, либо если нужны дополнительные параметры выборки(по дате, по цеху и т.д.), то выборка по этим параметрам будет проходить только ПОСЛЕ выборки по таб№.
Обход этого ограничения - это написание кода на кнопку выборки, который проверял бы, создана уже таблица или нет. Если создана - то изменял бы её в соотв-ии с заданными параметрами, если не создана, то создавал бы её в соотв-ии с заданными параметрами. Как написать код который определяет существует таблица или нет?  
 
Была ещё мысль сделать схему без применения цепочки "запрос-созданная временная таблица на основе отбора-преобразование таблицы в подчинённую форму-вставка подчинённой формы в основную" на основе макросов с использованием "Применить фильтр",(как Телефоны клиентов в Борее), но такая схема также не подходит, потому что исключает выбор по нескольким параметрам.
 
2 вопроса:
1)Как написать код который определяет существует таблица или нет?  
 
2)как написать, что если значение в поле формы(для запроса) не введено(пустое), то не учитывать его(или подставлять все значения)
пример:
 
Форма1!Поле1(таб№):введён
Форма1!Поле2(№кассы):не введён
 
Запрос:
SELECT [База Буфет].[Номер кассы], [База Буфет].[Табельный номер]
FROM [База Буфет]
WHERE ((([База Буфет].[Табельный номер])=[Forms]![Форма1]![Поле1])) AND ((([База Буфет].[Номер кассы])=[Forms]![Форма1]![Поле2])) ;
 
Что красным - не учитывается если поле2 пусто (или берутся все без исключения значения этого поля)
Что-то типа IF [Поле2]=empty then [Поле2]=all или IF [Поле2]=null then [Поле2]=all
Как это верно написать?

Всего записей: 14 | Зарегистр. 05-05-2008 | Отправлено: 14:23 17-05-2008 | Исправлено: Meysoncup, 17:22 17-05-2008
Meysoncup

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё, почти сделал. Реализовал на Like "*" & [Forms]![Форма1]![Таб№] - если пустое значение - не учитывает(выбирает все), если что-то введено, то учитывает.
 
Один вопрос - как реализовать это с датой? Точнее с конструкцией Between?
 В условие отбора запроса ввожу:
 

Код:
Like (([База].[Дата]) Between [Forms]![Форма1]![Поле24] And [Forms]![Форма1]![Поле29]) & "*"

Однако, не работает! Если ничего не введено, то как положено отбирает по всем датам, а если ввожу, например с 9.01.2007 по 10.01.2007 то отбирает 07.02.2007!!! Почему так и как исправить? Может что-то с Форматом полей напутал, хотя вроде и в форме и в исходной базе стоит Краткий формат даты. Какие ещё могут быть причины и как исправить?
 
Помогите, пожалуйста!!!

Всего записей: 14 | Зарегистр. 05-05-2008 | Отправлено: 10:58 18-05-2008 | Исправлено: Meysoncup, 12:21 18-05-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Meysoncup
При работе с датами иногда помогает функция преобразования строки в дату: CDate()

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

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 10:36 19-05-2008
SLACR



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!  
 
Нужна помощь с работой по Access.  
 
Существует 5 разных таблиц, одна из них главная, есть две, которые имеют  
в "подчинении" по одной таблице.  
 
Задача (как я это вижу):  
 
нужно сделать форму из которой можно не только просматривать полные данные,  
но и заполнять все таблицы сразу. Препод сказал, что так не делается, лепи мол,  
для каждой таблицы свою форму заполнения... Мне эта идея не по нутру.  
Громоздко. Неудобно.  
 
Идея в проект заложена такая:  
-маленький компьютерный магазин
-во время покупки заполнить следущие данные:  
 
Имя
Фамилия
Номера телефонов
Адрес (причем города это комбобокс, а остальной адрес - текст)
Тип купленной запчасти (комбо)
Полное описание/название и параметры купленной запчасти - текст
Время покупки (Now())
 
Проблема, как я уже писал, возникла с заполнение всех полей как одной записи.  
Очень нужно. Подскажите пожалуйста.
 
(добавленно)  
отношения между таблицами:  

Всего записей: 3 | Зарегистр. 29-05-2008 | Отправлено: 19:02 29-05-2008 | Исправлено: SLACR, 19:39 29-05-2008
dneprcomp



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

Цитата:
Проблема, как я уже писал, возникла с заполнение всех полей как одной записи.

Так ведь это не проблема. Это твоя задача. А вот в чем имено проблема?  
В целом, такое сделать можно. Причем существует несколько разных путей. Простейшийб, на мой взгляд, это работать напрямую с SQL в коде. На событие кнопки последовательно добавляешь в / редактируешь тейблы. Главное, не забывать об очередности добавок в таблицы. Сначала добавляем в главную. Затем в связаную. А то Referential integrity не даст добавить. Не забываем так же о проверках на существующие записи перед внесение записи.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:36 30-05-2008 | Исправлено: dneprcomp, 00:38 30-05-2008
SLACR



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Во-первых - спасибо, что откликнулся.  
 
Меня поджимают сроки сдачи проекта, поэтому решил немного изменить свою  
работу:  

 
и разделить процесс ЗАПОЛНЕНИЯ и ПРОСМОТРА в целях упрощения работы  
(моей, а не воображаемого пользователя, хехе)  
 
(добавленно)  
Создаю форму NEW_PURCHASE.  
Путаница с Validation Rule устранена так:   Is Not Null And Like "*[a-z]*"  
(при вЫкл. флагах Обязательно к заполнению и Ненулевые строки)
 
Теперь ломаю голову, как совместить это с соответствующей МАСКОЙ ВВОДА:  
нужно, чтобы при вводе было разрешено вводить ПРОИЗВОЛЬНОЕ (в рамках  
типа данных) кол-во БУКВ (с бувками разобрался), и при этом первая буква  
должна становиться или быть большой.  
С маской >L<??? можно ввести не более 4х букв (в комбинации с Validation Rule).  
Как сделать >L<произвольное кол-во букв ?

Всего записей: 3 | Зарегистр. 29-05-2008 | Отправлено: 12:32 30-05-2008 | Исправлено: SLACR, 17:18 30-05-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SLACR
Базы сейчас под рукой нет посмотреть. Но что бы сделать по быстрому и что бы работало можно на потерю фокуса контрола(или на любой другой устраивающий евент) делать control.text=ucase(left(control.text,1)) & mid(control.text,2). Теперь можно обойтись без маски. Ну, может быть дополнительно проверит что первая буква L

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:08 30-05-2008
SLACR



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Извини за "ламерский" вопрос: а где это прописать? Надеюсь - в таблице?  
Вроде в свойствах поля, в таблице нет подходящих пунктов:  

Всего записей: 3 | Зарегистр. 29-05-2008 | Отправлено: 22:20 30-05-2008
dneprcomp



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

Цитата:
а где это прописать?


Цитата:
на потерю фокуса контрола(или на любой другой устраивающий евент)  


Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 02:00 31-05-2008
GunRose



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.  
Суть вопроса: мне нужно сделать динамический запрос с несколькими критериями. То есть есть несколько полей, в которых меняются данные (в моем случае пока это 2 поля, одно "тяговый класс", где выбирается тяговый класс машины, второе - диапазон мощности от такого-то до такого-то значения. Мне нужно, чтобы при нажатии на одну кнопку в подчиненной форме появлялся результат запроса. Все как бы работает... но подчиненная форма не обновляется! то есть SQL запрос обновляется, исполняется, а форма не обновляется! что делать? текст SQL-запроса такой:
 

Цитата:
Private Sub &#202;&#237;&#238;&#239;&#234;&#224;10_Click()
    Dim Query As String    'ConstructQuery
    Dim PClass, PFrom, PTo As String
    Dim SubQ() As String
    Dim dbsCurrent As Database
    Dim qryTest As QueryDef
 
    Set dbsCurrent = CurrentDb
    Set qryTest = dbsCurrent.QueryDefs("DynamicQuery")
    ReDim SubQ(0)
     
    Query = "SELECT &#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;.[&#204;&#224;&#240;&#234;&#224; &#242;&#240;&#224;&#234;&#242;&#238;&#240;&#224;], &#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;.[&#210;&#255;&#227;&#238;&#226;&#251;&#233; &#234;&#235;&#224;&#241;&#241;], &#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;.[&#204;&#238;&#249;&#237;&#238;&#241;&#242;&#252;, &#234;&#194;&#242;] FROM [&#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;] WHERE "
     
   ' &#234;&#224;&#234; &#225;&#251; &#241;&#228;&#229;&#235;&#224;&#242;&#252; &#242;&#224;&#234;, &#247;&#242;&#238;&#225;&#251; &#236;&#238;&#230;&#237;&#238; &#225;&#251;&#235;&#238; &#247;&#232;&#242;&#224;&#242;&#252; &#242;&#229;&#234;&#241;&#242; &#232;&#231; &#237;&#229;&#241;&#244;&#238;&#234;&#243;&#241;&#240;&#238;&#226;&#224;&#237;&#237;&#238;&#227;&#238; &#234;&#238;&#237;&#242;&#240;&#238;&#235;&#224;?
    &#207;&#238;&#235;&#229;&#209;&#238;&#209;&#239;&#232;&#241;&#234;&#238;&#236;2.SetFocus
    PClass = &#207;&#238;&#235;&#229;&#209;&#238;&#209;&#239;&#232;&#241;&#234;&#238;&#236;2.Text
     
    If PClass <> "" Then
        ReDim Preserve SubQ(UBound(SubQ) + 1)
        SubQ(UBound(SubQ) - 1) = "[&#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;].[&#210;&#255;&#227;&#238;&#226;&#251;&#233; &#234;&#235;&#224;&#241;&#241;]=" + PClass
    End If
     
    &#207;&#238;&#235;&#229;6.SetFocus
    PFrom = &#207;&#238;&#235;&#229;6.Text
     
    If PFrom <> "" Then
        ReDim Preserve SubQ(UBound(SubQ) + 1)
        SubQ(UBound(SubQ) - 1) = "[&#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;].[&#204;&#238;&#249;&#237;&#238;&#241;&#242;&#252;, &#234;&#194;&#242;]>" + PFrom
    End If
     
    &#207;&#238;&#235;&#229;8.SetFocus
    PTo = &#207;&#238;&#235;&#229;8.Text
     
    If PTo <> "" Then
        ReDim Preserve SubQ(UBound(SubQ) + 1)
        SubQ(UBound(SubQ) - 1) = "[&#195;&#243;&#241;&#229;&#237;&#232;&#246;&#251;].[&#204;&#238;&#249;&#237;&#238;&#241;&#242;&#252;, &#234;&#194;&#242;]<" + PTo
    End If
     
    For i = 0 To UBound(SubQ) - 1
        Query = Query + SubQ(i) + " AND "
    Next
     
    '&#238;&#242;&#240;&#229;&#230;&#229;&#236; &#235;&#232;&#248;&#237;&#232;&#233; AND
    Query = Mid$(Query, 1, Len(Query) - 5)
     
    'MsgBox (Query)
     
    qryTest.SQL = Query
     
    &#194;&#237;&#229;&#228;&#240;&#229;&#237;&#237;&#251;&#233;4.Requery
End Sub
 

 
 Извиняюсь за корявые русские названия, сейчас не могу исправить. Но если нужно будет я исправлю.

Всего записей: 6 | Зарегистр. 30-05-2008 | Отправлено: 19:10 31-05-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GunRose
Как данные попадают в форму и в каких контролах на форме отображаются? Попробуй добавить в конце sub
Код:
имя формы.Refresh

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 19:47 31-05-2008
GunRose



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
В одном поле данные выбираются из списка, который берет значения из таблицы (SELECT DISTINCT Тяговый класс FROM Гусеницы). А вот значения мощности вводятся непосредственно в форму. То есть присутствует на форме 2 поля, в одно вводится нижняя граница отбора, а во второе верхняя граница.  
Запрос в принципе работает, все отбирает как надо, но данные в подчиненной форме показываются только тогда, когда войдешь в режим конструктора, а затем выйдешь. При  выполнении же SQL запроса форма не обновляется(
 
Насчет
Цитата:
имя формы.Refresh
А разве в Access2003 есть комада Refresh? Я там только Requery нашел...  Но Рефреш не работает, пишет "Compile Error. Method or data member not found"  
А Requery в одной форме у меня работает (там при проставлении галочки в подчиненной форме сразу показывается то, что отбирается), а в этом запросе почему-то не хочет. В чем может быть проблема? Причем Access проглатывает ПодчиненнаяФорма.Requery , но не обновляет!
 

Всего записей: 6 | Зарегистр. 30-05-2008 | Отправлено: 21:21 31-05-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GunRose
Без базы можно только гадать. Если не большая база, то заархивируй, смени расширение на txt(а то у меня может атачмент не пропустить) и вышли на профильное мыло. Постарайся не выслать 10 mb

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:43 31-05-2008
OOD

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

Всего записей: 3378 | Зарегистр. 20-05-2006 | Отправлено: 09:13 01-06-2008
wes



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Создать файл, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору желают слушать студенты. Каждая запись содержит поля: фамилия студента, номер группы, наименование дисциплин, средний балл успеваемости. Количество записей произвольное.
 
Написать программу, выводящую на экран следующую информацию:
 
- список студентов, желающих послушать дисциплину Х:
 
- с сортировкой по среднему баллу успеваемости.
 
 
Помогите ГОРЮ!!!!
 
Добавлено:
Создать файл, содержащий сведнья о количестве изделий, собраных сборщиком цеха за неделю. Каждая запись содержит поля: Фамилия сбощика, количество изделий собранных их ежедневно в течении шестидневной недели, т.е. раздельно понидельник, вторник и т.д.  
Написать запрос, выдающий следующую информацию: фамилия сборщика и кол-во деталей, собранное им за неделю; фамилию сбощика, собравшего наибольшее число изделий, и день, когда он достиг наивысшей производительности труда.
 
Хоть подскажите как сделать запрос?

Всего записей: 2 | Зарегистр. 07-11-2006 | Отправлено: 11:47 01-06-2008
GunRose



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Спасибо большое за помощь! теперь все работает.  А что значит Me в строке
Код:
Me!внедренный4.Form.RecordSource = Query
?
 
и еще такой вопрос: можно ли форму из одной базы перетащить в другую, чтобы не делать ее заново? Я особо еще не заморачивался, но с первого раза перенести форму из одной базы в другую не получилось, Access чистит буфер при выходе.

Всего записей: 6 | Зарегистр. 30-05-2008 | Отправлено: 13:04 02-06-2008
Vitus_Bering



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

Цитата:
можно ли форму из одной базы перетащить в другую, чтобы не делать ее заново

Можно, открой две базы на вкладке формы и перетащи (drag & drop).

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 13:57 02-06-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GunRose
Me - сылка на активную форму. Я там еще изменил формирование строки SELECT. Была ошибка. Теперь можно выбирать любую комбинацию параметров. Или воoбще без параметров.
Для копирования из базы в базу используй menu File-Export

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:24 02-06-2008 | Исправлено: dneprcomp, 20:27 02-06-2008
GunRose



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
Точняк, спс) тока я несколько разочаровался в этом способе создания новой формы... наверно все же легче заново сделать ее из какого-нибудь запроса и отформатировать подобным образом)
 
dneprcomp
Да, я обратил внимание, здорово! Я это использую и в другой базе, очень нужная вещь.  
Кстати, тут еще один вопрос появился: можно ли в отчете сделать так, чтобы печатался графический файл jpg, содержащийся в OLE поле? А то, как вы наверно заметили, они и в форме у меня отображаются только в виде значка. Но в форме это ладно, там у меня есть идея, как показать есть ли к данной машине чертеж или нет. А вот в отчете хотелось бы все же видеть уже изображение. Как это сделать?

Всего записей: 6 | Зарегистр. 30-05-2008 | Отправлено: 08:21 04-06-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GunRose
Восстанавливаешь файл из OLE поля на хард. Затем в проперти контрола указываешь на этот файл

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 01:01 05-06-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