Расширение доступа к SQL UK и США форматы дат

Я пытаюсь подняться с Access 2010 до SQL Server 2008. Все работает, кроме одной таблицы; таблица создается в SQL Server, но данные не увеличиваются. Причина в том, что один столбец содержит дату, которая хранится в Access в формате Великобритании (например, 31.12.2013). Я знаю, что это правда, потому что а) экспорт в текстовый файл также не выполняется с этим столбцом даты, и в сообщении об ошибке явно говорится, что это из-за "даты вне диапазона", но более конкретно, б) если я удалю это столбец из Access, и сделать увеличение, данные будут увеличены. Таким образом, нет никаких сомнений в том, что проблема, по сути, столбец даты.

И да, я знаю о SSMA (SQL Server Migration Assistant), который, похоже, эволюционировал из-за недостатков мастера изменения размера. SSMA, кажется, не вариант для меня. Я работаю на 64-битной машине с Windows 7, и когда я пытаюсь пойти по этому пути, я попадаю в бесконечный цикл "у вас нет подходящей версии SSMA / Access" и т. Д.; "вам нужно установить 64-битную версию Office" и т.д.; это не вариант.

Раздражает, что мастер по увеличению размера не может обработать дату в Великобритании, но, похоже, это так. Поэтому я пытаюсь найти обходной путь. Я не эксперт по доступу. Идеи, которые приходят мне в голову, включают в себя:

  • экспортировать таблицу в текстовый файл с разделителями табуляции, затем использовать SSIS для ее миграции и выполнить преобразование производного столбца для получения данных

  • создание вычисляемого поля в таблице в Access, получение данных в новый столбец и удаление исходного столбца. (Но, что также досадно, это тоже не работает; когда я следую инструкциям MS и он говорит: "Access отображает построитель выражений", ну... Access не отображает построитель выражений.

Любые предложения приветствуются, спасибо

1 ответ

Я придумал уродливый ручной взломать. Без сомнения, есть много более изящных программных решений, о которых знали бы эксперты VBA, но сейчас у меня есть более крупная рыба, и есть только одна колонка дат, которая доставляла мне проблемы. Но я кое-что узнал о Access. Я поделюсь взломом здесь для того, что это стоит.

  • Построитель выражений не появится, потому что это старый (Access 2000) файл.MDB. Я преобразовал его в формат.accdb ("Сохранить и опубликовать в Access 2010") . Затем конструктор выражений становится доступным для вычисляемых полей в таблице.

  • Я создал четыре вычисляемых поля; одно для каждой части даты и одно окончательное текстовое поле для их объединения; затем я создал пятый (текстовый) столбец и вручную скопировал значения в представлении таблицы данных (я говорил, что это был взлом) . Выражения для вычисляемых столбцов были (скажем, первые три вычисляемых столбца называются "TheYear", "TheMonth" и "TheDay"):

Год ([TheBritishDate])
Месяц ([TheBritishDate])
День ([TheBritishDate])

Затем выражение объединяющего столбца, представляющее собой вычисляемый текстовый столбец, с парой выражений IIF для работы с однозначными значениями (поскольку в Access нет функций PAD):

[TheYear] + '-' + IIF (Len([TheMonth])=2,[TheMonth],'0'+[TheMonth])+'-'+IIF (Len([TheDay])=2,[TheDay],'0'+[TheDay])

Это создает текстовое поле с форматом даты, например SQL: например, "2013-12-31".

Затем я просто выбрал столбец в таблице, Ctrl-C и Ctrl-V в новый пустой текстовый столбец. Затем удалите исходный ошибочный столбец и вычисленные столбцы. Конечным результатом является правильно отформатированный (текстовый) столбец, который затем можно увеличить без ошибок и по желанию манипулировать в T-SQL.

Другие вопросы по тегам