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を見直すべきなのか
ご教授いただきたいです。
お礼
有難うございます。 貼り付けて頂きましたURLの内容を参考にさせて頂きました。 条件が100件以上あり、基データも最大500万件超える場合があり(現在はテストデータですので件数は少ないですが)PCのソフトを学ぶタイミングを作れなく本を見たりネット検索をしたりして作成しております。 件数が膨大ですので、本来はもっと別な物を使った方が良いのでしょうが、中々社内で思う様に出来ないため難儀しております。 こんなレベルの低い人間ですので、検証すべき事にも気が付きませんでした。 まだ記述頂きました内容での変更は行えておりませんが、今一度見直しながら勉強したいと思っております。 今後も質問させて頂く事があるかと思いますが、宜しくお願い申し上げます。