Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сжатие разделенной БД, 2003, ошибка в коде
 
 автор: Белка   (04.12.2010 в 13:45)   личное сообщение
 
 

Всем привет!
Мальчики и девочки, помогите кто чем может:

Dim pb As String
pb = DLookup("PName", "System-Path", "[k]=1")
где PName = E:\_Аида2\oc\CervernNOV_be.mdb из таблицы System-Path
.....
Call gsTryToCompactDB(pb)
..........................
Как там написать эту переменную, я пробовала и в кавычках и без кавычек..и как угодно, сжимает только если пишу
Call gsTryToCompactDB("E:\_Аида2\oc\CervernNOV_be.mdb ")
...............
приведу весь код :
Public Function gflngCompactDatabase( _
CompactingDBPathAndName As String, _
Optional BackupBeforeCompactDB As Boolean = False) As Long
Dim strTempFile As String
On Error GoTo ErrHandler
'Формируем имя для временного ("принимающего") файла'
strTempFile = Left(CompactingDBPathAndName, (Len(CompactingDBPathAndName) - 4)) & _
"_Temp" & Right(CompactingDBPathAndName, 4)
'Создаем (если надо) резервную копию файла БД перед сжатием'
If BackupBeforeCompactDB = True _
Then FileCopy CompactingDBPathAndName, _
Left(CompactingDBPathAndName, (Len(CompactingDBPathAndName) - 4)) & _
"_Backup" & Right(CompactingDBPathAndName, 4)
'Сжимаем файл БД (с перезаписью сжатого файла в новый файл)'
DBEngine.CompactDatabase CompactingDBPathAndName, strTempFile, dbLangCyrillic
'Перезаписываем сжатый (временный файл) на место несжатого (старого файла)'
FileCopy strTempFile, CompactingDBPathAndName
'Удаляем временный файл'
Kill strTempFile
Exit Function
ErrHandler:
'обрабатываем возможные ошибки'
gflngCompactDatabase = Err.Number
Err.Clear: Exit Function
End Function


Private Function gsTryToCompactDB(CompactingDB As String)
Dim lngUserAnswer As Long
Static lngIterationCnt As Long
If gflngCompactDatabase(CompactingDB) = 0 Then 'сжимаем БД и проверяем, получилось ли'
'если сжатие произошло...'
mlngStep = mlngStep + 1
lngIterationCnt = 0
Me.TimerInterval = 1
Else
'если сжатие не произошло (возникла ошибка)...'
If lngIterationCnt <= MaxIterations Then
lngIterationCnt = lngIterationCnt + 1
Me.TimerInterval = TimeDelay
Else
lngIterationCnt = 0
lngUserAnswer = MsgBox( _
"В данный момент не получается сжать файл '" & _
CompactingDB & "'." & vbNewLine & _
"Попытаться сжать данный файл еще раз?", _
vbExclamation + vbYesNoCancel, "Не удается сжать БД")
Select Case lngUserAnswer
Case vbYes
Me.TimerInterval = TimeDelay
Case vbNo
mlngStep = mlngStep + 1
Me.TimerInterval = 1
Case vbCancel
DoCmd.Quit 'Выход из Acces'
End Select
End If
End If
End Function

  Ответить  
 
 автор: Дядя Федор   (04.12.2010 в 15:31)   личное сообщение
 
 


Private Function gsTryToCompactDB(CompactingDB As String)


а так

Private Function gsTryToCompactDB(ByVal CompactingDB As String)

и прогоните код по F8

  Ответить  
 
 автор: kot_k_k   (04.12.2010 в 18:48)   личное сообщение
 
 

Белочка - но так писать код это полная белочка. нечитаемо - для читаемости нужно протрезветь и вникать в поток не структурированного текста

  Ответить  
 
 автор: Дядя Федор   (04.12.2010 в 22:57)   личное сообщение
 
 

  Ответить  
 
 автор: Белка   (04.12.2010 в 19:55)   личное сообщение
20 Кб.
 
 

Спасибо Дядя Федор, но не работает
Ошибку выдает после строки:

'Формируем имя для временного ("принимающего") файла'
strTempFile = Left(CompactingDBPathAndName, (Len(CompactingDBPathAndName) - 4)) & _
"_Temp" & Right(CompactingDBPathAndName, 4)

Вот кусочек от проги.
Спасибо.

  Ответить  
 
 автор: Дядя Федор   (04.12.2010 в 22:45)   личное сообщение
 
 

Что за пример?
Где обращение к функции... Бред какой-то. Что Вы хотите?
Сжать некую базу.
А?

  Ответить  
 
 автор: Дядя Федор   (04.12.2010 в 23:00)   личное сообщение
 
 

http://www.pro-marketing.by/Rolik-Adskaya-belochka-nabral-bolee-milliona-prosmotrov-na-YouTube-video.html

  Ответить  
 
 автор: Дядя Федор   (04.12.2010 в 23:02)   личное сообщение
 
 

А может это

http://www.pro-marketing.by/Rolik-Adskaya-belochka-nabral-bolee-milliona-prosmotrov-na-YouTube-video.html

кудяпликов пострелять

  Ответить  
 
 автор: Белка   (04.12.2010 в 23:35)   личное сообщение
 
 

Спасибо Дядя Федор, вы мне очень помогли.
Иногда люди помогают на форумах, и если могу, я всегда помогу другим.
На этом сайте выкладывали мои примеры, только я тогда была под другим ником.
Стоило ли вам так напрягаться, ради того что бы поёрничать?

  Ответить  
 
 автор: Белка   (04.12.2010 в 23:40)   личное сообщение
 
 

Обращение к функции на таймере формы ff1:
Call gsTryToCompactDB(pb)

  Ответить  
 
 автор: snipe   (05.12.2010 в 04:19)   личное сообщение
24 Кб.
 
 

Не сердитесь - я тоже не сразу понял назначение пустой формы
(просто я так не делаю)

В самом начале вы писали

cжимает только если пишу
Call gsTryToCompactDB("E:\_Аида2\oc\CervernNOV_be.mdb ")

т.е. так результат есть а при использовании переменной - нет

из этого могу предположить что DLookUp не возвращает требуемое значение


и точно - выдает бяку (см. рисунок =>)

А бяка потому-что в таблице занесено (извините за выражение) хрен знает что
(после пути идут невидимые символы ну типа chr(10))

  Ответить  
 
 автор: Белка   (05.12.2010 в 09:06)   личное сообщение
 
 

Да, я это уже вчера тоже увидела.(((((
Но этот путь прописывается в той таблица там ,
когда я задаю путь к БД с таблицами для прилинковки.
Как этого избежать...я не знаю(((
Может кто то посоветует как исправить...или поскажет другие варианты решения???
Очень нужно
Заранее СПАСИБО

  Ответить  
 
 автор: user12345   (05.12.2010 в 15:10)   личное сообщение
20 Кб.
 
 

Для этого я пользуюсь следующей функцией предворительно закрывая все открутые отчеты и формы.

  Ответить  
 
 автор: Белка   (07.12.2010 в 09:07)   личное сообщение
 
 

Компилятор ругается , не может найти установленный ISAM
Тут, наверное, референс подключить какой то нужно?
Microsoft.Jet.OLEDB.4.0 - такого нет
Нашла msjet40.dll в сис папке , в описании он Microsoft Jet Engine Library.

у меня SP2 Win XP Оф 2003, может у меня такой нет..

Напишите, пожалуйста, как называется библиотека

  Ответить  
 
 автор: Дядя Федор   (06.12.2010 в 08:47)   личное сообщение
 
 

>Стоило ли вам так напрягаться, ради того что бы поёрничать?

1.Прошу прощения, наверное сам на себя разозлился, что ступил.

2.И все же по F8 прошлись? Раз вышли на ошибку....
М.б. посмотреть как формируется имя в таблице и откуда там ""
3.Попробуйте так (предполагаем, что файл всегда mdb) - отрежем лишнее

pb = DLookup("PName", "System-Path", "[k]=1")
pb = Mid(pb, 1, InStrRev(pb, "mdb") + 2)
'или pb = Mid(pb, 1, InStr(1, pb, "mdb") + 2)


С искренними извинениями и пожеланиями успехов, ДФ.

P.S.
Можно так
Dim k As String
k = """"
Shell k & SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE" & k & " " & k & pb & k & " /Compact"

  Ответить  
 
 автор: Белка   (07.12.2010 в 09:12)   личное сообщение
 
 

Спасибо , дядя Федор, за исчерпывающий ответ. Отрезала...все работает.
Теперь поищу в коде, откуда он там взялся

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList