powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
8 сообщений из 8, страница 1 из 1
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458365
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?

А я думал что Access идеален во всем, а оказывается не совсем.

Рассмотрите запрос:
Код: sql
1.
SELECT Chek.id, First(Chek.DateTime) AS [DateTime], First(Chek.StilNomer) AS StilNomer, First(Chek.Trivalist) AS Trivalist, First(Chek.DateTimeClose) AS DateTimeClose, First(Chek.ZapitForDelete) AS ZapitForDelete, Sum([Kst]*[cinazamovl]) AS Suma, First(Chek.Oplacheno) AS Oplacheno, Count([PodaliStravu])+Sum([PodaliStravu]) AS PodaliNaStil, First(Chek.CloseChek) AS CloseChek FROM Chek INNER JOIN Zamovlenna ON Chek.id = Zamovlenna.key GROUP BY Chek.id HAVING (((First(Chek.DateTime))>=#11/7/2013 7:0:0# And (First(Chek.DateTime))<=#11/8/2013 6:0:0#)) ORDER BY Chek.id;



это выборка за указанный период. Что не играет ? Все играет. Свет несколько раз выключился без предупреждения (упс не успел поставить) и база данных начала хандрить. В пределах выбранного дня (((First(Chek.DateTime))>=#11/7/2013 7:0:0# And (First(Chek.DateTime))<=#11/8/2013 6:0:0#)) чек под номером 442 выдавал суму (поле Sum([Kst]*[cinazamovl]) AS Suma ) на 2грн больше чем положено, а если в HAVING поставить Chek.id=442, тогда все нормально. Визуально я не увидел ничего чтобы могло быть неверно. Но глюк оставался. Также есть поле "Вынесли на стол" ( Count([PodaliStravu])+Sum([PodaliStravu]) AS PodaliNaStil ) , которая показывала (NOT 0). Технологию такую использовал, потому что удобно, так как поле_as_boolean принимает значение 0 или -1. Count считает всегда +1 каждую строку, а Sum - суммирует -1 + (-1).. В результате если не ноль, значит все не отмечено. Анализ данных ничего не дал. Что спасло ? Спасло меню в б/д Access "сжать и восстановить". А я могу в VB6 это сделать программно ???
...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458366
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал для удобства пост (вылазит за экран)

это выборка за указанный период. Что не играет ? Все играет.
Свет несколько раз выключился без предупреждения (упс не успел поставить) и база данных начала хандрить.
В пределах выбранного дня (((First(Chek.DateTime))>=#11/7/2013 7:0:0# And (First(Chek.DateTime))<=#11/8/2013 6:0:0#))
чек под номером 442 выдавал суму (поле Sum([Kst]*[cinazamovl]) AS Suma ) на 2грн больше чем положено,
а если в HAVING поставить Chek.id=442, тогда все нормально. Визуально я не увидел ничего чтобы могло быть неверно.
Но глюк оставался. Также есть поле "Вынесли на стол" ( Count([PodaliStravu])+Sum([PodaliStravu]) AS PodaliNaStil ) ,
которая показывала (NOT 0). Технологию такую использовал, потому что удобно, так как поле_as_boolean принимает
значение 0 или -1. Count считает всегда +1 каждую строку, а Sum - суммирует -1 + (-1).. В результате если не ноль,
значит все не отмечено. Анализ данных ничего не дал. Что спасло ? Спасло меню в б/д Access "сжать и восстановить".
А я могу в VB6 это сделать программно ???
...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458441
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то нашел...
Буду проверять

Sub CompactDatabaseX()

Dim dbsNorthwind As Database

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

' Show the properties of the original database.
With dbsNorthwind
Debug.Print .Name & ", version " & .Version
Debug.Print " CollatingOrder = " & .CollatingOrder
.Close
End With

' Make sure there isn't already a file with the
' name of the compacted database.
If Dir("NwindKorean.mdb") <> "" Then _
Kill "NwindKorean.mdb"

' This statement creates a compact version of the
' Northwind database that uses a Korean language
' collating order.
DBEngine.CompactDatabase "Northwind.mdb", _
"NwindKorean.mdb", dbLangKorean

Set dbsNorthwind = OpenDatabase("NwindKorean.mdb")

' Show the properties of the compacted database.
With dbsNorthwind
Debug.Print .Name & ", version " & .Version
Debug.Print " CollatingOrder = " & .CollatingOrder
.Close
End With

End Sub

This example uses the CompactDatabase method to change the version of a database. To run this code, you must have a Microsoft Jet version 1.1 database called Nwind11.mdb and you cannot use this code in a module belonging to Nwind11.mdb.

Sub CompactDatabaseX2()

Dim dbsNorthwind As Database
Dim prpLoop As Property

Set dbsNorthwind = OpenDatabase("Nwind11.mdb")

' Show the properties of the original database.
With dbsNorthwind
Debug.Print .Name & ", version " & .Version
Debug.Print " CollatingOrder = " & .CollatingOrder
.Close
End With

' Make sure there isn't already a file with the
' name of the compacted database.
If Dir("Nwind20.mdb") <> "" Then _
Kill "Nwind20.mdb"

' This statement creates a compact and encrypted
' Microsoft Jet 2.0 version of a Microsoft Jet version
' 1.1 database.
DBEngine.CompactDatabase "Nwind11.mdb", _
"Nwind20.mdb", , dbEncrypt + dbVersion20

Set dbsNorthwind = OpenDatabase("Nwind20.mdb")

' Show the properties of the compacted database.
With dbsNorthwind
Debug.Print .Name & ", version " & .Version
For Each prpLoop In .Properties
On Error Resume Next
If prpLoop <> "" Then Debug.Print " " & _
prpLoop.Name & " = " & prpLoop
On Error GoTo 0
Next prpLoop
.Close
End With

End Sub

...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458603
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159,

Application.SetOption "Auto compact", True


Application.compactRepair sourecFile, destinationFile
...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458604
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для VBA ? А мне надо для VB6. Я только базу использую access в VB6
...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458624
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Я только базу использую access в VB6То есть только подключаетесь, используя ADO? И сам Access на машине отсутствует?
...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458634
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Microsoft Jet And Replication Objects 2.6 Library

JRO.JetEngine.CompactDatabase
...
Рейтинг: 0 / 0
Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
    #38458692
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM , "То есть только подключаетесь, используя ADO? И сам Access на машине отсутствует?" Присутствует, но доступ убрали. Только возможен ввод, редактирования и просмотр данных через сенсорный экран (ввод заказов в ресторане, запуск музыки).

Antonariy, JRO.JetEngine.CompactDatabase Спасибо, я бы искал еще долго.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно "Сжать и восстановить" базу данных Access с помощью VB6 ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]