- 締切済み
Access 指定項目のみの削除
Accessのレコード削除についてです。 例えば商品テーブルに数値型のID(主キー)、テキスト型の商品名、テキスト型の産地の3カラム構成のテーブルがあったとします。 レコード削除の場合、Excelでいうと行削除のように該当IDの行に含まれる情報をすべて削除すると思うのですが、 これを例えばID番号は残し、商品名と産地のみ削除する…のは可能なのでしょうか。 ちなみに削除を行うのはテーブル上ではなく、新規レコード追加・編集ができる入力用のフォームからボタン操作で行いたいです。 また、サブとしてテーブルとソースを連結させた一覧表示できるフォームにも反映させたいです。→現状は規定値の0が表示されるため、データがなくなった場合0ではなく新規作成時に振られるID番号と同じ1 を表示させたいのですが、なかなかうまくいかず… ぜひご教示ください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
回答№1です。その後進展しましたか プロパティーが多すぎて閾が高いですね プロパティーには全て規定値あり、規定値のままだとExcelの同じような表が作成できますのでレコードの追加、変更、削除はできます 1.商品テーブルに数値型のID(主キー)、テキスト型の商品名、テキスト型の産地の3カラム構成のテーブルがあったとします。 レコード削除の場合、Excelでいうと行削除のように該当IDの行に含まれる情報をすべて削除すると思うのですが、 これを例えばID番号は残し、商品名と産地のみ削除する…のは 可能なのでしょうか。 はい可能です。ただし商品名、産地の値要求のプロパティーが 規定値の「いいえ」に定義されていることが必要です 2.ちなみに削除を行うのはテーブル上ではなく、 新規レコード追加・編集ができる入力用の フォームからボタン操作で行いたいです。 はいマウス操作で大丈夫です。 テーブル、クエリ、フォームのいずれでも規定値で可能です 3.また、サブとしてテーブルとソースを連結させた一覧表示できるフォームにも反映させたいです。 →現状は規定値の0が表示されるため、データがなくなった場合0ではなく新規作成時に振られる ID番号と同じ1を表示させたいのですが、なかなかうまくいかず… はい、添付図は商品マスターテーブルのM_商品です。 最初のフィールド名がIDとなっていますね、左端の🔑マークが 主キーのしるしです。 データ型はオートナンバー型ですね、Accessにお任せで、 手入力変更できるものではありません
- kkkkkm
- ベストアンサー率66% (1734/2604)
> これを例えばID番号は残し、商品名と産地のみ削除する… 更新クエリで ID番号の抽出条件を Like "*" として 商品名と産地のレコードの更新を Null としたら 商品名と産地のフィールドはそのままで、商品名と産地の全てのデータだけが削除されます。 > サブとしてテーブルとソースを連結させた一覧表示できるフォームにも反映させたいです テーブルとソースを連結とはなんなのかとか、現状は規定値の0が表示とかも、意味が分かりません。
- tamu1129
- ベストアンサー率58% (1301/2234)
>現状は規定値の0が表示されるため、データがなくなった場合0ではなく新規作成時に振られるID番号と同じ1 これも意味がよくわかりません データベースのテーブルには過去に入力したデータが保存されているので、新規データ入力用のフォームから新たにデータを入力したとしてもそのデータはテーブルに入力されている次のレコードの部分にデータが格納される事になります よって新規入力といっても1になっている事は無いと思います まっさらなテーブルにデータ入力する為のフォームから最初にデータを入力する時にはテーブルにデータは無いのですから当然ID番号は0になっています これを1にいたいなら新規入力用フォームのIDの部分をテーブルとは非連結として行うか、新規入力用のフォームのベースをテーブルではなくクエリにして、商品名か産地を入力したタイミングでフォームをリクエリさせる動作を行えばIDは1の数値が入るようにはなります 新規入力用のフォームで1を表示させてデータ入力させたとしても実際にデータが格納されるテーブルのIDのフォームは主キーになっているので、それまでにIDが1になっているレコードがすでにある状態ならエラーが発生するだけの動作になります どうも言っている発言からもAccessとExcelを同じ物としてとらえているように思えます Accessをうまく使うようになるのに重要なのはクエリをうまく使えるかどうかです 特にExcelと同じような感覚で使いたい場合には、テーブルを基にしたフォームを使うのではなく、クエリを基にしたフォームを使って利用するようにした方がいいですよ
- tamu1129
- ベストアンサー率58% (1301/2234)
AccessはデータベースソフトでExcelとは違います混同して理解してしまうと今回のように混乱してしまいますよ テーブルはデータを格納させる基本的な構造を作る物になります 早い話がデータベースの場合作ったテーブルのカラムの部分は追加する事はあっても、削除するなんて事は発生しないと思うのですが 削除させるような事が起こるなら最初に作成したテーブルの構造自体に間違いがあると思います 今作成したテーブルに10件のデータが入力済になっているとします 今言っている事はこの状態のカラム(Accessではフィールドと呼びますので今後はフィールドと言わせてもらいます)の商品名と産地名のフィールドを削除したいという事ですよね? それを行うとそのテーブル構造から2つのフィールドが削除される事になるので入力済のデータの商品名と産地名の部分も削除されてしまいますし、今後そのテーブルを使おうとしても商品名と産地名のフィールドは消失してしまっているので新規に入力するフォームでも商品名と産地名は使用できなくなります そのような利用が行いたいのですか? 言っている事はフィールドそのものを削除してしまうのではなく、入力されているデータの値を空白にする事を意味しているのではないですか? もちろんフィールドそのものをフォームに配置した削除用のコマンドボタンを使って削除する事は出来ます
- chayamati
- ベストアンサー率41% (260/624)
>Accessのレコード削除についてです。 ★Accessには 1.テーブル 2.クエリ 3.フォーム 4.レポート 5.マクロ 6.モジュール 以上6個の部分がありますが.自分は5,6は使っていません。 Excelのセルに相当する部分フィールド呼びます フィールドに多数のプロパティー(特性)を定義できます 例としてテーブルのフィールドのプロパティの一部です 1.フィールドサイズ 2.書式 3.定型入力 4.規定値 5.入力規則 6.値要求 7.インデックス(重複あり、重複なし) 8.IME入力モード 9.IME変換モード 10.ふりがな 11.住所入力支援 等,、沢山ありますが全て規定値があり、必要な項目だけ定義します テーブルのプロパティーはフォーム、レポートに反映されます このプロパティーであなたの不安は全て解消します。 先ずは、テーブル設計から始めましょう --------------------------------------------------------------------- 例えば商品テーブルに ・数値型のID主キー)、テキスト型の商品名、テキスト型の産地の3カラム構成のテーブルがあったとします。 ・レコード削除の場合、Excelでいうと行削除のように該当IDの行に含まれる情報をすべて削除すると思うのですが、 ・これを例えばID番号は残し、商品名と産地のみ削除する…のは可能なのでしょうか。 ちなみに削除を行うのはテーブル上ではなく、新規レコード追加・編集ができる 入力用のフォームからボタン操作で行いたいです。 >また、サブとしてテーブルとソースを連結させた一覧表示できるフォームにも反映させたいです。 →現状は規定値の0が表示されるため、データがなくなった場合0ではなく新規作成時に振られる ID番号と同じ1を表示させたいのですが、なかなかうまくいかず… ★ID番号に🔑マークがついていますね。データ型がオートナンバー型で、Accessのシステムで管理されるため こちらで操作することが出来ない重複なしの長整数型です テーブルのルックアッププロパティーでExcelの入力規則のような使い方をします テーブルの項目毎にプロパティー定義できるので、 1.商品マスタテーブル ID:オートナンバー型で長整数型 商品名:全角ひらがな、インデックスプロパティーで重複なし、値要求あり 振り仮名:半角カタカナ 登録日:時刻/日付型、規定値=DATE() 2.産地マスターテーブル 3.売上トランザクションテーブル ID 伝票№ 商品ID:商品マスタをルックアップ 産地ID:産地マスタをルックアップ 数量 単価 金額