• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access 日付データのテーブル上での不具合)

Access日付データのテーブル上での不具合

このQ&Aのポイント
  • Access日付データのテーブル上での不具合についての質問です。クライアントのデータベースをクリーニングしている際、日付型フィールドにデータが入っているのにも関わらず、連結フォーム上で表示した場合に不具合が生じます。同じテキストボックスなのに、クリックした時の反応がデータによって違い、一部のデータは正しく表示されない状態です。試した方法として、更新クエリやコードでの変換を試みましたが、改善されませんでした。修正フィールドのデータを更新するための良い方法はありますでしょうか。
  • Accessの日付データのテーブル上で不具合が発生しています。データベースのクリーニング中に、日付型フィールドに正しいデータが入っているにも関わらず、連結フォーム上で表示すると一部のデータが正しく表示されません。クリックした時の反応がデータによって異なり、一部のデータはデータのまま表示される問題が発生しています。更新クエリやコードでの変換を試しましたが、問題は解決しませんでした。該当するテーブル上のデータを修正するための有効な方法はありますか?
  • Accessの日付データのテーブル上で不具合が発生しています。データベースのクリーニング中に、日付型フィールドに正しいデータが入っているのにもかかわらず、連結フォーム上で表示するとデータによって不具合が生じます。同じテキストボックスなのに、クリックした時の反応がデータによって違い、一部のデータは正しく表示されません。更新クエリやコードでの変換を試しても問題は解決されませんでした。修正フィールドのデータを更新するための効果的な方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

ファイルの変換で不具合が生じることはありえますが、 ファイルの変換によって不具合が生じたのか、あるいは Access2000.mdbのファイルですでに不具合が生じて いたのかどちらなのでしょうか。いずれにしても (1) いちど、ファイルを新しいファイルにインポートして 確認してみる。 (2) ファイルの最適化をしてみる。 (3) 格納されているデータの型を調べてみる。 (4) 新しいテーブルにオートナンバー型のフィールドと 日付型のフィールドを設定し、その日付型のフィールドに 元のテーブルの日付をVBAでエラーが発生しないか確認する。 (5) テーブルの型、書式などの確認。 (6) フォームでの表示の設定の確認。 (7) コードによる表示の制御があるならばその確認。 などですかね。

jipang5054
質問者

お礼

ご返信が遅くなり申し訳ありません。 別件の仕事を対応することになり、一旦この件は保留となりました。 恐らくご指摘の内容を検証すれば解決するかと思います。 諸々と教えて頂き大変ありがとうございました。 また躓いた時にはご質問させていただきます。 ありがとうございました。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。 日付データを関数で変換するときに日付データに 不具合がある場合は処理をスキップするように、  On Error Resume Next  rs.MoveFirst  Do Until rs.EOF のように  On Error Resume Next を追加しておいてください。これで日付データに 不具合がある場合はmy日付フィールドに書き込まれず 空白になります。 なお、 Set rs = db.OpenRecordset("T日付", dbOpenDynaset) の"T日付"というのはテーブル名です。実際に合わせて変えて ください。

jipang5054
質問者

補足

お忙しいところご回答ありがとうございます。 まず、アクセスのバージョンですが、勘違いしておりました。 Access2000.mdbのテーブルをAccess2013.accdbで変換し、 現在は365にて色々と修正を行っております。 教えて頂いた方法を試しましたが解決できませんでした。 仰る通り、ファイルそのものまたはテーブルそのものが壊れているのでしょうか。 他に方法をご存知であれば教えて頂ければ幸いです。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

日付型フィールドならばテーブルに入力した時点で エラーが表示されると思いますが。 それと、 Access:2013 ⇒ Office365 と、なっていますがこの変換でデータの不具合が生じた、 ということではありませんでしょうね? たとえば、テーブルに新しい日付型のフィールドを追加して そこに日付フィールドのフィールドのデータを入れてみて 確認してみてはどうでしょう。 新しい日付型のフィールドの名前を「my日付」とします。 以下を標準モジュールに貼り付け、Subプロシージャを 実行してみてください。 一応、元のテーブルは別途保存しておいてください。 以下のモジュールではDAOを使っています。 Function returnDate(ByVal myDate As Variant) As Date  Dim varDate As Variant   varDate = CDate(Format(CStr(Format(CStr(myDate), "yyyymmdd")), "@@@@/@@/@@"))   returnDate = myDate End Function Sub test52()  Dim db As DAO.Database  Dim rs As DAO.Recordset  Set db = CurrentDb  Set rs = db.OpenRecordset("T日付", dbOpenDynaset)  rs.MoveFirst  Do Until rs.EOF   rs.Edit   rs!my日付 = returnDate(rs!日付)   rs.Update  rs.MoveNext  Loop  rs.Close: Set rs = Nothing  db.Close: Set db = Nothing End Sub 見ればわかると思いますが、関数returnDateは日付データを 一旦テキスト型に変換し、再度日付型に変換して、テーブル に格納します。 当該のフォームに変換したmy日付を表示して、それでも データに不具合があるのであれば、ファイルの損傷や フォームの表示設定に問題があるのかもしれません。

  • ganbaro
  • ベストアンサー率45% (43/94)
回答No.1

異なっているかもしれませんが、osの日付設定で表示を西暦でなく、和暦にされていませんか? pcの日付表示はどうなっていますか?

jipang5054
質問者

補足

お忙しいところご回答ありがとうございます。 PCの日付設定は「西暦」になっております。 例えばフォーム上に3データを表形式に表示しそれぞれクリックした場合、 NO 日付 1  2019/11/01 2  令01年11月 3  2019/11/03 となり、同じテキストボックスでも2だけがクリックしても変わらない現象です。 データそのもの型が違うと推測しております。 お気づきの点がございましたら教えてください。

関連するQ&A