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

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

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

Цитата:
Docmd.RunSQL TxtSQL, acViewNormal

 
Вот:
   
 
Если что, могу выложить пример, вот h**p://rapidshare.com/files/169748841/db2.rar.html

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 09:48 03-12-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Anton T
С твоей формой не разбирался. Она у меня просто не открывает код, т.к. все русские названия и обращения читаются кракозябрами. Кстати, проблема может быть и в этом.
Смотри работу Form1 и Query1
http://rapidshare.com/files/169951379/db2_2000format.rar.html
 
PS. Пожалуй, замени в sub RunRequest каждый IF вида:

Код:
    If lst1.Text = "" Then
        lst1.Text = "*"
    End If

 
на одну строку
Код:
lst[No Controla].Text = lst[No Controla].Text  & "*"

 

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:21 03-12-2008 | Исправлено: dneprcomp, 00:50 04-12-2008
agro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
спасибо за ответ но
выдаёт ошибку: method or data member not found
по справке №461
 
ладна будем дальше искать

Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 09:02 04-12-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
agro
Покажи строку на которой выдается ошибка.
 
Anton T
все-таки должен быть IF, но в виде
Код:
    If Instr(lst[No Controla].Text, "*")=0 Then
        lst[No Controla].Text = lst[No Controla].Text  & "*"
    End If

[No Controla] замени на цифру

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:14 04-12-2008 | Исправлено: dneprcomp, 22:35 09-12-2008
zolivan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, если кто знает. Как можно получить количество листов книги Excel в Access не вызывая Excel.Application (WorkSheet.Count). Дело в том, что книга не открывается в самом Экселе и попытка выполнения Excel.Application приводит к выдаче сообщения о нехватке ресурсов и остановке выполнения макроса импорта, однако сам файл замечательно открывается в Акцесе, который при использовании мастера импорта видит все листы. Получить количество листов необходимо для организации правильной работы ПрогрессБара.
Если это невозможно, тогда подскажите как можно из программы обновлять поле главной формы (пробовал и Repaint для всей формы и Requery для поля - ничего не отрабатывает), то есть ошибок нет, но и результат нулевой. В Акцесе опыта работы практически нет. За основу взял решение из Интернета, которое немного подделал под свои нужды, но вот с визуализацией процесса никак не могу справиться. Конечно хотелось бы организовать ПрогрессБар, но если нелья получить по другому количество листов Экселя, то хотя бы чтоб на форме номера импортирумых листов выводились.
Ближе к конкретике. Думаю по первому вопросу более-менее понятно рассказал. Теперь по второму: допустим на форме я объявил поле Def_List, которому в качестве значения передается результат выполнения функции (=MyList() - возвращает текущий импортируемый лист Экселевской книги). Также на форме имеется кнопка Импорт данных, при нажатии на которую мы переходим к функции импорта таблицы (объявлена в блоке Модули) внутри который крутится цикл, зависящий от количества листов (на каждом листе одинаковое количество строк и все листы имеют стандартные названия, так что проблем с определением имени листа и окончанием цикла нет).
Кусок кода по памяти.
k=0
i=1
While k=0
 MyList="Sheet " & Trim(Str(i))
 ...
 что нужно написать здесь, чтобы на форме изменилось поле Def_List ?????
 ...  
 k= Dcount(...) Mod 64999
 i=i+1
Wend
PS Хотя получить количество и имена листов было бы предпочтительнее, с точки зрения решения задачи в общем случае.
Спасибо.

Всего записей: 46 | Зарегистр. 24-10-2006 | Отправлено: 13:16 09-12-2008
Anton T

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dneprcomp
Спасибо, но не все. Нажимать на листбоксе надо открывается запрос. А на запросы редактировать надо.
 
Нужен фильтр по каждому столбцы (всего 14 полей). Ввожу фамилию "А", а потом ввожу имя "Е", а там появится фамилии "Б.....". Что можно сделать?
   
 
а вот код:

Код:
Sub fFilForm(strFiltr As String, strSql As String, strSql1 As String, frm As Form, strFieldName As String)
On Error GoTo Err_
    With frm
        If Len(strFiltr) <> 0 Or Not IsNull(strFiltr) Then
            strFiltr = " WHERE Left([" & strFieldName & "]," & Len(strFiltr) & ") = '" & strFiltr & "'"
        Else
            strFiltr = ""
        End If
        .RecordSource = strSql & strFiltr & " " & strSql1 & ";"
    End With
Exit_:
    Exit Sub
Err_:
    MsgBox Err.Description
    Err.Clear
    Resume Exit_
End Sub
 

 
А на поле фамилия:

Код:
Private Sub Поле1_Change()
    strFiltr = Me.Поле1.Text
    Set idField = Me.Поле1
    Call fFilForm(strFiltr, strSql, strSql1, Me.Subfrm.Form, "Ф")
End Sub

 
имя:

Код:
Private Sub Поле3_Change()
    strFiltr = Me.Поле3.Text
    Set idField = Me.Поле3
    Call fFilForm(strFiltr, strSql, strSql1, Me.Subfrm.Form, "И")
End Sub

 
и т.д.

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 21:44 09-12-2008 | Исправлено: Anton T, 21:45 09-12-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Anton T
Что в strSql и strSql1 ?
strFiltr содержит WHERE, что обычно является последней часть SQL request
Т.ч. если strSql1 не сдержит GROUP BY или ORDER BY, то строка
Код:
RecordSource = strSql & strFiltr & " " & strSql1 & ";"
не является правильной
Строка
Код:
strFiltr = " WHERE Left([" & strFieldName & "]," & Len(strFiltr) & ") = '" & strFiltr & "'"
выглядит бессмысленным набором знаков. Проверь чему равен strFiltr после ее исполнения.
Похоже, что должно быть
Код:
strFiltr = " WHERE '" & strFieldName & "' LIKE '" & strFiltr & "%'"  

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:53 09-12-2008 | Исправлено: dneprcomp, 22:54 09-12-2008
Anton T

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

Цитата:
Что в strSql и strSql1 ?

Код:
Private Sub Form_Open(Cancel As Integer)
    Form.Caption = "Картотека"
    Set idField = Me.Поле1
    strSql = "SELECT КлиентЗапрос.* FROM КлиентЗапрос"
    strSql1 = " ORDER BY КлиентЗапрос.Ф"
End Sub
 


Цитата:
Похоже, что должно быть

Не получилось, сделай - если сможешь, вот пример

Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 12:53 10-12-2008
RenNeoN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравтвуйте!
Я не знаю как в Аксесе организовать выборку определенных адресов по принадлежащим им ряде цифр, например есть ряд цифр: 0014610475710456, я выбираю (в моем случае по Классификатору адресов России) Ярославскую облать... из поля ряда цифр считываюся первые 3 слева ( 001) и выводится список только тех адресов у которых присутсвует в своем ряде цифр ( 001), следовательно они из ярославской области, и так далее до дома...  
 
Подробнее о КЛАДРе можно узнать тут:  
http://www.gnivc.ru/Document.aspx?id=80
 
Заранее спасибо

Всего записей: 2 | Зарегистр. 20-12-2008 | Отправлено: 23:13 20-12-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RenNeoN
Select * from [table name] where КЛАДР like '001%'
Select * from [table name] where КЛАДР like '00146104%'

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:46 20-12-2008
RenNeoN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
 
Пожалуйста напишите подробнее где это делать и как.... я в Аксесе чайник...

Всего записей: 2 | Зарегистр. 20-12-2008 | Отправлено: 12:04 21-12-2008
mafiozy3

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! Есть поле в котором содержаться даты рождения для каждого человека, в формате дд.мм.год, создал поле возраст, и необходимо чтобы для каждого человека в этом поле отображался возраст. Какой формулой и какими функциями по дате рождения можно определить возраст? (MS Access)

Всего записей: 24 | Зарегистр. 25-12-2005 | Отправлено: 19:15 10-01-2009
masterSV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
привет всем!! Ребята помагите пожалуста с БД, очень надо сдать к понедельнику для допуска к экзамену!
 
   
 
Я создал сами таблицы и выполнил пункт номер 1.
С остальными пунктами ни чего не получилось, делаю работу уже целый месяц, а мимо экзамена ни хочу пролететь только из за одной не сданой работы, ну думаю вы меня понимаете.. не хватает опыта работы с БД..  
 
вот мои наработки:
Ссылка

Всего записей: 8 | Зарегистр. 09-08-2008 | Отправлено: 21:39 10-01-2009
masterSV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
аааа люди!! сессия жмёт!!! сдесь работы на 15 минут! помагите!!




поменьше экспрессии, раз работы на 15 минут, то и делай сам. Здесь никто никому не обязан делать.

Всего записей: 8 | Зарегистр. 09-08-2008 | Отправлено: 18:26 11-01-2009 | Исправлено: ShIvADeSt, 02:50 13-01-2009
MrZeRo



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

Цитата:
 
SELECT  DateDiff("yyyy", T1.bd, Now())
FROM T1
 

дает возраст на текущий момент. Заменив Now(), можно получить возраст на нужную дату.

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

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 17:23 12-01-2009 | Исправлено: MrZeRo, 17:29 12-01-2009
masterSV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
фсё сделал. ни кто мне не помог, отплачу тем же.

Всего записей: 8 | Зарегистр. 09-08-2008 | Отправлено: 21:59 12-01-2009
nygmat

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! Как из поля 000000,00 отделить только дробную часть и показать ее в отдельном поле. На Дельфи ответ нашел, а вот в Access?

Всего записей: 33 | Зарегистр. 02-11-2005 | Отправлено: 12:04 23-01-2009
taravasya



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет! Не подскажет ли кто сведущий.  
Ситуация такая:
Есть таблицы "Сотрудники" и "Смены"  В смене участвует два сотрудника. Для этого в таблице "Смены", выделено два поля в каждом из которых вываливающийся список с именами из таблицы "Сотрудники".
В итоге связь между таблицами создалась, но Access, отабражает связанные записи только в том случае если в смене оба раза указан один и тот же сотрудник. Возможно ли создание корректной связи без дополнительных запросов?

Всего записей: 251 | Зарегистр. 16-11-2007 | Отправлено: 16:41 24-01-2009
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
taravasya
Как связи создавались? Визардом? Там, похоже, использован AND вместо OR
А вот где именно эти проперти, что исправлять надо не подскажу.  Просто не понимаю описания. В таблице списки обычно не создаются. Скоре всего в проперти списка.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:01 24-01-2009
Len4ik1987



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, помогите!  
Угораздило же меня получить такую задачку %)  
 
Есть папка с несколькими сотнями .xls файлов (файлы с другими расширениями тоже есть).  
 
1. Нужно выбрать все имена *.xls, записать их перечень в таблицу Access.  
Это уже сделано:  
 

Цитата:
 
 
Sub test()
Dim rstCurr As DAO.Recordset
   Dim dbsCurr As Database
   Dim MyPath As String
   Dim MyFile As String
   
' path
   MyPath = "C:\Len4ik\"
   
   Set dbsCurr = Access.CurrentDb
   Set rstCurr = dbsCurr.OpenRecordset("Table1", dbOpenDynaset)
   
' time
   rstCurr.AddNew
   rstCurr.Fields("1").Value = Time$
   rstCurr.Update
   
' date
   
   rstCurr.AddNew
   rstCurr.Fields("1").Value = Date$
   rstCurr.Update
   
' path
   
   rstCurr.AddNew
   rstCurr.Fields("2").Value = MyPath
   rstCurr.Update
   
' names
   
   MyFile = Dir(MyPath)
   Do While MyFile <> ""
   rstCurr.AddNew
   rstCurr.Fields("3").Value = MyFile
   rstCurr.Update
   MyFile = Dir
   Loop
   
End Sub
 
 

 
 Потом sql-запросом в другую таблицу выбираю только имена файлов *.xls  
 

Цитата:
 
SELECT DISTINCT table1.* INTO table2
FROM table1
WHERE (((table1.[3]) Like "*.xls"));
 

 
2. Нужно открыть каждый файл, имена которых указаны в таблице table2, и скопировать содержимое ячеек B2:B1000 в отдельные таблицы. Назвать таблицы в соответствии с именами файлов!  
 
 Как это сделать, а, ребятки??? ))))  
 
 
 
Добавлено:

Цитата:
Нужно открыть каждый файл, имена которых указаны в таблице table2, и скопировать содержимое ячеек B2:B1000 в отдельные таблицы. Назвать таблицы в соответствии с именами файлов!

 
 Вот прикольный код:  

Цитата:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "TableName", "C:\File.xls"

 
 Для одного файла работает, только у меня файлов больше, имена файлов указаны в поле "3" таблицы "table2", причем нужно импортировать каждый файл Excel в отдельную таблицу и назвать таблицу также, как называется имя файла Excel.
 
 Подскажите код плз!!! ))

Всего записей: 3 | Зарегистр. 31-01-2009 | Отправлено: 13:26 31-01-2009
Открыть новую тему     Написать ответ в эту тему

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