Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 11:07   #1
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию В продолжение темы об установке счетчика

Всем доброго времени суток

Есть программа.В ней использую файл BASA.mdb для хранения данных.
В начале года архивирую файл,очищаю таблицу "Zakaz" ,и необходимо в ней установить начальное показание счетчика 100
Сжимаю базу таким образом

Код:
  Sub Sgatie(ByVal StaRFile As String)
    
        If StaRFile.Length <> 0 Then

            Dim sConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                                    StaRFile & ";"
            Dim dConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                                     temp & "Temp.mdb" & ";"
            Dim jro As New JRO.JetEngine
                '///Сжатие
                jro.CompactDatabase(sConn, dConn)

                FileCopy(temp & "Temp.mdb", StaRFile)

                Kill(temp & "Temp.mdb")

                jro = Nothing
        End If
    End Sub
в базе есть макрос от Евгения Тесленко на установку счетчика
Код:
Sub AddCounter()
Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Zakaz")
    rs.AddNew
    rs![Заказ] = 100
    rs.Update
End Sub
после сжатия мне его необходимо выполнить (запустить со своей программы)У клиента Access не установлен.
Подскажите,каким образом дать команду на выполнение макроса если это возможно.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.04.2010, 23:49   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Сергей.
используемая Вами процедура AddCounter, будет работать в любой VB(A) конструкции, достаточно к проекту подключить библиотеку DAO (для версии БД А2000-А2003 DAO 3.6)
сжатие БД так же можно выполнять используя FSO:
Код:
Public Function compactDbFSO(sDBFullPath$)
On Error Resume Next
Dim strTempFile$, objFileSystem As Object
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
  strTempFile = Left(sDBFullPath, Len(sDBFullPath) - Len(Dir(sDBFullPath))) + objFileSystem.GetTempName
  DBEngine.CompactDatabase sDBFullPath, strTempFile
  objFileSystem.CopyFile strTempFile, sDBFullPath, True
  Kill strTempFile
  Set objFileSystem = Nothing
End Function
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 29.04.2010, 09:10   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

дополнение: CurrentDb - обращение к БД из MS Access, замените подобной конструкцией:
Код:
Dim db As DAO.Database  
Set db = OpenDatabase(<PathDB>)
Set rs = db.OpenRecordset(...
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 29.04.2010, 16:06   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Спасибо Евгений за ссылку на DAO,я почему то считал ADODB и DAO
близнецами.Все получилось.Синтаксис у меня немного не токой,но главное идея
Код:
    Protected Friend Sub AddCounter()
        Dim dof As dao.Database
        Dim rs As dao.Recordset
        Dim f = New dao.DBEngine
        dof = f.OpenDatabase(Application.StartupPath & "\BASA.mdb")
        rs = dof.OpenRecordset("Zakaz")
        rs.AddNew()
        rs.Fields("Заказ").Value = 100
        rs.Update()
    End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 29.04.2010 в 16:27.
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А вы знаете, что пользователи могут в течении часа после создания темы редактировать заголовок темы? Alar О форуме и сайтах клуба 4 27.04.2010 15:20
C++ первый опыт [продолжение] kin63camapa Софт 0 26.03.2010 23:19
Заполнение бланков (продолжение) kzld Microsoft Office Excel 8 28.07.2009 17:19
Автоматическое сохранение + Печать. Продолжение темы "Перенос данных из Excel в Word" The_Andrei Microsoft Office Word 15 23.06.2009 23:46
Продолжение воспроизведения, bass.dll BredoZavR Мультимедиа в Delphi 4 06.06.2009 18:46