|
|
|
| Всем привет!
Мальчики и девочки, помогите кто чем может:
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 | |
|
| |
|
|
|
|
Private Function gsTryToCompactDB(CompactingDB As String)
|
а так
Private Function gsTryToCompactDB(ByVal CompactingDB As String)
|
и прогоните код по F8 | |
|
| |
|
|
|
20 Кб. |
|
| Спасибо Дядя Федор, но не работает
Ошибку выдает после строки:
'Формируем имя для временного ("принимающего") файла'
strTempFile = Left(CompactingDBPathAndName, (Len(CompactingDBPathAndName) - 4)) & _
"_Temp" & Right(CompactingDBPathAndName, 4)
Вот кусочек от проги.
Спасибо. | |
|
| |
|
|
|
| Что за пример?
Где обращение к функции... Бред какой-то. Что Вы хотите?
Сжать некую базу.
А? | |
|
| |
|
|
|
| http://www.pro-marketing.by/Rolik-Adskaya-belochka-nabral-bolee-milliona-prosmotrov-na-YouTube-video.html | |
|
| |
|
|
|
| А может это
http://www.pro-marketing.by/Rolik-Adskaya-belochka-nabral-bolee-milliona-prosmotrov-na-YouTube-video.html
кудяпликов пострелять | |
|
| |
|
|
|
| Спасибо Дядя Федор, вы мне очень помогли.
Иногда люди помогают на форумах, и если могу, я всегда помогу другим.
На этом сайте выкладывали мои примеры, только я тогда была под другим ником.
Стоило ли вам так напрягаться, ради того что бы поёрничать? | |
|
| |
|
|
|
| Обращение к функции на таймере формы ff1:
Call gsTryToCompactDB(pb) | |
|
| |
|
24 Кб. |
|
| Не сердитесь - я тоже не сразу понял назначение пустой формы
(просто я так не делаю)
В самом начале вы писали
cжимает только если пишу
Call gsTryToCompactDB("E:\_Аида2\oc\CervernNOV_be.mdb ")
|
т.е. так результат есть а при использовании переменной - нет
из этого могу предположить что DLookUp не возвращает требуемое значение
и точно - выдает бяку (см. рисунок =>)
А бяка потому-что в таблице занесено (извините за выражение) хрен знает что
(после пути идут невидимые символы ну типа chr(10)) | |
|
| |
|
|
|
| Да, я это уже вчера тоже увидела.(((((
Но этот путь прописывается в той таблица там ,
когда я задаю путь к БД с таблицами для прилинковки.
Как этого избежать...я не знаю(((
Может кто то посоветует как исправить...или поскажет другие варианты решения???
Очень нужно
Заранее СПАСИБО | |
|
| |
|
20 Кб. |
|
| Для этого я пользуюсь следующей функцией предворительно закрывая все открутые отчеты и формы. | |
|
| |
|
|
|
| Компилятор ругается , не может найти установленный ISAM
Тут, наверное, референс подключить какой то нужно?
Microsoft.Jet.OLEDB.4.0 - такого нет
Нашла msjet40.dll в сис папке , в описании он Microsoft Jet Engine Library.
у меня SP2 Win XP Оф 2003, может у меня такой нет..
Напишите, пожалуйста, как называется библиотека | |
|
| |
|
|
|
| >Стоило ли вам так напрягаться, ради того что бы поёрничать?
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" | |
|
| |
|
|
|
| Спасибо , дядя Федор, за исчерпывающий ответ. Отрезала...все работает.
Теперь поищу в коде, откуда он там взялся
| |
|
| |