Перехід від MDB до ADP, MS Office, Програмні керівництва, статті

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 () і.т.д.

    Рекомедую винести фільтр в умова джерела даних звіту

  • Схожі статті:


    Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

    Коментарів поки що немає.

    Ваш отзыв

    Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    *

    *