Accessの移行アシスタントは、デフォルトでは、新しいdatetime2列にアップサイズされます。
デフォルトの(レガシー)SQLドライバをAccessで使用し続けるか、Crystal ReportsをSQL Serverのクライアントとして使用する場合、古いドライバを使用すると、そのような列はすべてSTRINGSとして返されます。私はこれを示唆している
2の解決策は以下のとおりです。
ワン:再び 再移行するデータやテーブルが、あなたの前にアップサイズ古い日時書式を使用するようにSSMAのフィールドマッピングを変更データdatetime2とは対照的です。
2つ: レガシーODBCドライバを使用しないでください。ネイティブの10または11のドライバを使用すると、datetime2の列はODBCドライバで実際の日付時刻の列として返されます。これが示唆している唯一の欠点は、これらのネイティブSQL 10または11のドライバがデフォルトではインストールされていないことです。そのため、SQL Serverに接続するAccessフロントエンドの場合、しばしば古いレガシードライバを使用します。そして公平であるためには、古いレガシーSQLドライバは非常に古く、最近ではネイティブの11ドライバを使用することが一般的に推奨されています。
ネイティブの10または11のドライバを使用してこの問題を修正する場合、これらのドライバを各ワークステーションにインストールする必要があります。したがって、クリスタルで新しいSQLドライバを使用すると、この問題が解決されます。
SQL Server側では、各クエリでdate/time2列を古いdatetime形式に「変換」するために、カスタムクエリとビューの作成を開始するのは愚かなことでしょう - 私はこのような提案をここでは無視します。 CRはdatetime2を動作させて使用することができますが、古いSQLドライバを使用する場合は使用できません。単純にネイティブドライバを採用すれば、この問題は解決します。
レポートを修正します。データベースを破壊しないでください。これは、Crystal Reportsの100%バグ、またはレポート自体の問題です。 Crystal Reportsが8年間存在するデータ型を処理できないと考えるのは難しいですが、あなたはおそらく非常に古いCRバージョンを使用していますか? –
@PanagiotisKanavosレポートのdatetimeフィールドとして必要です。それらはそのままでは文字列に変換され、式や書式に問題を引き起こします。 – David
私が言ったように、現在のCRバージョンは 'datetime2'を理解できないと信じることは非常に非常に難しいです。 *書式*文字列への変更、またはフィールドタイプへの変更が必要な場合がありますが、それはそれでなければなりません。どのバージョンを使用していますか? –