Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Access VBA

Автор: agro
Дата сообщения: 04.12.2008 08:02
dneprcomp
спасибо за ответ но
выдаёт ошибку: method or data member not found
по справке №461

ладна будем дальше искать
Автор: dneprcomp
Дата сообщения: 04.12.2008 19:14
agro
Покажи строку на которой выдается ошибка.

Anton T
все-таки должен быть IF, но в виде
Код: If Instr(lst[No Controla].Text, "*")=0 Then
lst[No Controla].Text = lst[No Controla].Text & "*"
End If
Автор: zolivan
Дата сообщения: 09.12.2008 12:16
Помогите, если кто знает. Как можно получить количество листов книги 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 Хотя получить количество и имена листов было бы предпочтительнее, с точки зрения решения задачи в общем случае.
Спасибо.
Автор: Anton T
Дата сообщения: 09.12.2008 20:44
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
Автор: dneprcomp
Дата сообщения: 09.12.2008 21:53
Anton T
Что в strSql и strSql1 ?
strFiltr содержит WHERE, что обычно является последней часть SQL request
Т.ч. если strSql1 не сдержит GROUP BY или ORDER BY, то строка
Код: RecordSource = strSql & strFiltr & " " & strSql1 & ";"
Автор: Anton T
Дата сообщения: 10.12.2008 11:53
dneprcomp

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

Код: Private Sub Form_Open(Cancel As Integer)
Form.Caption = "Картотека"
Set idField = Me.Поле1
strSql = "SELECT КлиентЗапрос.* FROM КлиентЗапрос"
strSql1 = " ORDER BY КлиентЗапрос.Ф"
End Sub
Автор: RenNeoN
Дата сообщения: 20.12.2008 22:13
Здравтвуйте!
Я не знаю как в Аксесе организовать выборку определенных адресов по принадлежащим им ряде цифр, например есть ряд цифр: 0014610475710456, я выбираю (в моем случае по Классификатору адресов России) Ярославскую облать... из поля ряда цифр считываюся первые 3 слева ( 001) и выводится список только тех адресов у которых присутсвует в своем ряде цифр ( 001), следовательно они из ярославской области, и так далее до дома...

Подробнее о КЛАДРе можно узнать тут:
http://www.gnivc.ru/Document.aspx?id=80

Заранее спасибо
Автор: dneprcomp
Дата сообщения: 20.12.2008 22:46
RenNeoN
Select * from [table name] where КЛАДР like '001%'
Select * from [table name] where КЛАДР like '00146104%'
Автор: RenNeoN
Дата сообщения: 21.12.2008 11:04
dneprcomp

Пожалуйста напишите подробнее где это делать и как.... я в Аксесе чайник...
Автор: mafiozy3
Дата сообщения: 10.01.2009 18:15
Привет! Есть поле в котором содержаться даты рождения для каждого человека, в формате дд.мм.год, создал поле возраст, и необходимо чтобы для каждого человека в этом поле отображался возраст. Какой формулой и какими функциями по дате рождения можно определить возраст? (MS Access)
Автор: masterSV
Дата сообщения: 10.01.2009 20:39
привет всем!! Ребята помагите пожалуста с БД, очень надо сдать к понедельнику для допуска к экзамену!



Я создал сами таблицы и выполнил пункт номер 1.
С остальными пунктами ни чего не получилось, делаю работу уже целый месяц, а мимо экзамена ни хочу пролететь только из за одной не сданой работы, ну думаю вы меня понимаете.. не хватает опыта работы с БД..

вот мои наработки:
Ссылка
Автор: masterSV
Дата сообщения: 11.01.2009 17:26
аааа люди!! сессия жмёт!!! сдесь работы на 15 минут! помагите!!
Автор: MrZeRo
Дата сообщения: 12.01.2009 16:23
mafiozy3

Цитата:

SELECT DateDiff("yyyy", T1.bd, Now())
FROM T1

дает возраст на текущий момент. Заменив Now(), можно получить возраст на нужную дату.
Автор: masterSV
Дата сообщения: 12.01.2009 20:59
фсё сделал. ни кто мне не помог, отплачу тем же.
Автор: nygmat
Дата сообщения: 23.01.2009 11:04
Привет! Как из поля 000000,00 отделить только дробную часть и показать ее в отдельном поле. На Дельфи ответ нашел, а вот в Access?
Автор: taravasya
Дата сообщения: 24.01.2009 15:41
Привет! Не подскажет ли кто сведущий.
Ситуация такая:
Есть таблицы "Сотрудники" и "Смены" В смене участвует два сотрудника. Для этого в таблице "Смены", выделено два поля в каждом из которых вываливающийся список с именами из таблицы "Сотрудники".
В итоге связь между таблицами создалась, но Access, отабражает связанные записи только в том случае если в смене оба раза указан один и тот же сотрудник. Возможно ли создание корректной связи без дополнительных запросов?
Автор: dneprcomp
Дата сообщения: 24.01.2009 20:01
taravasya
Как связи создавались? Визардом? Там, похоже, использован AND вместо OR
А вот где именно эти проперти, что исправлять надо не подскажу. Просто не понимаю описания. В таблице списки обычно не создаются. Скоре всего в проперти списка.
Автор: Len4ik1987
Дата сообщения: 31.01.2009 12:26
Ребята, помогите!
Угораздило же меня получить такую задачку %)

Есть папка с несколькими сотнями .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.

Подскажите код плз!!! ))
Автор: Len4ik1987
Дата сообщения: 31.01.2009 22:52
Что вам сказать... Уже кое-то есть:


Цитата:

Sub test()
Dim rstCurr As DAO.Recordset
Dim dbsCurr As Database
Dim MyPath As String
Dim MyFile As String
Dim ShortFile As String
MyPath = "C:\Marchello\"
Set dbsCurr = Access.CurrentDb
Set rstCurr = dbsCurr.OpenRecordset("Table1", dbOpenDynaset)
MyFile = Dir(MyPath)
Do While MyFile <> ""
rstCurr.AddNew
rstCurr.Fields("1").Value = Time$
rstCurr.Fields("2").Value = Date$
rstCurr.Fields("3").Value = MyPath
rstCurr.Fields("4").Value = MyFile
rstCurr.Update
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97,
MyFile, MyPath & MyFile
MyFile = Dir
Loop


И вот что еще нужно.

Проходим каждую строчку таблиц Access с именами r* .
Структура данных таблиц (работаем только со столбиком "F2") :

создание

изменение

удаление

По крайней мере один из блоков должен быть непустым (или каждый), например:

таблица "r071203_xls"

создание
9129001

изменение
6026008

удаление

Потребность следующая. Построчно анализируем каждую таблицу "r*", находим семизначные цифровые коды в каждом блоке и создаем новую таблицу:

поле1: название таблицы "r*"
поле2: 7-значный числовой код
поле3: создание, изменение или удаление

Подскажите плз!

Автор: Freebornman
Дата сообщения: 03.02.2009 04:16
добрый день.
срочно нужна помощь в VB или другой способ решения.
задача такая: на главной форме MS Access вводятся числа. в зависимости от значения числа (после проверки нажатием кнопки Command), должна открыться та или иная второстепенная форма (а главная закрыться).
всем заранее спасибо.
Автор: SantaMoroz
Дата сообщения: 11.02.2009 15:31
Private Sub cmdProverka_click()

Select Case Me.[поле для ввода числа]
Case 1 ' одно из значений которые должны вводиться в поле для проверки( необязательно 1)
DoCmd.Close "Main_form" ' закрыть главную форму
DoCmd.OpenForm "[поле для ввода числа]" ' или той что соответствует этому числу
Case 2
аналлогично предыдущему
Case 3
........
End Select
End Sub



откроются только те формы, которые вы пропишите в блоках Case, остальные значения при вводе в поле для проверки проигнорируются
Автор: Vasiahl
Дата сообщения: 14.02.2009 11:09
Доброго времени суток. Есть такой вопрос: есть база данных по приему больных по датам. формируется отчет, в котором дата начала периода и дата конца периода запрашивается и вводится с клавиатуры. Каким образом сделать так, чтоб эта дата пропечатывалась в заголовке отчета? (Например с 1.02 по 10.03). Заранее благодарен за ответ
Автор: SantaMoroz
Дата сообщения: 18.02.2009 22:32
Подскажите, если кто знает:
есть БД на ACCESS 2007 (два файла 1-оболочка, 2-таблицы)
Сеть одноранговая, таблицы находятся на "главной машине" на сетевом диске "Z" операционка ХР Pro, две учетки Admin, и User (права соответственно).
На остальных машинах стоит оболочка базы, которая залинкована на папку Z с правами USER к таблицам.

Вопрос: как запустить файл БАЗА.accde с правами Admin главной машины? но так чтобы у себя в системе пользователи не могли скопировать файл с таблицы из шары (т.е. были с правами USER) ???
Автор: fauct
Дата сообщения: 19.02.2009 15:42
Подскажите, если кто знает. Есть основная таблица, в которой ключевой столб "Дата". Есть несложный запрос, по которому построен отчет. В этом отчете производятся вывод данных, который сотрируется по дате, никаких расчетов в нем не ведеться кроме running sum. Вопрос в том, как сделать так чтобы в конце года выщитывались показатели (сумма) всех строк. Так сказать итог всех столбцов за год.
Автор: ametjan
Дата сообщения: 21.02.2009 20:25
Вопрос такого плана

Как сделать следующее

форма - в форме есть список - 2 значения
и поле для ввода данных - если выбрано 1 значение то данные вводятся в 1 таблица а если 2 значение то данные вводятся в другую.
Автор: TOLSTUXA
Дата сообщения: 25.02.2009 12:25
Подскажите, пожалуйста, каким образом работать с календарями?
Хотя бы передать в поле выбранную в календаре дату.
Автор: Vitus_Bering
Дата сообщения: 25.02.2009 13:53
TOLSTUXA
См. здесь.
Автор: TOLSTUXA
Дата сообщения: 25.02.2009 14:02
Спасибо, но этот мануал есть везде в инете, но по нему никак не получается сделать.
В частности, п.13

При выборе даты в календаре должно меняться значение поля "Дата". Поэтому нужно написать процедуру обработки события ПослеОбновления (AfterUpdate) элемента управления Календарь. Как и предыдущая, эта процедура состоит из одного оператора. Однако в ней показано, что для ссылки на значение элемента Календарь необязательно используется свойство value.

Private Sub Календарь_АfterUpdate() 'обновление поля "Дата"

txtDate = Format(Календарь.Object.Value, "dd/mm/yy")

End Sub
Автор: Vitus_Bering
Дата сообщения: 25.02.2009 15:25
TOLSTUXA
У меня работает такая конструкция

Код:
Private Sub Calendar_Click()
Forms!frmBase!Data = Calendar.Value
End Sub
Автор: TOLSTUXA
Дата сообщения: 25.02.2009 16:00
Vitus_Bering, есть контакт! спасибо большое!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: BDE - траблы, помогите пожалуйста срочно...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.