• 締切済み

Access SQLを使ったソートがずれる

Access2003で以下のfunctionを組みました。 ************************************* Dim SQL As String Dim strList As String SQL = "" strList = "" 'サブテーブルの削除 SQL = "DELETE * FROM SUB_T" CurrentProject.Connection.Execute SQL SQL = "INSERT INTO SUB_T SELECT Master_T.* FROM Master_T WHERE " With Forms!SEARCH! '検索条件がnullの場合 If IsNull(.CODE_SRH) Then SQL = "INSERT INTO SUB_T SELECT Master_T.* FROM Master_T" End If 'コードの条件 If .CODE_SRH <> "" Then strList = "Master_T.CODE Like '" & .CODE_SRH & "%'" End If End With SQL = SQL & strList & " ORDER BY (val(CODE))" CurrentProject.Connection.Execute SQL ************************************* Master_T テーブルの CODE は テキスト型 内容は以下のとおり "001","あいうえお",.... "003","さしすせそ",.... "002","かきくけこ",.... "013","GHI",.... "011","ABC",.... 検索条件Nullの場合SUB_T テーブルには "001","あいうえお",.... "002","かきくけこ",.... "003","さしすせそ",.... "011","ABC",.... "013","GHI",.... とインサートされるはずですが、何回か実行すると・・・・ "003","さしすせそ",.... "011","ABC",.... "013","GHI",.... "001","あいうえお",.... "002","かきくけこ",.... こんなだったり "011","ABC",.... "013","GHI",.... "001","あいうえお",.... "002","かきくけこ",.... "003","さしすせそ",.... このような感じに並びます。 試しに、明示的に"ORDER BY (val(CODE)) ASC"にしても また降順ではどうかと思い、"ORDER BY (val(CODE)) DESC"にしても 同じ現象が出ます。 コードの条件を入れても同様な現象が出ます。 何が原因なのかさっぱり分かりません。 Accessのどこかを確認すべきか、VBAを見直すべきなのか ご教授いただきたいです。

みんなの回答

  • w_HIRO_w
  • ベストアンサー率47% (9/19)
回答No.2

もし、プログラムソースの問題でなければですが、Access2003を再起動してみては?必要であれば、Windowsの再起動も! 過去にAccessでツールを作成していて、コードと違った動作をする事象がありました。 「コーディング->動作確認->コーディング・・・」のサイクルを何度か繰り返すと度々起きてました。 ですが、Access若しくはWindowsを再起動することで回復してました。 運用時には”おかしい”といった報告はなかったので、開発時に起きる現象と認識して仲良く付き合って作業を進めていましたよ。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

INSERT INTO .. SELECT .. ORDER BY で挿入時の並び順を指定しても、挿入対象のテーブルからデータを取得する際にORDER BY指定しなくては並び順は不定です。 ADOをお使いのようですが、RECORDSETを取得するところでORDER BY指定がされているか確認して下さい。

関連するQ&A