Переход от MDB к ADPИсточник: c85cemirssi
1. Подготовка таблиц и запросов к экспортуПросмотрите внимательно все имеющиеся таблицы и в случае отсутствия в них первичного ключа обязательно создайте его. Если импорт / экспорт прошел криво - и первичный ключ не был перенесен - создайте его вручную. Таблицы без первичного ключа на MSSQL - необновляемые, т.е. вы не сможете ни поместить туда данные, ни их редактировать в режиме таблицы из Аксесса + множество других проблем (проблемы с синхронизацией данных) После переноса таблиц добавьте во все таблицы поле с типом timestamp Наличие этого поля и первичного ключа принципиально меняет методику обновления данных объектами ADO (которые используются в.т.ч и аксессом) что решает некоторые проблемы и существенно сокращает сетевой траффик команд обновления данных.(однако в некоторых случаях наличие этого поля в источнике данных формы может привести к сложностям типа "Конфликт версии данных" - данные изменены другим пользователем) Проверьте что во всех таблицах где стоит это ограничение данные не содержат пуcтых полей (в аксессе такое бывает) при экспорте будет ошибка - в зависимости от выбранного инструмента экспорта либо строка таблицы не будет перенесена, либо не будет экспортировано ограничение, либо программа не закончит перенос. Это наиболее часто встречающаяся проблема проверьте размер связанных полей - если связь по текстовому в одной таблице размер 50 а в другой 100 то связь в MDB работает , но при экспорте будет ошибка. По возможности следует избегать связей по текстовым полям так как это в любом случае приводит к потере быстродействия, как правило, всегда можно добавить в каждую из связанных таблиц числовое поле и сделать связь именно по нему Проверьте значения в полях таблиц имеющих тип дата. Дата не должна быть раньше чем 1 января 1900 года. Проверьте что если поле типа bit и допускает нулл в таблице должно присутствовать поле таймштамп. Иначе при использовании связки сервера + MDB c линкованными таблицами будут проблемы с обновлением данных.
Имена таблиц и запросов Примечание: сведения об ошибках при импорте данных собраны из различных источников, при использовании мастеров импорта и экспорта SQL-Сервера и MSACCESS с установленными различными сервис-паками. В любом случае обязательно используйте последние версии программного обеспечения c установленными сервис-паками.
2.Что именно придется переделыватьЕсли Вы привыкли использовать функцию =SUM() для отображения итогов: этот подход неприемлем в проектах ADP - заменой ему может послужить программное вычисление итоговых значений Решение1 Решение2 Примечание: Итоги в формах могут и работать MSAccess XP и MSAccess 2003 (с установленными последними версиями драйверов доступа к данным )- в простейших конструкциях - без возможности прменения фильтра формы В проектах обновление формы методом Refresh проявляет себя так же как и Requery. RecordSource:
Это не будет работать потому что запросы в ADP выполняются на стороне сервера. сервер представления не имеет о Forms!Главная!... Есть несколько вариантов решений:
Свойство RecordSource: "Select * from Mytable where ID = ? and uid = ?" свойство InputParameters: " ? = ID, ? = UID " RecordSource: Select * from Mytable where DateFrom > @Forms![ФОРМА]![ДАТАС] and DateFrom <= @Forms![ФОРМА]![ДАТАПО] DAO
ОтчетыКлиентский фильтр отчета Следует обратить внимание, что клиентский фильтр отчета влияет на число отображаемых записей, но не влияет на значения Итоговых полей в примечаниях, разделов полученных с помощью агрегатных функций : =Sum(), =Count() и.т.д. Рекомедую вынести фильтр в условие источника данных отчета |