Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Остановить работу приложения. Добавлено: 12.09.10 19:40  

Автор вопроса:  goodwen
Здравствуйте, я пишу на vb6, у меня есть приложение подключённое к бд в виде excel файла. Мне нужно программно остановить ход работы приложения и открыть файл, в котором находится бд, внести вручную изменения, а затем при закрытии файла (или при нажатии на кнопку процедуры) работа приложения продолжалась. Как мне это сделать?

Ответить

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

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 12.09.10 23:18
если ты остановишь приложение, то оно уже ничего не сможет открыть ..

Ответить

Номер ответа: 2
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #2 Добавлено: 13.09.10 00:10
AgentFire, я предполагал так, приложение открывает файл и останавливается, после внесения изменений файл закрывается и ход программы идёт дальше, не ужели так сделать нельзя?

Ответить

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



Вопросов: 26
Ответов: 65
 Профиль | | #3 Добавлено: 13.09.10 00:11
AgentFire, извиняюсь за не совсем корректное описание работы приложения.

Ответить

Номер ответа: 4
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #4 Добавлено: 13.09.10 00:34
Давай наоборот, мы будем спрашивать. (риторически)
А что мешает открыть файл, в котором находится бд?.
Что его блокирует? Твоя программа? На каком этапе? Локализуй строку кода.
И? Неужели ничего нельзя сделать?

Ответить

Номер ответа: 5
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #5 Добавлено: 13.09.10 11:53
Eugy, у меня файл открывается, я перед каждым открытием файла соединение с бд разрываю и после открываю, мне нужно после открытия файла остановить работу приложения, а затем после того, как файл закроется, начала выполнятся следующая строка в коде.
  1.  
  2. c=input("заполнить описание вручную, или автоматически?+ Chr(13) + "1.Вручную" + Chr(13) + "2.Автоматически") <br>
  3. if c=2 then
  4. ....(там идёт эта большая процедура в блочном if)
  5. end if
  6. if c=1 then
  7. conn.Close 'разрыв соеденения
  8. Set conn = Nothing
  9. ShellExecute 0&, "open", App.Path & "\meta-baza.xls", 0&, 0&, 1
  10. 'и вот с этой строки должно происходить остановка работы приложения
  11. 'а затем при закрытия файла нужно снова подключать соединение к бд и goto на запрос.
  12. 'и это всё сделано, кроме того, как остановить и снова возобновить работу приложения после закрытия файла.

Ответить

Номер ответа: 6
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #6 Добавлено: 13.09.10 22:45
Как мне можно так сделать?

Ответить

Номер ответа: 7
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #7 Добавлено: 14.09.10 02:52
Открыть excel и ожидать закрытия?
например, так.
  1.  
  2. 'If c = 1 Then
  3. '    conn.Close 'разрыв соеденения
  4.     Static wb As Object
  5.     If Not wb Is Nothing Then
  6.         wb.Application.Visible = True
  7.         Exit Sub  ' уже редактируется
  8.     End If
  9.         
  10.     Dim ex As Object
  11.     Set ex = CreateObject("Excel.Application")
  12.     Set wb = ex.Workbooks.Open(App.Path & "\meta-baza.xls")
  13.     ex.Visible = True
  14.     Do While Not ex.ActiveWorkbook Is Nothing
  15.         DoEvents
  16.     Loop
  17.     Debug.Print "exit do"
  18.     Set wb = Nothing
  19.     Set ex = Nothing
  20.     'conn.Open ' восстановить

Ответить

Номер ответа: 8
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #8 Добавлено: 14.09.10 03:16
P/S
А еще лучше, чтобы не использовать цикл
подкючи ссылку Excel XX ObjectLibrary
объяви Private WithEvents ex As Excel.Application
и лови закрытие в WorkbookBeforeClose

Ответить

Номер ответа: 9
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #9 Добавлено: 15.09.10 14:53
Eugy, очередной раз спасибо за помощь, я только хотел уточнить, у меня не получилось сделать второй вариант, который Вы предложили с ссылку Excel XX ObjectLibrary, не могли бы Вы написать, как это сделать?

Ответить

Номер ответа: 10
Автор ответа:
 Eugy



Вопросов: 0
Ответов: 73
 Профиль | | #10 Добавлено: 15.09.10 17:01
В меню Проект>>Ссылки ставишь галку Excel Object Library.
В объектном модуле (напр. в коде формы) в самом верху объявляешь
Private WithEvents MyExcelApp As Excel.Application
Становятся доступны события этого объекта. Один из них задействовать:
  1.  
  2. Private Sub MyExcelApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)
  3.    conn.open 'восстановить ранее закрытое соединение (conn у тебя объявлено как public ?)
  4.    '...
  5.    '...
  6. End Sub


Или проделать тоже самое с объектом книга
  1.  
  2. Private WithEvents MyWorkBook As Excel.Workbook
  3.  
  4. Private Sub MyWorkBook_BeforeClose(Cancel As Boolean)
  5.     conn.open
  6.     '....
  7. End Sub


В той части кода, где планируется открывать excel:
  1.  
  2.     If Not MyWorkBook Is Nothing Then
  3.         MyWorkBook.Application.Visible = True '(MyExcelApp.Visible = True)
  4.         Exit Sub  ' уже редактируется
  5.     End If
  6.     conn.Close
  7.     Set MyExcelApp = New Excel.Application
  8.     Set MyWorkBook = MyExcelApp.Workbooks.Open(App.Path & "\meta-baza.xls")
  9.     MyExcelApp.Visible = True
  10.     Exit Sub


Вот, как-то так.

Ответить

Номер ответа: 11
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #11 Добавлено: 15.09.10 20:39
Eugy, Спасибо большое за помощь.

Ответить

Страница: 1 |

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



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