Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: текущая директория "убегает" Добавлено: 20.06.06 21:59  

Автор вопроса:  student-uni
Я пишу каждые десять секунд в Аксесс файл.
(Работает Elapsed timer
Создан коннектор OLEDB ну и
connection.open
execute.nonquery
connection.close)

В коннекторе указана база данных без полного пути,
тобишь искать в том же каталоге что и сама прога,
те в рабочем каталоге.

Так вот при открытии окна диалога
"убегает" текущая директория
Делаю

Dim OpenFileDialog1 As New OpenFileDialog
        Dim sb As New System.Text.StringBuilder
        With OpenFileDialog1
            .InitialDirectory = "C:\" 'или текущая
            With sb
                .Append("*.exe")
                .Append("|*.exe")
                .Append("|*.com")
                .Append("|*.com")
                .Append("|*.bat")
                .Append("|*.bat")
            End With
            .Filter = sb.ToString
            .RestoreDirectory = True
            If .ShowDialog() = DialogResult.OK Then

                Return .FileName
            End If

Если пользователь начнёт с текущей директори а потом будет просматривать диск - то при попытке установить соединение с базой данных произойдёт ошибка.
И это верно, т.к. полный путь к базе не указан,
а текущая директория изменилась.

Можно конечно:
- получить и прописать полный путь к базе в коннекшн стринг
- остановить таймер на время просмотра пользователем
OpenFileDialog
- изменить текущую директорию и переопределитть коннекшн стринг каждый раз при записи а потом возвращать исходное значение.

Вопрос - как придумает умнее выход из положения

Спасибо

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 21.06.06 00:46
На мой взгляд использование текущей директории - есть дурной тон в программировании, это приводит с непредсказуемым результатам.. и исходя из этого единственно верное решение ты уже дал:
- получить и прописать полный путь к базе в коннекшн стринг

причем делается это только 1 раз при загрузке, сохраняется в глобальной переменной, и используй на протяжении всего времени работы программы.. Что, конкретно, не устраивает тебя в этом решении? Умнее этого уже ничего не придумаешь.. (имхо)

Ответить

Номер ответа: 2
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #2 Добавлено: 21.06.06 17:02
Пардон,
Путь к базе стоит полный !
(Не посмотрел)
А директория убегает.
Я выкрутился тем что перед открытием OpenFileDialog выставляю булеву переменную
а потом убираю её.
А таймер смотрит, если булева стоит - то он не пишет. Но всё же интересно как же ОpenFileDialog1.InitialDirectory функционирует ?

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 21.06.06 17:42
убери .RestoreDirectory = True ....
Фишка в том, что если в другой программе вызывали этот диалог, то диалогу будет плевать на InitialDirectory и стартовая папка будет та, которую открывали в последний раз в любой из программ..
А в InitialDirectory задается путь на котором открывается диалог...
и убирай свои таймеры и булевы флаги-это лишнее(имхо)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам