アクセス2007 入力済テキストBOXをコンボ変更

このQ&Aのポイント
  • アクセス2007において、入力済みのデータをコンボボックスに変更する方法について教えてください。
  • 現在、アクセス2007でデータ入力用のフォームを作成しています。エクセルからデータをインポートしたため、テキストボックスにデータがすでに入っています。しかし、今後、発送ツールや単価をコンボボックスで選択したいのですが、変更の方法が分かりません。どのようにすれば変更できるでしょうか?
  • アクセス2007で、入力済みのデータをコンボボックスに変更する方法を教えてください。現在、発送ツールや単価をテキストボックスで表示していますが、コンボボックスを使用したいと考えています。具体的な手順を教えていただけますか?
回答を見る
  • ベストアンサー

アクセス2007 入力済テキストBOXをコンボ変更

いつもお世話になっております。アクセス初心者です。 エクセルに入力済みの送料(経費)をアクセス2007にインポートし、 入力用のデータファイルを作成しております。 データは、郵送テーブルとメール便テーブルにわけ、それぞれ、別のフォームを作成しました。 フォームは、「ID」「発送日」「送付先」「送付ツール」「単価」「送付数」「合計」「備考」を それぞれテキストボックスにて表示してあります。 データをエクセルからインポートしたため、郵送フォームルも、メール便フォームも、最初からある程度データが入っており、「発送ツール」(定形・定形外・ゆうパック等)のテキストボックスや、「単価」のテキストボックス(80円・160円等)にも、データが入ったままです。 しかし、今後、このフォームを使い、データを追加していく場合、「発送ツール」や、「単価」は、テキストボックスに直接入力ではなく、コンボボックスでプルダウンメニューを表示していくやり方にしたいのですが、変更の仕方がわかりません。 仕様としては、「発送ツール」で、「定形・定形外・ゆうパック」等選んだ場合、「単価」が自動表示されるのではなく、「単価」も「80円・120円・380円」等から任意で選び、ありえない組合せの場合には、メッセージボックスで、「その組合せはできません」のような表示がされるようにしたいのです。 現在、「単価」と「送付数」にはそれぞれ、VBAで以下のプログラムを入力して、「合計」が表示されるようにプログラムしてあります。(見よう見まねで作成し、とりあえず動いてます) Private Sub 送付数_AfterUpdate() If Not IsNull(Me![送付数]) And Not IsNull(Me![単価]) Then Me![合計] = Me![単価] * Me![送付数] ElseIf IsNull(Me![送付数]) Then Me![合計] = Null MsgBox "送付数を入力して下さい" End If End Sub Private Sub 単価_AfterUpdate() If Not IsNull(Me![送付数]) And Not IsNull(Me![単価]) Then Me![合計] = Me![単価] * Me![送付数] ElseIf IsNull(Me![単価]) Then Me![合計] = Null MsgBox "単価を入力してください" End If End Sub 現在、このVBA以外は、クエリも作成しておりません。 (初心者なので、クエリとかも良くわからない。) それで、「単価」や「発送ツール」のデータを残したまま、コンボボックスでプルダウンメニューを新たに作製する方法を教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

、「発送ツール」や、「単価」は、テキストボックスに直接入力ではなく、コンボボックスでプルダウンメニューを表示していくやり方にしたいのですが、変更の仕方がわかりません。 直球でお答えします。 1.コンポボックスはテーブルで設定します。 2.先ずプルダウンリストを格納するテーブルを作成します。 2-1.エクセルで見出し(数値、またはツール)を付けてデータを入力します 2-2.アクセスで主キーなしでインポートします 3.コンポボックスの作成 3.1.郵送テーブルをデザインビューにします(添付図)。 3.2.[単価]-[ルックアップ]-[表示コントロールの右端]-[コンボボックス] ー[値集合ソースの右端]-[数値]とクリックします。 以上で完成です。 郵送テーブルを開いて単価欄をクリックして下さい。右端に▼が表示されます。ここは直接入力もプルダウンよりの選択も可能です。 このテーブルを基にして作成したフォームにこの機能が反映します。

koukin_mek
質問者

お礼

回答ありがとうございました。 おっしゃるやり方であれば、確かに▼が表示され、プルダウンメニューが出てきました。 ですが、最初にご指摘してくださったとおり、コンボボックスを云々以前に、テーブルやクエリなどの言葉の整理が必要です。 というか、データベースの構築については、最初からやり直す必要がある事がわかりました。 頂いた回答は、全て印刷して、自分用のマニュアルに編集させていただきました。 ありがとうございました。

その他の回答 (2)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

「仕様としては、「発送ツール」で、「定形・定形外・ゆうパック」等選んだ場合、 「単価」が自動表示されるのではなく、「単価」も「80円・120円・380円」等から任意で選び、 ありえない組合せの場合には、メッセージボックスで、 「その組合せはできません」のような表示がされるようにしたいのです。」 以上 Qの抜粋ですが。 -------------------------------------------------- 「ありえない組合せの」とはどのよな事ですか? このことを論理的に記述できますか またコーディングできますか 数字だけの入力なら直接入力しても抵抗がないと思うのですが むしろこれを入力するためにマウスを操作する方が手間なような このツールと単価は郵便料金の事ではないですか だったら重量によって料金が異なるため単価が固定できませんね この解決策は2通りあります。 1.定形郵便物25gまで、定形郵便物50Gまで 重量も含めてツールとする 2.ツールと重量のフィールドを定義する これに速達料金、書留料金も考慮する必要があるのでしょうか ※IF文は万能なようですが、コーディングが複雑になります。

koukin_mek
質問者

補足

回答ありがとうございました。 ありえない組合せとは、発送ツールは「定形」を選んでいるのに、単価は「120円」などですが、おっしゃるとおり、書留や速達の場合、複雑になりすぎますね。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.1

答えになりませんが先ず言葉を整理しましょう 1.「合計」というのは複数の数値を加算して答えの事で  数量×単価 は 金額、価格と呼ぶべきでしょう 2.[テーブル]と[フォーム]それに[クエリ]、[レポート]  [テーブル]:アクセスに於ける情報の格納形式で複数のフィールドで構成されている        フィールド毎に入力モード、変換モード、ふりがな支援、住所入力支援        ルックアップ(コンボボックス)の設定が出来る  [クエリー]:テーブル内の一部のフィールドまた複数のテーブルを関連づけて        これらの中にある一部フィールドの集まりで、        条件設定によるレコードの抽出も可能        テーブルと同じように次のフォーム、レポートデータ元となる  [フォーム];テーブルまたはクエリー内のデータを参照、追加入力、修正入力がスムーズ        出来るようにフィールドの表示位置を設定できる  [レポート];テーブルまたはクエリー内のデータを報告書として印刷する 以上ですが、テーブルはシステムの中で中心に存在です。このテーブルの良し悪しより システムの良し悪しが決まるといって良いでしょう。 エクセルと違い集計等演算項目に一つでも空白の項目があると演算は無効になります。 この弊害を除去する為に数値項目の既定値を0に設定します。 それでは質問に移ります。 郵送テーブルとメール便テーブルとはフィールド名は異なりますか 同じならYES/NO型のフィールドを追加することでテーブルを一つにまとめることが出来る 異なるのであればいづれか一方に絞って開発を進めましょう 発送先は繰り返しが多いようであれば発送先テーブルを追加しましょ 発送先テーブル ・ID オートナンバー型 ・発送先名 ・ふりがな ・郵便番号 ・都道府県 ・市区町村 ・住所末尾 ..... フォーム内のMe!は省略できる 数量*単価はテーブルにフィールドがなくてもクエリで 標準金額:数量*単価で金額の項目になる 以下標準金額としてフォーム、レポートでフィールドと出来る(データ入力はできない) Q。直接入力ではなく、コンボボックス コンポボックス内の値集合ソースに使用するテーブルを用意します 単価テーブル (ツールテーブル) 。ID. ・ツール名 ・単価 フィールドプロパティーのルックアップタグ内テキスト右端の▼をクリックして コンポボックスを選びます。   

koukin_mek
質問者

お礼

回答ありがとうございます。 おっしゃっている意味が直ぐに飲み込めないので、(すみません初心者です)とりあえず回答を印刷して、ゆっくり熟読する事に致しました。

関連するQ&A

  • Accessテキストボックスの未入力チェック

    いつも参考にさせて頂いております。 Accessテキストボックスの未入力チェックで上手くいかず悩んでいます。過去の情報等調べましたが、わかりませんでした。 どなたか宜しくお願い致します。 フォーム1にテキストボックス1、ボタン1があります。 テキストボックスを何も入力せず、Enter等で移動する時にチェックをかけたいです。 もし、テキストボックスに何も入力がなかったら、メッセージを出し、フォーカスをテキストボックスに戻す。 何か入力があれば、ボタンにフォーカスが移動する。 If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Me.テキストボックス1.SetFocus End If 宜しくお願い致します。

  • 1つのテキストボックスで全フィールドを検索するには

    1つのテキストボックスで全フィールドを検索するには Access2002使用です。 現在フォームにて、それぞれのフィールド毎に検索用のテキストボックスを用意してる為、 下記のようになっています。 これを、1つのテキストボックスで全てのフィールドを検索できるようにするには、 どこを訂正したらよろしいでしょうか? 宜しくお願い致します。 Option Compare Database Function exeFilter() Dim strFilter As String If Not IsNull(姓検索) Then strFilter = " AND 姓 Like '*" & Me.姓検索 & "*'" End If If Not IsNull(名検索) Then strFilter = strFilter & " AND 名 Like '*" & Me.名検索 & "*'" End If If Not IsNull(姓ふりがな検索) Then strFilter = strFilter & " AND ふりがな(姓) Like '*" & Me.姓ふりがな検索 & "*'" End If If Not IsNull(名ふりがな検索) Then strFilter = strFilter & " AND ふりがな(名) Like '*" & Me.名ふりがな検索 & "*'" End If If Not IsNull(住所1検索) Then strFilter = strFilter & " AND 住所1 Like '*" & Me.住所1検索 & "*'" End If If Not IsNull(住所2検索) Then strFilter = strFilter & " AND 住所2 Like '*" & Me.住所2検索 & "*'" End If If Not IsNull(住所1ふりがな検索) Then strFilter = strFilter & " AND 住所1ふりがな Like '*" & Me.住所1ふりがな検索 & "*'" End If If Not IsNull(住所2ふりがな検索) Then strFilter = strFilter & " AND 住所2ふりがな Like '*" & Me.住所2ふりがな検索 & "*'" End If Me.Filter = Mid(strFilter, 6) Me.FilterOn = True End Function Private Sub Form_AfterUpdate() End Sub

  • テキストボックスからコンボボックスへ自動入力したい

    AccessVBA初心者です。 Access2003を使用しています。 formAフォーム上の非連結textBテキストボックスに英字を入力 して、exe実行ボタンをクリックしたら、Cテーブルに連結した cmbCコンボボックスに該当文字列を表示したいです。 Private Sub exe_Click() If Me.textB.Value = "A" Then Me.cmbC.Value = 1 Else Me.cmbC.Value = 2 End If End Sub 実行ボタンをクリックしても、コンボボックスの内容は変わり ません。 if文にブレークポイントを設定してステップインで一行ずつ実 行するとコンボボックスに数字にあった文字列が表示できます。 うまく表示できるように、よろしくお願い致します。

  • accessの検索フォームについて(複数条件)

    access初心者です。 本などを参考に検索フォームを作成しました。 1つの条件で検索することは出来たのですが、複数の条件を入力するとうまく検索出来ません。 全ての条件を満たすデータの抽出を行いたいと思います。 「あ」「い」「う」というテキストボックスを用意しています。 Private Sub コマンド14_Click() If Not IsNull(Me.txt_あ) Then ' Me.Filter = "あ LIKE '*" & Me!txt_あ & "*'" End If If Not IsNull(Me.txt_い) Then ' Me.Filter = "い LIKE '*" & Me!txt_い & "*'" End If If Not IsNull(Me.txt_う) Then ' Me.Filter = "う LIKE '*" & Me!txt_う & "*'" End If Me.FilterOn = True End Sub よろしくお願いします。

  • ACCESS VBA で複数項目検索にテキストボックスとコンボボックス

    ACCESS VBA で複数項目検索にテキストボックスとコンボボックスを使用したい txtPC番号というテキストボックス、 com所属部門というコンボボックス、 txt使用者というテキストボックスの どれかひとつの条件が入力されたときに 該当するフォームのレコードを抽出できるようにしたいのですが、 コンボボックスで選択した場合のみうまく抽出できません。 コードのどの部分に誤りがあるのでしょうか? ご指摘願えませんでしょうか? よろしくお願いいたします。 Private Sub cmd01_Click() Me.FilterOn = False If Me!txtPC番号 <> "" Then Me.Filter = "[PC番号]like '*" & Me!txtPC番号 & "*'" ElseIf Me!com所属部門 <> "" Then DoCmd.Requery "com所属部門" ElseIf Me!txt使用者 <> "" Then Me.Filter = "[使用者]like '*" & Me!txt使用者 & "*'" End If Me.FilterOn = True End Sub

  • ACCESS

    現在以下のシステムを検討しています。 (1)ログインフォームと(2)トップフォーム(3)注文フォームが別々に存在しており、 (1)ログインフォームは  ・ログインID入力用のテキストボックスが一個  ・パスワード入力用のテキストボックスが一個  ・ログインボタンが1個  設置されています。 以下はログインボタンクリック時に動作するプログラムです。 Private Sub cmdLogIn_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "IDを入力してください" Me.txtID.SetFocus Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "パスワードを入力してください" Me.txtPass.SetFocus Exit Sub End If Res = DLookup("パスワード", "T顧客", _ "顧客ID='" & Replace(Me.txtID, "'", "''") & "'") If IsNull(Res) Then MsgBox "該当するIDはありません。正しいIDを入力してください。" Me.txtID.SetFocus Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "注文フォーム" '----ID,pass合致でフォームを開く。 Me.txtID = Me.txtID2 Me.txtPass = Me.txtPass2 DoCmd.Close acForm, "Fログイン" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical Me.txtPass.SetFocus End If End Sub (2)トップフォームは  商品のリストが画像付き(商品一個につき画像一個)  で示され、画像を押すと商品別に作成してある注文フォームに進むのですが、  ログイン完了していないとログインを促すメッセージが出て注文フォームが開かないよう  にしています。  トップフォームにはテキストボックスを2個不可視の状態で配置しております。  以下は商品画像に埋め込んであるコマンドです。 Private Sub 商品画像 1_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "ログインしてください" Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "ログインしてください" Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "商品名" '----ID,pass合致で注文フォームを開く。 End If End Sub   (3)注文フォームは  ・数量選択のコントロールボックス  ・注文ボタン  ・キャンセルボタン  を設置しています。 【以下が質問内容になります】 「ロフインフォーム」内の入力値(テキストボックスに入力されていたIDやパスワード値)を注文フォーム内のテキストボックスに取得させる(あるいは設定させる)にはどのようにすればよいのでしょうか? 注文フォームにはテキストボックス2個( ID入力用と Password入力用)を不可視で配置しています。こちらのテキストボックス2個については手動入力は行わず、注文フォームが開いた際にログイン時の ID, Paswordがテキストボックスの中に自動的に入力あるいは設定されるようにしたいのですが、どのようにすればよいかがわかりません。 因みにログイン ID,Passwordは複数セットあり、ユーザーがログイン完了後、注文フォームを閉じるまでの間は 同一のID, Paswordの内容を保持したいと考えています。 上記の中にID,Paswordを保持させるようなコードを入れることは可能でしょうか? 注文フォームを開く際のコードに何か入れることができるのではないかと考えていたの ですが、よい案が浮かびません。 他によいやり方などがあれば教えていただけますでしょうか? よろしくお願いします。

  • access setfocusについて

    いつもお世話になっております。 いろいろ調べたのですが行き詰っておりまして ご教授お願いします。 下記記述でsetfocusでエラーになってしまいます。 Private Sub コマンド_Click() If IsNull(Me.テキストボックスコントロール名) Then MsgBox "未入力です" Me.テキストボックスコントロール名.SetFocus End If テキストボックスの処理記述 End Sub https://www.moug.net/tech/acvba/0030005.html こちらを参考にしました。 よろしくお願いします。

  • テーブルをコンボボックスで選びたい

    いつも、お世話になっています。お願いします。 1つのフォームで複数のテーブルにデータ入力をしたいのです。 テーブルに、平成14年1月、平成14年2月、・・・、と 毎月分あります。 現在は、コマンドボタンを作成して、以下のようにしてます。 Private Sub コマンド1_Click() Me.RecordSource = "平成14年1月" End Sub Private Sub コマンド2_Click() Me.RecordSource = "平成14年2月" End Sub これですと、テーブルの数のコマンドボックスが必要ですので、 ちょっと、煩雑に見えています。 コンボボックスを作って、 テーブルを選べるようにしたいのですが、 式ビルダとか、見ているのですが、出来ません。 お教えください。お願いします。

  • テキストボックスが未入力のときメッセージを表示したい

    テキストボックスが未入力のときコマンドボタンを押下したらメッセージを表示させるようにしたいんですができません。 教えてください。 (1)テキストボックスを作成。(txt_入力) (2)コマンドボタンを作成。 下記のようにコードを記述。 Private Sub コマンド45_Click() On Error GoTo Err_コマンド45_Click If Me![txt_入力] = "" Then MsgBox "データをいれろ" End If 以下省略 ""をNULLにしても出来ません。お願いします。

  • アクセス コンボボックスで全項目表示

    アクセス2000で発注書をつくっています 発注書フォームのサブフォーム「発注書sub」内で 「大項目」「中項目」「小項目」「商品コード」の 4つのコンボボックスを設置し、 絞込み検索で商品明細を入力しています 新規レコードに移動するときに 「大項目」「中項目」「小項目」の値を空白にし、 4つめの「商品コード」コンボボックスで 全商品を表示させたいのですが どう記述していいのかわかりません 現在は Private Sub 商品コード_AfterUpdate() Me.品番 = Me.商品コード.Column(1) Me.商品名 = Me.商品コード.Column(2) Me.色 = Me.商品コード.Column(3) Me.サイズ = Me.商品コード.Column(4) Me.商品単価 = Me.商品コード.Column(5) End Sub Private Sub 小項目_Enter() Me!商品コード.Requery End Sub Private Sub 大項目_AfterUpdate() Me!中項目.Requery End Sub Private Sub 中項目_AfterUpdate() Me!小項目.Requery End Sub Private Sub 小項目_AfterUpdate() Me!商品コード.Requery End Sub 'フォーカスが移ると同時にドロップダウンさせる Private Sub 大項目_GotFocus() Me.大項目.Dropdown End Sub Private Sub 中項目_GotFocus() Me.中項目.Dropdown End Sub Private Sub 小項目_GotFocus() Me.小項目.Dropdown End Sub 'テスト Private Sub 摘要_LostFocus() Me!大項目 = Null Me!中項目 = Null Me!小項目 = Null Me!商品コード.Requery End Sub です。 発注書フォーム(単票フォーム) レコードソース「発注書」 サブフォーム名「発注書sub」(帳票形式) レコードソース「発注書明細」 リンク親フィールド子フィールドともに「発注書コード」 (他に表記が必要なのがあるかもしれませんが。。) テーブル ●発注書明細 「明細コード」「発注書コード」「商品コード」「品番」「商品名」「色」「サイズ」「商品単価」「数量」「摘要」です ●商品マスタ 「商品コード」「品番」「種類」「大項目」「中項目」「色」「商品名」「サイズ」「商品単価」 です。 どなたか ご指導のほどよろしくお願いいたします

専門家に質問してみよう