2009-09-29 1 views
0

У меня есть эта старая MS Acceess db, полная полезных данных, но более новая версия программного обеспечения требует более новой версии db (новее, как различия в дизайне db и некоторых исправлениях). С Sql-сервером или вообще нет проблем, я бы написал сценарий, я бы обновил db. С доступом У меня проблемы, когда я пытаюсь написать скрипт сам и когда я использую инструменты для генерации скриптов.Возможно ли обновление старой базы данных доступа MS со сценарием?

Пожалуйста, помогите.

+0

Является ли эта операция одноразовой или что-то, что должно выполняться часто? Если первое, то я никогда не находил, что стоит времени, чтобы скрипт что-то, что я могу сделайте это вручную, потому что для написания кода и проверки его требуется гораздо больше времени, чем просто сделать изменения. –

ответ

0

Почему вы не подключаетесь к базе данных доступа ole другим инструментом для извлечения данных? Excel может выполнить эту работу, и я думаю, что многие другие (более или менее) бесплатные инструменты могут передавать все эти данные на ваш любимый сервер.

+0

Кажется, вопрос подразумевает, что данные должны оставаться в хранилище данных Jet/ACE. –

1

Compare'Em Эта утилита создаст необходимый VBA (или DDL, если вы заплатите ему 10 долларов США), чтобы создать различия между двумя бэкэндами. Хотя у него есть свои причуды, он делает достаточно хорошую работу. Я использую его все время для своих приложений с «термоусадочной пленкой».

Я сохраняю номер версии в определенном поле в таблице и выполняю соответствующий код, когда они сначала ссылаются на BE MDB, чтобы обновить BE MDB до новой файловой структуры. Каждое обновление версии находится в собственной подпрограмме. Я использую следующее, чтобы обновить номер версии до следующего номера версии.

' Update VersionNumberData on table 
strSQL = "UPDATE zDataVersionNumberApp IN '" & strDatabasePathandName & "' SET zDataVersionNumber = " & _ 
    CurrentVersionNumber 
CurrentDb.Execute strSQL, dbFailOnError 

Конечно после запуска часть пути кода через создание новых таблиц, полей, индексов и отношений, то я запускать различные запросы обновления/вставки для очистки данных. Затем продолжите выполнение сгенерированного кода для удаления старых полей/таблиц. Синтаксис запросов update/insert с использованием предложения IN немного сложный, поэтому я включаю пример. Этот пример включает в себя перемещение типизированного имени службы технической поддержки в другую таблицу, чтобы затем система могла использовать поле со списком для технологии обслуживания назначьте технологии почасовые и так далее.

' Append records to ServiceRecords table 
strSQL = "INSERT INTO ServiceTech (stServiceTech) " & _ 
    " IN '" & strDatabasePathandName & "' " & _ 
    "SELECT srServicePerson FROM ServiceRecords " & _ 
    " IN '" & strDatabasePathandName & "' " & _ 
    "GROUP BY srServicePerson " & _ 
    "HAVING (srServicePerson Is Not Null);" 
CurrentDb.Execute strSQL, dbFailOnError 
Смежные вопросы