- ベストアンサー
テキスト型数字の置き換えの方法
Access2007で民宿の管理ソフトを作っています。 今まで商品コードをテキスト型で1から番号を振っていましたが 商品数が多くなってくるときちんと番号順に並ばなくなってくるのに気がつきました。 例:1,10,11・・・19,2,20,21・・・29,3,30,31・・・ そこで遅ればせながら1から9までのコードを01から09に振り替えようと思っています。 商品テーブルのプロパティで変更すれば今後の運用には問題ありませんが 今まで積み重ねてきたデータとの整合性が無くなってしまうので頭を痛めてます。よい知恵をお貸しください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
商品コードを昇順で表示させるものがいくつあるか不明ですが、 少なく且つクエリをかませてある場合、商品コードの列を val(商品コード)という関数を使い、文字データを数値データに 変換させ、昇順でならばせてはどうでしょうか? 多分複数のテーブルに商品コード入力されているものと推察され、 プロパティも全てのテーブルを変える必要がありますので これが一番簡単かと思います。
その他の回答 (2)
- tag1701
- ベストアンサー率54% (67/123)
>商品コードがテキスト型なのでシングルコーテーションで囲っていますが この場合どうなるのでしょうか 断言は出来ませんが、請求明細入力フォームという表現ですので 明細を入力するプログラムだと推察いたします。 この部分では並べ替えの記載が無いので(Order By関数)、 いじる必要はありません。 又このフォームを動かす基となるテーブルの商品コードはで 数値に直す箇所があるとすれば商品コード検索?部分がある場合の VBAでOrder By関数のある箇所のみval(商品コード)記述に変わる と思われます。 最初に回答したものは商品コード一覧表みたいなレポート作成 の場合、select [商品コード],[商品名] from 商品データ order by [商品コード]のケースで、order by val([商品コード]) でどうでしょうか みたいなQ&Aでした。 (内容100%理解してないので、質問と一致して無い場合 申し訳ありません)
お礼
一応民宿の管理システム、と言うことで 顧客フォーム、請求書発行のため宿泊料、飲食の明細を計算する サブフォームを含む請求フォーム、それを元にした請求書発行レポートを 解説書片手にずぶの素人が5年ほど前に原型を作りました。 なにせ素人仕事なだけに時間が経つとここがおかしい、もっとこうしたい との思いが募るようになり今回改めて見直してみようと思ったわけです。 悲しいかな専門的知識があるわけでなし、年も50を大きくオーバーして 頭がついて行かなくなりました。 私の方こそ的確な質問ができなく申し訳ありません。 Order By関数確認してみましたが「レコードの並べ替え」とはちょっと違うように思えます。 まぁ今のままでも使えてますのでしばらくはこのまま行こうかと思います ありがとうございました。
- 30246kiku
- ベストアンサー率73% (370/504)
リレーションシップは設定されていますか。 リレーションシップで「参照整合性」「フィールドの連鎖更新」が設定されていれば、 一側を変更すると、多側も更新されます。 ※試される時にはバックアップは忘れずに
お礼
参照整合性が設定できないようです。
お礼
ご回答ありがとうございます。 商品コードを記入しているテーブルはそうないんですが 請求明細入力フォームの フォーカス喪失時に ”Private Sub 商品コード_Exit(Cancel As Integer) If Not IsNull(商品コード) Then 商品名 = DLookup("商品名", "商品", "商品コード='" & 商品コード & "'") 単価 = DLookup("単価", "商品", "商品コード='" & 商品コード & "'") End If” の記述を入れてます。 商品コードがテキスト型なのでシングルコーテーションで囲っていますが この場合どうなるのでしょうか