Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/55: Рейтинг темы: голосов - 55, средняя оценка - 4.56
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
1

Как сделать рабочую 64-битную версию базы из 32-битной?

20.10.2015, 16:43. Показов 10653. Ответов 7
Метки нет (Все метки)

Добрый день, уважаемые знатоки)...
Помнится, я уже где-то здесь в темах натыкался и спрашивал, но почему-то не могу найти.
Хотелось бы более детально узнать, чем отличаются 32 и 64-битные версии баз. Если можно, было бы интересно почитать какой-то теоретический материал по этому поводу.
Интересует потому, что я делаю базы в 32-битной версии (и винды, и офиса), а иногда, хоть и довольно редко, возникают клиенты, у которых стоит либо 64-битная виндовс, либо 64-битный офис, либо и то и другое вместе... И вот тогда зачастую мои базы в упор не хотят правильно работать: либо вообще отказываются запускаться, либо уже после запуска начинают выдавать всевозможные сообщения и т.д... Очень хотелось бы понять, от чего это зависит и что нужно делать, чтобы з 32-битной версии получить нормально работающую базу в 64-битной версии.
На текущий момент я только знаю, что это как-то зависит от прописанных в референсах библиотек (в 64-битной версии они вроде как другие?..). На этом мои нубские знания в этом вопросе и заканчиваются) Очень хотелось бы восполнить эту дыру в знаниях, поэтому буду очень признателен за наводки и советы)).

Для примера у меня и сейчас есть одна база, которая даже запускается в 64-битной версии, но при старте главной формы выдает запросы на ввод каждого параметра, типа такого:

введите значение параметра : Формы!Главная!Периоды

И подозреваю, что даже если ей повводить все эти параметры, то и дальше она не будет работать так, как предусматривалось...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2015, 16:43
Ответы с готовыми решениями:

Как можно сделать из 32 битной версии 64 битную?
Всем привет возникла вот какая проблема: мне по учебе надо установить программу которая работает...

Возможен ли переход с 32-битной 10-ки на 64-битную?
Есть ли возможность нормально обновить ось до 64-битной? Если нет, то поделитесь ссылью на торрент...

Декомпиляция 32 битной dll и компиляция в 64 битную
Доброго времени суток. Может кто сталкивался в задаче перевода 32 битной dll в 64 битную??? Есть...

Можно ли сменить базу с 32-битной версии на 64-битную?
Собственно, вопрос в теме. Создал в Access 2010 базу для заказчика, отправил - и оказалось, что у...

7
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
20.10.2015, 16:59  [ТС] 2
Надо же, я даже нашел прошлую тему с примерно этим же вопросом - гугл вывел. Я ее сам и создавал, оказывается... Но тогда там обсуждение закончилось на том, что меня попросили выложить саму базу. Скорее всего, так и сделаю. особых секретов там нет, база в принципе настроена для обработки текстовых файлов (редактирование, копирование в другую структуру папок и т.д.).

В приложенном архиве - сама база, а так же папка с обрабатываемыми ею файлами, и модуль архиватора, который используется в процессе работы.
 Комментарий модератора 
НА ВСЯКИЙ СЛУЧАЙ --УДАЛИЛА, РАЗБЕРЕТЕСЬ --ВЫЛОЖИТЕ СНОВА
0
646 / 99 / 11
Регистрация: 08.06.2015
Сообщений: 1,550
20.10.2015, 18:09 3
Пароль на почтовый ящик выложили в сеть ))) меняй быстрее
1
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,889
Записей в блоге: 4
20.10.2015, 18:36 4
ВИДИМО проблема в этих объявлениях
сама не сталкивалась

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public objFSO As New FileSystemObject    ' глобальная переменная для работы с файловой системой
 
'API-функция CharToOem. Объявление в области деклараций модуля
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
 
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, _
   ByVal hwndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
   ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
Private Declare Function apiShowWindow Lib "user32" _
    Alias "ShowWindow" (ByVal hWnd As Long, _
    ByVal nCmdShow As Long) As Long
2
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
20.10.2015, 21:49  [ТС] 5
Мда, это я протупил... перепутал папки, думал, что скидываю архив с тестовыми файлами левыми, а кинул рабочие... Спасибо, что удалили...

Добавлено через 45 минут
shanemac51, То есть опять же дело упирается в объявления апишных функций?.. Помнится, в моей старой теме меня уже mobile спрашивал, нет ли в базе как раз таки подобных вещей. И в той базе их не было, а вот в этой - пришлось использовать... Теперь бы узнать, как это можно переделать...
0
646 / 99 / 11
Регистрация: 08.06.2015
Сообщений: 1,550
20.10.2015, 22:20 6
Удалить код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
'API-функция CharToOem. Объявление в области деклараций модуля
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
 
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, _
   ByVal hwndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
   ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
Private Declare Function apiShowWindow Lib "user32" _
    Alias "ShowWindow" (ByVal hWnd As Long, _
    ByVal nCmdShow As Long) As Long
Добавлено через 1 минуту
И на открытие главной формы при открытии или запуске идет ссылка на функцию. Базу твою удалил имя не помню.((
0
Эксперт MS Access
26716 / 14396 / 3190
Регистрация: 28.04.2012
Сообщений: 15,782
20.10.2015, 23:12 7
Лучший ответ Сообщение было отмечено alvk как решение

Решение

Если Вы работаете только в 64-битной версии Access, то достаточно изменить обращение к апишным функциям по следующим правилам:
1. В объявление функции добавляется ключевое слово PtrSafe
2. Все типы переменных, обявленные Long должны быть объявлены как LongPtr. LongPtr это тот же Long, но уже 64-битный
3. Замена Long на LongPtr должна быть также для структур, необходимых для API-функций
Пример:
Visual Basic
1
2
Public Declare PtrSafe Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, _
    ByVal lpszDst As String) As LongPtr
В случае когда программа может работать как в 32-битной, так и 64-битной версиях, надо прибегнуть к условной (предпроцессорной) компиляции. Если вопрос касается только объявления АПИ-функций, то достаточно условия проверки константы компилятора VBA7
Visual Basic
1
2
3
4
5
#If Vba7 Then 
    Declare PtrSafe Function... 
#Else 
    Declare Function... 
#EndIf
В некоторых случаях проверки на Vba7 недостаточно и условная компиляция потребует проверки на константу Win64. Тогда предпроцесорная обработка будет иметь вид
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
#if Vba7 then 
'  Выполнение в VBA7  
     #if Win64 then 
     '  Код выполняется в 64-bit версии Microsoft Office 
        Declare PtrSafe Function...
     #else 
     '  Код выполняется в 32-bit версии Microsoft Office 
        Declare Function... 
     #end if 
#else 
' Код выполняется в версии 6 или более ранней 
Declare Function... 
#end if
5
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
21.10.2015, 08:19  [ТС] 8
mobile, Спасибо большое, буду пробовать... Правда, пробовать практически вслепую, т.к. у меня нигде нет доступной машины с 64-битной версией, чтобы проверить на месте.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2015, 08:19

Ошибка при переходе с 32-битной на 64-битную систему
Буквально вчера хотел перейти на 64 bit систему (windows 7), но во время установки выбило ошибку. ...

Изменение кодировки функции chr() с 7-битной в 8-битную
я писал компилятор под мою виртуалку. #фрагмент кода компилятора S = S + chr(int(str(s + s))) ...

Откуда можно скачать рабочую версию Delphi 7 на x64 версию win?
Не могу найти, помогите пожалуйста

Как будет себя вести код написанный под 32-битную ОС, при запуске под 64-битной
Это вопрос для профессионалов: Как будет себя вести код написанный под 32-битную ОС, при запуске...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.