Разработка баз данныхРазработка баз данных

 Программирование  Программы  Ссылки  Обратная связь
     
. . .
. . .
startpage.htm Новости
about.htm О сайте
fileformat.htm I. Выбор технологии
clientserver.htm Преимущества клиент-серверной технологи
prepare.htm Переход от MDB к ADP
upsizing.htm Инструменты переноса данных
setupserver.htm Выбор версии и установка сервера
selectclient.htm Выбор версии MSAccess
formsreports.htm II. Формы, Отчеты MSAccess
queries.htm Запросы / ADO
inputparameters.htm Передача входных параметров
data_drivers.htm Библиотеки доступа к данным
forms.htm Формы MSAccess
requery.htm Обновление данных в форме
updatableform.htm Обновляемость данных в форме
dialogform.htm Остановка кода пока открыта форма
formsaverecord.htm Сохранить текущую запись
formgotorecord.htm Переход по записям формы
sumform.htm Итоги в формах
serverfiltersample.htm Пример серверного фильтра
formerror.htm Причина Ошибки #Error
menubarevent.htm Перехват нажатия на кнопку меню
woconditionalformat.htm Раскраска строк ленточной формы без условного форматирования
currrec.htm Выделение цветом текущей записи
subform.htm Подчиненные Формы
textboxenter.htm Ввод перевода строки
twimagelistbug.htm treview + imagelist + подч. форма
reports.htm Отчеты, общие рекомендации
report_input_parameters.htm Входные параметры
vbaprog.htm III. Программирование VBA
dbpic.htm Картинки в базе данных
binbmp.htm Двоичные данные картинки в поле таблицы базы данных
piclink.htm Хранение ссылок на файлы
picjpg.htm Бинарное содержимое JPG, Gif файла в бинарном поле базы данных
playsound.htm Воспроизведение звуков
tv.htm Функции для тривью
restartaccess.htm Перезапуск Аксесса
publicvariables.htm Передача и хранение параметров и настроек
collectionfunctions.htm Коллекция полезных функций
datepicker.htm Всплывающий календарик
menuhummer.htm Меню и тулбары
padeg.htm Склонение по падежам
comborowsource.htm Источник данных для поля со списком
filedialog.htm Диалог выбора файла / папки
sendmapi.htm Отправка почты (4 способа) + архивация
autoupdateclient.htm Автоматическое обновление клиентской части
licenses.htm  Устранение проблем с регистрацией компонентов
uncommented.htm Без коментариев
filetime.htm Время и дата файла
reportsample.htm Пример настраивомого отчета
adpformfilter.htm Серверный Фильтр by GEO
tempmdb.htm ADP: Временный MDB для временных таблиц
mutex.htm Запрет запуска нескольких копий приложения
translit.htm Транслитерация всего проекта.
updateident.htm Изменение счетчика
webinterface.htm IV WEB
accessinternet.htm Работа с аксесс через интернет
webupdate.htm Обновление приложения аксесс через интернет
msiecom.htm Программное управление веббраузером
sqlserver.htm MS SQL
mssqltransfer2.htm Перенос/копирование баз
mssqlperm.htm Adp проверка прав пользователя перед открытием формы или управление доступностью полей формы
mssqlcrossdatabase.htm  Межбазовые разрешения
tsqlcollection.htm T-sql коллекция
similarity.htm Сортировка по созвучности
esp.htm расширенные хранимые процедуры
mssqloptimizing.htm Оптимизация быстродействия
    

Переход от MDB к ADP




1. Подготовка таблиц и запросов к экспорту


  • Наличие первичного ключа
    Просмотрите внимательно все имеющиеся таблицы и в случае отсутствия в них первичного ключа обязательно создайте его. Если импорт / экспорт прошел криво - и первичный ключ не был перенесен - создайте его вручную.
    Таблицы без первичного ключа на MSSQL - необновляемые, т.е. вы не сможете ни поместить туда данные, ни их редактировать в режиме таблицы из Аксесса + множество других проблем (проблемы с синхронизацией данных)

  • Штамп Времени
    После переноса таблиц добавьте во все таблицы поле с типом timestamp
    Наличие этого поля и первичного ключа принципиально меняет методику обновления данных объектами ADO (которые используются в.т.ч и аксессом) что решает некоторые проблемы и существенно сокращает сетевой траффик команд обновления данных.(однако в некоторых случаях наличие этого поля в источнике данных формы может привести к сложностям типа "Конфликт версии данных" - данные изменены другим пользователем)

  • Пустые значения в полях недопускающих NULL
    Проверьте что во всех таблицах где стоит это ограничение данные не содержат пуcтых полей (в аксессе такое бывает) при экспорте будет ошибка - в зависимости от выбранного инструмента экспорта либо строка таблицы не будет перенесена, либо не будет экспортировано ограничение, либо программа не закончит перенос. Это наиболее часто встречающаяся проблема

  • Размерность связанных полей
    проверьте размер связанных полей - если связь по текстовому в одной таблице размер 50 а в другой 100 то связь в MDB работает , но при экспорте будет ошибка. По возможности следует избегать связей по текстовым полям так как это в любом случае приводит к потере быстродействия, как правило, всегда можно добавить в каждую из связанных таблиц числовое поле и сделать связь именно по нему

  • Диапазон дат
    Проверьте значения в полях таблиц имеющих тип дата. Дата не должна быть раньше чем 1 января 1900 года.

  • Битовые / логические поля
    Проверьте что если поле типа bit и допускает нулл в таблице должно присутствовать поле таймштамп. Иначе при использовании связки сервера + MDB c линкованными таблицами будут проблемы с обновлением данных.



    Имена таблиц и запросов
  • нельзя, чтоб название таблицы или запроса начиналось решеткой (#) (таблицы начинающиеся c # на сервере являются временными, некоторые средства переноса видимо об этом не догадываются)
  • нежелательно чтоб название таблицы начиналось цифрами
  • не рекомендую использовать русские названия таблиц и запросов (возможны проблемы при реализации конкретных клиентских программ)
  • не допускается использование кавычек в названиях

    Примечание: сведения об ошибках при импорте данных собраны из различных источников, при использовании мастеров импорта и экспорта SQL-Сервера и MSACCESS с установленными различными сервис-паками.

    В любом случае обязательно используйте последние версии программного обеспечения c установленными сервис-паками.




    2.Что именно придется переделывать



  • Итоговые поля на формах
    Если Вы привыкли использовать функцию =SUM() для отображения итогов:
    этот подход неприемлем в проектах ADP - заменой ему может послужить программное вычисление итоговых значений Решение1 Решение2

    Примечание: Итоги в формах могут и работать MSAccess XP и MSAccess 2003 (с установленными последними версиями драйверов доступа к данным )- в простейших конструкциях - без возможности прменения фильтра формы

  • Обновление данных на форме методом Refresh
    В проектах обновление формы методом Refresh проявляет себя так же как и Requery.

  • В запросах проектов ADP нельзя указывать условие так как это делалось в MDB:

    RecordSource:
    "Select * from Mytable where ID = Forms!Главная!ID"  

    Это не будет работать потому что запросы в ADP выполняются на стороне сервера. сервер представления не имеет о Forms!Главная!...

    Есть несколько вариантов решений:
  • программно вычислять и задавать строку запроса:
      Me.Подчиненная.Form.RecordSource = "Select * from Mytable where ID = " & me.ID 


  • Использовать в качестве источника данных хранимую процедуру с параметрами подробнее

  • Использовать знак вопроса в качестве параметра к источнику данных и указывать значение в свойстве входные параметры
    Свойство RecordSource: "Select * from Mytable where ID = ? and uid = ?"
    свойство InputParameters: " ? = ID, ? = UID "
  • Задать источник данных следующим образом:
    RecordSource: Select * from Mytable where DateFrom > @Forms![ФОРМА]![ДАТАС] and DateFrom <= @Forms![ФОРМА]![ДАТАПО]

    DAO
    Лучше отказаться от DAO. Замена для него ADO + ADOX.
    рекордсет переделывают так:


     ' dao должно быть прописано в references - ссылках (свойства редактора VB)  
      Dim rst Аs DAO.Recordset Set rst = currentdb.openrecordset "tablename"  
      rst.edit  
      rst!field1="string"  
      rst.update  
      rst.close  
      set rst = Noting  
      
     
     'adodb должно быть прописано в references - ссылках (свойства редактора VB)  
    Dim rst Аs New ADODB.Recordset   
    rst.open "tablename", CurrentProject.Connection, adOpenKeyset, adLockOptimistic   
     ' для начала используйте такую конструкцию она обеспечивает 
    наибольшее число операций над рекордсетом
    ' rst.edit - не требуется rst!field1="string" rst.update rst.close set rst = Noting


    Отчеты


    Клиентский фильтр отчета

    Следует обратить внимание, что клиентский фильтр отчета влияет на число отображаемых записей, но не влияет на значения Итоговых полей в примечаниях, разделов полученных с помощью агрегатных функций : =Sum(), =Count() и.т.д.

    Рекомедую вынести фильтр в условие источника данных отчета
  •  
    . . .
    . . .
    © 2000 - 2009 Алексей Козин эта вебстраница является зеркалом сайта www.msdatabase.ru Рейтинг@Mail.ru
    Hosted by uCoz