Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контроль за копированием БД на сервер, Произведена ли замена БД 
:(
    Опции темы
Flotskiy
Дата 12.3.2005, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Добрый день всем!
Возник вопрос на тему:
В библиотеке на компе установлена прога (моя на VB6) для занесения новых книг в БД MSAccess
БД находится на диске C:
Просле закрытия проги нужно скопировать БД на сервер для того, чтобы другие проги (тоже мои на VB6) на других компах пользовались обновленной инфой, делается так:
Код

Private Sub cmdQuit_Click()
On Error Resume Next
Dim  prompt1$, FileNm1$, prompt2$, FileNm2$, prompt3$, FileNm3$

      prompt1$ = "C:\Biblioteka\BDanny\Bibliot.mdb"
      FileNm1$ = "\\Server\Baza_danny\Biblioteka\Bibliot.mdb"
          FileCopy prompt1$, FileNm1$
          
  MsgBox "База данных скопирована.", vbInformation
Set frmGlavn = Nothing
Unload Me

End Sub

Но бывает что замены не происходит, хотя и выдает
Цитата
"База данных скопирована."

Весит БД 4,5 MB
Как заставить код отработать корректно или в данной ситуации нужен другой подход?
Посоветуйте, pse.
С уважением




--------------------
FlotskiySk k
PM MAIL   Вверх
Exception
Дата 12.3.2005, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Странно...
Убери On Error Resume Next - может там ошибка выскакивает?
smile smile smile
Добавлено @ 12:09
В смысле на FileCopy должна ошибка выскочить
PM   Вверх
Flotskiy
Дата 12.3.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Run-time error , приветствую!
Даже и не подумал над On Error...
Благодарю за подсказку, сию проверю.
Всего доброго.
--------------------
FlotskiySk k
PM MAIL   Вверх
Flotskiy
Дата 17.3.2005, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Добрый день всем!
Run-time error, по твоей подсказке убрал с кода
Цитата
On Error Resume Next

Прогнал несколько раз прогу и в двух случаях выдает ошибку:
Цитата
Run-time error '70'
Permission denied

В первом случае , когда много загружено программ одновременно (Access, Excel, Word и т.д.) то при выгрузке проги выдает ошибку
Второй случай: В проге есть обращение в документ Excel вот таким кодом:
Код


Private Sub mnuIKniga_Click()
On Error Resume Next
Dim iIndx As Integer
Dim iRowIndex As Integer
Dim iColIndex As Integer
Dim iRecordCount As Integer
Dim iFieldCount As Integer
Dim sMessage As String
Dim avRows As Variant
Dim excelVersion As Integer

Dim sSqlString As String

Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset

connectString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
                 & "Data Source=" & gDataBaseName
                 
sSqlString = "SELECT (DatZap) AS D_Zap, InventNumber, " & _
        "(' ') AS Otm, (Autor & ' ' & Title) AS Заглавие,  " & _
        "(DatPubl) AS ДатаПубл, (Zena) AS Цена, " & _
        "(Autor1) AS Соавтор, (PodRed) AS РодРед, (InventNumber2) AS Инв1, (NumbPost) AS н_п" & _
        "FROM Titles WHERE InventNumber =" & Text2.Text

adoConnection.Open connectString
adoRecordset.CursorLocation = adUseClient
adoRecordset.Open sSqlString, adoConnection

'-- Read all of the records into our array
avRows = adoRecordset.GetRows()

'-- Determine how many fields and records
iRecordCount = UBound(avRows, 2) + 1
iFieldCount = UBound(avRows, 1) + 1

'-- Create reference variable for the spreadsheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open (App.Path & "\Document\Инвентарная книга")

'-- We need this line to insure Excel remains visible if we switch
Set objTemp = objExcel

excelVersion = Val(objExcel.Application.Version)
If (excelVersion >= 8) Then
 Set objExcel = objExcel.ActiveSheet
End If

'-- Place the names of the fields as column headers --
iRowIndex = 1
iColIndex = 1
For iColIndex = 1 To iFieldCount
  With objExcel.Cells(iRowIndex, iColIndex)
     .Value = adoRecordset.Fields(iColIndex - 1).Name
     With .Font
       .Name = "Arial"
       .Bold = True
       .Size = 9
     End With
  End With
Next

'-- memory management --
adoRecordset.Close
Set adoRecordset = Nothing

'-- Just add data --
With objExcel
  For iRowIndex = 2 To iRecordCount + 1
   For iColIndex = 1 To iFieldCount
    .Cells(iRowIndex, iColIndex).Value = avRows(iColIndex - 1, iRowIndex - 2)
   Next
  Next
End With
objExcel.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit

End Sub


В проге имеются 4 загрузки документов, и при обращении к любому из них после закрытия программы выдает ошибку и отладчик останавливается на строке
Код

    FileCopy prompt$, FileNm$

, хотя есть код для закрытия всех RecordSet вот так:
Код

Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
'
For Each ws In Workspaces
For Each db In ws.Databases
For Each rs In db.Recordsets
rs.Close
Set rs = Nothing
Next
db.Close
Set db = Nothing
Next
ws.Close
Set ws = Nothing
Next
Set frmGlavn = Nothing
Dim i As Integer
For i = Forms.Count - 1 To 0 Step -1
Unload Forms(i) 'Выгружаем все формы
Next i
    Unload Me
       Set frmGlavn = Nothing
       Unload Me
End Sub


Если в процессе работы проги не было обращений к Excel. то все нормально выгружается и происходит копирование БД
Или после выхода этот документ Excel не закрывается?
Помогите, pse, разобраться с этой проблемой.
С Уважением

Это сообщение отредактировал(а) Flotskiy - 17.3.2005, 10:32
--------------------
FlotskiySk k
PM MAIL   Вверх
Exception
Дата 17.3.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Permission denied?
Доступ закрыт smile
Не знаю, как это связано с Excel, но мне это напонимает банальную ошибку в именах файлов или ч.-л. в этом роде.
А, ВСПОМНИЛ!!!!
У меня та же проблема была, когда я в БД не закрывал коннэкшенов. Убедись, что ты все закрыл.
Посмотрел код. Хммм....
А зачем
Код

Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
'
For Each ws In Workspaces
For Each db In ws.Databases
For Each rs In db.Recordsets
rs.Close
Set rs = Nothing
Next
db.Close
Set db = Nothing
Next
ws.Close
Set ws = Nothing
Next


И опять: убери On Error Resume Next!
Мне кажца, что правильнее adoConnection объявить Public, а в Unload его и закрыть.
Добавлено @ 21:58
Ну да! Ты же закрыл какие-то Recordset'ы, а коннекшн не закрыл smile
PM   Вверх
Flotskiy
Дата 18.3.2005, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Добрый день всем!
Run-time error , в коде для запуска файла Excel есть такой фрагмент:
Цитата
'-- memory management --
adoRecordset.Close
Set adoRecordset = Nothing

Сюда я добавил вот:
Код


'-- memory management --
adoRecordset.Close
adoConnection.Close
Set adoRecordset = Nothing
Set adoConnection = Nothing

Значит adoConnection закрыт.
Испробовал прогу, все нормально, ошибки нет.
Но этод код на один Excel Файл.
В модуль поставил:
Код

Public adoRecordset As String
Public adoConnection As String

а в Unload главной формы
Код


'-- memory management --
adoRecordset.Close
adoConnection.Close
Set adoRecordset = Nothing
Set adoConnection = Nothing

хотел, чтобы было закрытие по всем формам (как ты и советовал), но так не получается у меня,
на этот фрагмент ругается. Что-то я не так сделал.
Подскажи, как упорядочить это?
С уважением

--------------------
FlotskiySk k
PM MAIL   Вверх
Exception
Дата 18.3.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Цитата(Flotskiy @ 18.3.2005, 11:05)
на этот фрагмент ругается

И какая ошибка?
PM   Вверх
Flotskiy
Дата 21.3.2005, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Доброе утро всем!
Выдает ошибку
Invalid qualifier (неправильный классификатор)
Я заремил в модуле
Код


Public adoRecordset 'As String
Public adoConnection' As Strin 


и все заработало, значит неправильно объявил переменную.
Если я прав - то всех благодарю за помощь
Всего доброго
С уважением

--------------------
FlotskiySk k
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.