6

アプリケーションを MS-Access FE および BE から MS-Access FE および SQL Server BE にアップサイジングしています。SSMA Access の「アップサイジング」ツールを使用してすべてのテーブルを Access から SQL に変換し、ODBC を使用して Access FE で SQL テーブルをリンクしました。

私のアクセス データベースでは、一部のテーブルに SQL Server の datetime(0) 列に変換された DateTime 列がありました。Access でこれらのテーブルをリンクした後、SQL サーバー BE ではこれらの列が datetime2(0) 列であっても、Access はこれらの列をテキスト列として認識します。

これは、日付形式で機能していたクエリがテキスト形式では機能しないため、問題を引き起こします。Access で datetime(0) フィールドが datetime 値として扱われるように、テーブルをリンクする方法はありますか?

4

5 に答える 5

8

類似の問題: 解決済み

DATETIME2 データ型のフィールドを持つ SQL サーバーがあり、Win7 の MS Access でリンク テーブルとして ODBC 経由で接続しています。

同じデータベースを使用して 2 つの異なるワークステーションから接続する場合、一方のデータ型は「日付/時刻」、もう一方のデータ型は「短いテキスト」でした。

解決策: リンク テーブルは 2 つの異なる DSN ファイルを使用して確立されたことが判明しました。ODBC リンクを介して「日付/時刻」データ型を使用するには、クライアント 11.0 を使用する必要がありました。

インストールしたドライバーを確認するには:

From the start menu search for "ODBC"
Select "Data Sources (ODBC)".  
Click on the "Drivers" tab 

インストールしたドライバーが表示されます。私は3を持っています。

SQL Server                     6.01.7601.17514
SQL Server Native Client 10.0  2007.100.5500.00
SQL Server Native Client 11.0  2011.110.6020.00

SQL Server バージョン 6 は Win7 によってインストールされ、Windows Update によって更新されると思います。これだけあれば、リンクされたテーブルを介して DATETIME2 SQL データ型から TEXT のみを取得できます。

ネイティブ クライアントは、それぞれ SQL Server Management Studio 2008 および 2012 によってインストールされました。

https://www.microsoft.com/en-us/download/details.aspx?id=36434から SQL Server Native Client 11.0 をダウンロードしてインストールできます 。

于 2016-07-21T19:45:03.070 に答える
7

TechNetによると、新しいデータ型 datetime2 のサポートは限定されています。可能であれば、日時を使用します。

于 2010-11-19T20:28:51.303 に答える
1

このページにたどり着いたのと同じ問題に遭遇しましたが、解決策を見つけました。

解決策:SQLサーバーのdatetime2を日付時刻に変換すると、アクセスにより列が日付フィールドとしてすぐに表示されます

テーブルには既にデータがあるため、データ型を変更するだけではいけないことに注意してください。新しい列の日時型を追加し、データをコピーし、元の列を削除し、名前を変更する予定です

精度を確認する方法: SQL Server、datetime、datetime2、date に 3 つの列を持つテーブルを作成し、アクセスからリンクしました。datetime のみがアクセスの日付フィールドとして表示され、他の 2 つはテキストとして表示されました

于 2013-02-01T02:34:56.853 に答える
1

SSMA for Access は、SQL Server で無効な値を持つ日付/時刻フィールドをテキストに変換します。SSMA を実行して変換を試みると、問題が通知されるので、実際の変換の前にデータをクリーンアップできます。

結果をプレビューせずにアップサイジングを行うため、SSMA ウィザードをスキップする必要があります。

于 2010-11-21T22:02:16.660 に答える
-2

通常、アップサイジング ウィザードの前に日付を確認する必要があります。ユーザーは、Access の日付フィールドで受け入れられても SQL Server でエラーが発生する「ばかげた」日付を入力する傾向があります。"BETWEEN 1/1/1930 and 1/1/2020" のような妥当な範囲外の日付でテーブルをクエリし、アップサイジング ウィザードを再起動する前にそれらの日付を修正してみてください。
また、使用していないが良さそうな製品を見つけました: http://www.upsizing.co.uk/features_translate.aspx

于 2010-11-19T20:34:15.863 に答える