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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access

Модерирует : ShIvADeSt

ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Oyger
Можно ппробовать обратится к столбцу по номеру:
Me.YourComboBoxNameHere.Column(n)
 

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 22:37 03-02-2011
Oyger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Перед тем как задать вопрос - пробовал, но почему-то не получалось... А сейчас получилось. Странно.
Но лично для меня удобнее Recordset, т.к. используя его можно обращаться к записи по имени столбца, а не только по номеру. Пример описал в предыдущем посте.
Спасибо за помощь.

Всего записей: 122 | Зарегистр. 22-03-2007 | Отправлено: 10:35 04-02-2011
KolyaP

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая задача.
Есть файл BNKSEEK.dbf нужно получить к нему доступ. Осуществить поиск записи по полю NEWNUM. Затем выбрать значения некоторых других полей из найденой записи. Хотелось бы чтобы этот пример также мог работать из Excel.

Всего записей: 43 | Зарегистр. 04-01-2009 | Отправлено: 00:32 09-02-2011
KolyaP

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хоть никто и не ответил, частично уже сам сделал.
Код привожу:
 
bik = "044552743"
 
Set dbBS = OpenDatabase(dbn, False, True)
 
strSQL1 = "SELECT NAMEP, TNP, NNP, KSNP FROM BNKSEEK WHERE NEWNUM = " + """" & bik & """"
Set qdf1 = dbBS.CreateQueryDef("", strSQL1)
Set rst = qdf1.OpenRecordset()
 
If rst.RecordCount = 0 Then Exit Sub
 
bank_name = rst.Fields("NAMEP").Value
bank_pl = rst.Fields("NNP").Value
ks = rst.Fields("KSNP").Value
 
 
 
Если dbn = "BNKSEEK1.mdb", всё работает.
Если dbn = "BNKSEEK.dbf", возникает ошибка "Нераспознаваемый формат базы данных <имя файла>. (Ошибка 3343)".
Хотя файл mdb получен из dbf, и ACCESS его успешно конвертировал.
 
Подскажите как работать непосредственно с dbf.
 

Всего записей: 43 | Зарегистр. 04-01-2009 | Отправлено: 02:26 10-02-2011
AndVGri

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

Цитата:
Подскажите как работать непосредственно с dbf

Для начала можешь не импортировать dbf таблицу в базу Access, а связать dbf с этой базой данных, то есть все изменения в dbf, выполненные сторонними программами, будут автоматически видны в Access.
Ну, а если кодом

Код:
 
    Const sPart1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    Const sPart2 As String = ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
 
    Dim pConn As New ADODB.Connection
    Dim pRSet As New ADODB.Recordset
    Dim sPath As String
 
    sPath = "d\PathToDbfFolder"
    pConn.Open sPart1 & sPath & sPart2
    pRSet.Open "Select T.* From dbfName As  T", pConn,  ADODB.adOpenStatic, ADODB.adLockOptimistic
 

следи за тем, чтобы длина имени dbf не была больше 8 символов - затыкается

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 06:14 10-02-2011
KolyaP

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
 
Большое спасибо. Всё работает.
Я в справке даже таких методов не нашёл.
 
Интересен такой вопрос. Задача решается в рамках библиотеки DAO или нужна библиотека ADO?

Всего записей: 43 | Зарегистр. 04-01-2009 | Отправлено: 12:37 10-02-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KolyaP
Можно делать только на DAO или только на ADO.
Согласно идеологии Microsoft DAO более старый вид работы с базами данных (сейчас не развивается), ADO - более новый.

Цитата:
Я в справке даже таких методов не нашёл.  

Почему же нет? В VBA устанавливаем курсор на ADODB.Connection (на слово Connection) и нажимаем F1. Читаем справку

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



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

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 17:36 09-04-2011
asbo

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дык... Что-то не сходится - набор один или несколько?
... из набора типовых рисков ...
... в одну таблицу со стандартными наборами ...
 
Есть риски. Есть наборы рисков. Каждый набор может содержать как типовые для него риски, так и нетиповые. Предполагаем, что один риск может принадлежать нескольким наборам. Один и тот же риск может быть типовым для одного набора, и нетиповым для другого.  
 
Итого получается: Справочник наборов, Справочник рисков и Объединяющая таблица -  набор-риск с дополнительным флагом, указывающим, что данный писк для данного набора является нетиповым. Как-то так...

Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 18:08 09-04-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asbo
Уважаемый asbo, искреннее спасибо за отклик! Наличие собеседника - явный признак того, что ты не сходишь с ума
Продолжу про постановку задачи. Есть один набор типовых рисков (больше не будет нужно, а если нужно - по-моему, этим можно пренебречь). Есть набор проектов (по аудиту). Есть оценки величины каждого риска из набора типовых для каждого проекта - собстенно таблица с данными. Так вот мне нужно куда-то в структуру запихнуть возможность проверяющему
отразить нетиповой риск - заранее неизвестный, их может быть неограниченное количество, в одном проекте они могут быть, в другом - нет, они вообще в целом все разные, нестандартные. И, соответственно, для этого непредвиденного риска должна быть возможность завести оценку  
его уровня... Еще раз большое спасибо!!!

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 18:43 09-04-2011
asbo

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
novo_again, рад что оказался полезным. А то я испугался, увидев обращение "Уважаемый" - подумал, что же я не так сделал?.. :)
 
Насколько я представляю себе аудит, результат никогда с первого раза не устраивает заказчика. Приходится на ходу модифицировать не только критерии оценки показателей, но и, подчас, саму методу аудита. Пусть даже набор рисков фиксированный, но их веса в совокупной оценке могут (и должны!) меняться. Т.о., совокупность, пусть одинаковых, рисков, но с разными весами, и будет составлять набор. Легко будет сравнивать результаты и влияние на них по-разному взвешенных рисков.
 
Но Справочник рисков будет нужен по-любому. А необходимость наборов таки возникнет, помяните мое слово :) А нетиповой риск от типового ничем не отличается, по сути... Разве что тем, что возникает он в справочнике уже по ходу дела, не являясь стандартным элементом типовой методологии. Флаг у него прочто стоит, что он нетиповой.  
 
А если практика применения его в оценке устоится, то и станет он, родимый,  типовым. Никудыть он, милок, не денется, как говорил покойный Демьян Минеич.... И флаг с него снимут :)

Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 19:33 09-04-2011
novo_again



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

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 20:04 09-04-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по ListBox.  
Данный объект формы источником данных использует Recordset, который периодически обновляется по мере действий пользователя. В один прекрасный момент количество записей в нем становится равным нулю. НО: если перед этим количество записей было больше нуля, а какая-либо запись была выделена, то есть ListBox имел определенное Value, это самое Value нихрена не выкорчевывается и не хочет превращаться в Null (
Может быть это така фича и нужно для ListBox написать гигиеническую самоочистку Value, завязанную на .ListCount?
 
Добавлено:
На самом деле последовательность вот такая: есть Combo, от которого зависит ListBox, а от ListBox зависит SubForm. Так вот чтобы записи в SubForm были актуальны, приходится лепить вот такое:
Private Sub Combo1_AfterUpdate()
Me.Requery
Me.Refresh
If Me.List1.ListCount = 0 Then Me.List1.Value = Null
Me.Requery
Me.Refresh
End Sub
 
Нечего сказать - изящно...
 
Добавлено:
Вот так красивше):
Me.List1.Requery
If Me.List1.ListCount = 0 Then Me.List1.Value = Null
Me.Requery
Me.Refresh

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 18:23 26-04-2011 | Исправлено: novo_again, 18:53 26-04-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по условному форматированию.
 
Как по "лучшим практикам" обходится ограничение только на 4 условия, в зависимости от которых меняется оформление объекта? Может быть, можно замутить собственный Class Module со своими свойствами? Но что-то не представляю, как это можно сделать для обычного TextBox...

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 12:02 19-05-2011
asbo

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
novo_again, не знаю за необходимость Class Module... Но где-то я ужЕ писал, что предпочитаю всевозможные (как текущие, так и дефолтные) свойства контролов задавать непосредственно в коде и не использовать их встроенные фичи. Также, как и не использую их встроенные, нативные связи с источниками данных, а передавать в них данные напрямую.

Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 12:27 19-05-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asbo
Спасибо за ответ! А разве даже на уровне кода количество в семействе FormatConditions collection не ограничено четырью?

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 12:31 19-05-2011
asbo

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
novo_again, не знаю (да и не хочу знать :). Наверное ограничено.  Я клоню к тому, чтобы не использовать FormatConditions вообще. Имо, этот FormatConditions не облегчение, а усложнение жизни. Почему те же самые параметры форматирования не задавать дискретно по тем или иным условиям, прописываемым ручками?

Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 12:58 19-05-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asbo
Ок, код - это понятно. Не понятно вот что. Если  Вы для AfterUpdate пропишите изменение оформления в зависимости от значения контроля - оно поменяется для всех контролей для каждой строчки данных одинаково, разве нет?

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 13:24 19-05-2011
asbo

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

Цитата:
Если  Вы для AfterUpdate пропишите изменение оформления в зависимости от значения контроля - оно поменяется для всех контролей для каждой строчки данных одинаково, разве нет?

Почему-то имено AfterUpdate... Update чего? Некие "строчки данных"... Я же не знаю Вашу задачу и ее реализацию. Не совсем понимаю, о чем Вы :(

Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 14:00 19-05-2011
novo_again



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asbo
Задача такая: есть таблица с полем Value. В ней в указанном поле содержатся 5 строк данных: числа 1, 2, 3, 4 и 5. Есть форма типа ContinuousForm - это та, где строчки данных идут одна за одной снизу вверх. В форме есть TextBox, отобрающий значение поля Value таблицы. Нужно чтобы, когда в TextBox стоит 1, цвет TextBox был бы один, 2 - второй, 3 - третий, 4 - четвертый и если стоит 5 - пятый цвет. Вот и вся задачка)
 
Добавлено:
_http://www.lebans.com/formatbycriteria.htm
чумачечий чел... ради подобной задачи зафигачить такого монстра с кучей функций из отдельных библиотек... блин, что-то мне подсказывает, что все грустно)

Всего записей: 244 | Зарегистр. 17-02-2003 | Отправлено: 14:14 19-05-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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access
ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru