Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 22:25   #1
TimRus
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 28
По умолчанию При работе с TreeView возникают ошибки.

Здравствуйте!!!! Исправьте пожалуйста ошибки....
Ошибки возникают при открытии формы, добавлении должности, и при удалении подразделения с должностями.
Вложения
Тип файла: rar Отдел кадров v2.rar (88.4 Кб, 25 просмотров)
TimRus вне форума Ответить с цитированием
Старый 08.06.2010, 23:10   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте TimRus.
у Вашей конструкции не верна структура и потому при построении дерева программа пытается "воткнуть" не уникальные ключи, TreeView этого не допускает и потому код завершается из-за ошибки. я подкорректировал код функции чтобы "обойти" неправильную структуру
Код:
Public Function trvEmployee_Output(TV As CustomControl) As Boolean
Const sQ1 = "SELECT КодПодразделения, НаимПодразделения FROM Подразделения"
Const sQ2 = "SELECT ШР.КодШТ & ""_"" & КодДолджности, НаимДолжности, КодДолджности " + _
"FROM Должности INNER JOIN ШР ON Должности.КодДолджности = ШР.КодДолжности WHERE ШР.КодПодразделения="

  '  On Error GoTo Err_trvEmployee_Output
    Dim db As Database, rs0 As DAO.Recordset, rs1 As DAO.Recordset
    Dim strKey1$, strKey2$, nodX As Node, s$

    Set db = CurrentDb
    Set rs0 = db.OpenRecordset(sQ1, dbOpenSnapshot)
        trvEmployee.Nodes.Clear
        Set nodX = TV.Nodes.Add(, , strKeyRoot, "ООО Титан", 1)
        With nodX
            .ExpandedImage = 2: .Expanded = True
        End With
        If rs0.RecordCount > 0 Then trvEmployee_Output = True
        Do While Not rs0.EOF
            strKey1 = KeyDept & rs0(0)
            Set nodX = TV.Nodes.Add(strKeyRoot, tvwChild, strKey1, rs0(1), 3, 4)
            s = rs0(0) & ""
            nodX.Tag = s: s = sQ2 + s + " ORDER BY НаимДолжности"
            Set rs1 = db.OpenRecordset(s, dbOpenDynaset)
            Do While Not rs1.EOF
                strKey2 = KeyPost & rs1(0) '!КодДолджности
                Set nodX = TV.Nodes.Add(strKey1, tvwChild, strKey2, rs1(1), 5, 6)
                nodX.Tag = rs1(2)
                rs1.MoveNext
            Loop
            rs0.MoveNext
        Loop

Exit_trvEmployee_Output:
    rs0.Close: rs1.Close: db.Close
    Set db = Nothing: Set rs0 = Nothing: Set rs1 = Nothing
    Exit Function
Err_trvEmployee_Output:
    Resume Exit_trvEmployee_Output
End Function
думаю Вы самостоятельно нашли бы ошибку если бы отключили обработчик ошибок VBA
Проверьте связи таблиц, для возможности удаления "подразделения с должностями" необходимо установить связь с возможностью каскадного удаления.
При выполнении действий с данными из которых построено "дерево", его обязательно необходимо "перерисовать".
Удачи Вам.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 08.06.2010, 23:25   #3
TimRus
Пользователь
 
Регистрация: 26.03.2010
Сообщений: 28
По умолчанию

Спасибо, Евгений!!! Все заработало!
TimRus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки при работе с WebBrowser Matra Компоненты Delphi 3 08.05.2010 08:15
Ошибки возникающие при работе с почтой Vol666 Работа с сетью в Delphi 0 29.07.2009 23:04
Ошибки при работе с матрицей maziLa Общие вопросы C/C++ 2 10.04.2009 22:45
Ошибки при работе с графикой. ReM Общие вопросы C/C++ 0 26.03.2009 13:41
Ошибки при работе запросов с параметрами Customer Microsoft Office Access 4 14.07.2008 20:35