プロが教えるわが家の防犯対策術!

フォームでオプショングループ(フレームの中にオプションボタンを2個)をつくり、選択肢から選んでコントロールソースで関連付けているテーブルに文字でデータを入力したいと考えています。

しかしフォームでオプション選択肢後、コントロールソースで関連付けているテーブルを見ても1,2の様な数字しか入力できません。

オプショングループから文字を入力を入力する方法を教えてください。

A 回答 (2件)

>オプショングループ(フレームの中にオプションボタンを2個)


>コントロールソースで関連付けているテーブルに文字でデータを入力したい
ボタン2つくらいなら記述も簡単なので
例えばフォームのオプショングループ名をフレーム1としてテーブルのフィールド名をフィールド1としてオプショングループの値をボタンにより1・2とすると
オプショングループのプロパティを開きイベントの更新後処理にコードビルダで

Private Sub フレーム1_AfterUpdate()
フィールド1 = IIf(フレーム1 = 1, "あ", "い")
End Sub

とすればテーブルに書き込めます。
"あ""い"の部分はテーブルに書き込みたいテキストを記述してください。
ボタンがたくさんあるようなら分岐処理をして記述すれば出来ますが2つくらいなら上記でOKです。
    • good
    • 0
この回答へのお礼

おおーできました!
本当にありがとうございます!!

お礼日時:2005/12/16 21:50

オプション値は数字しか取れません。

文字入力に使用したければテーブルと関連づけせずに、オプショングループのクリックイベントで記述しなければ駄目でしょう。

具体的にどのような文字(列?)を入力したいのか判らないと、これ以上の説明は難しいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qオプションボタンの三択(アクセス)

こんにちは。
アクセスのオプションボタンについて教えてください。
マルにちょんとチェックするボタンです。

フォーム上にオプション1オプション2オプション3の選択肢があるとします。

ふつうにしていると1も2も3も全部一緒にえらべてしまいます。
ひとつにチェックをつけると他のふたつにはチェックできないようにするにはどうしたらいいですか?

Aベストアンサー

こんにちは。maruru01です。

オプショングループを使用します。
・ツールボックスのオプショングループ(四角でxyzと書いてある奴)を選択して、適当な大きさにドラッグして、フォームに置きます。
・ツールボックスからオプションボタンを選択して、マウスのポインタをオプショングループの中へ移動させると、四角の中が反転表示されるので、その状態でオプショングループの中にオプションボタンを配置します。
・同様に必要な分だけオプションボタンをオプショングループの中に配置します。

これで、オプショングループ内のオプションボタンは、1つしか選択出来なくなります。
ちなみにオプションボタンのプロパティの[オプション値]というのが各オプションボタンを表す値で、オプショングループのプロパティの[既定値]にどれかの値を入れておくと、最初にチェックされているオプションボタンを指定出来ます。
また、VBAで値を認識するのは、オプショングループのValueプロパティになります。
選択されているオプションボタンの[オプション値]がオプショングループのValueにセットされるわけです。

こんにちは。maruru01です。

オプショングループを使用します。
・ツールボックスのオプショングループ(四角でxyzと書いてある奴)を選択して、適当な大きさにドラッグして、フォームに置きます。
・ツールボックスからオプションボタンを選択して、マウスのポインタをオプショングループの中へ移動させると、四角の中が反転表示されるので、その状態でオプショングループの中にオプションボタンを配置します。
・同様に必要な分だけオプションボタンをオプショングループの中に配置します。

これで、オ...続きを読む

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QアクセスVBAのMe!と[ ]

基本的なことですみません。

アクセスのイベントプロシージャで、Me!ってありますけど、これはどういう意味なんでしょうか?

また、Me!の後に、Me!.~~と書く場合と、Me!.[~~]と書く場合がありますが、どこが違うのでしょうか?

Aベストアンサー

>プロシージャ内で[]を使う場合は、そのフォーム外のオブジェクトを使う場合と考えてよろしいでしょうか?
別のオブジェクトを使う場合だけではありません。
Hensu = Me![Text1]のようにHensuという変数に自身のTest1の値を代入する場合のように。
[]で括られているのがオブジェクト名やコントロール名だよという事。
クエリの抽出条件に存在しない[?]とすれば?というコントロール等が参照できないので?というダイアログが表示されるように?というオブジェクトやコントロールは何?と聞いてくるように。
>フォーム内のオブジェクトの場合はあくまでMe!で良いのでしょうか
Forms.[フォーム名]![コントロール名]やForms![フォーム名]![コントロール名]が構文。
アクティブなフォームが自分自身ならForms![フォーム名]の変わりにMeでもOKですという事。

と言う解釈の方が良いと思います。

Qオプションボタンを使って抽出

Yes/No型のデータを抽出したいのですが、
オプションボタンの1つにチェックを入れて
おいて、検索ボタンを作ってあるのですが、
それをクリックするとtrueのデータだけ表示され、
もうひとつのオプションボタンにチェックを入れて
検索をかけると、fulseのデータだけ表示されるように
したいのですが。
ACCESS97、windowsXPです

Aベストアンサー

>YesNo型ではなく、空欄とそうでないものとの抽出でした。
>そうした場合はオプション値はどのようになるのでしょうか?
オプションボタンのオプション値には数値以外は設定できないのでオプション値はそのままでクエリの抽出条件を変更します。
例えばオプション値をそのまま-1と0とした場合。-1でフィールドがNot Null・0がNullを抽出するとして。
クエリの抽出条件にIIf関数などでNullかNotNullかの代入は出来ないのでクエリにフィールドを追加してフィールドがNullなら0・Nullでなければ-1を判定させます。
式1:IIf(IsNull([Nullかどうか判定するフィールド名]),0,-1)
として式1の抽出条件に
=[Forms]![フォーム名]![フレーム1]
とすれば抽出できます。

QACCESS VBA テーブルの値のオプションボタンへの反映について

いつもお世話になっております。
(ACCESSのVERSION 2003)
<質問内容>
テーブルに設定した値を、フォーム上のオプションボタンに反映させるにはどのようにすればよろしいでしょうか。

例えば
フォーム上にオプションボタンを二つ用意
 ○出力します
 ○出力しません
テーブルに出力FLG列(0 または 1の値を持つ)を用意
この出力FLG列の値が0であれば
フォーム上のオプションボタン【○出力します】にチェックをいれ
出力フラグ列の値が1であれば
フォーム上のオプションボタン【○出力しません】にチェックをいれたい

というような処理を行うことは可能なのでしょうか?
またどのようにしたら、実行できるのでしょうか?
わかる方がいらっしゃいましたら、ご教示お願いいたします。

Aベストアンサー

tab1:テーブル

ID_出力
1___Yes
2___No

tab1:フォーム

ID:________[1]
出力_______[●]

と、ここまではウィザードでできます。

tab1:フォーム

ID:________[1]
出力する__[●]
出力しない_[○]

1、[出力]をコピペ。
2、ラベルを修正。
3、追加した方のコントロールソースを修正。

出力<---------------修正前
=Not [出力]<--------修正後

で、いけます。

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QMS Accessでフォームの「開く時」と「読込み時」のイベントの違い

Accessでフォームのイベントに「開く時」と「読込み時」のイベントがありますが、どのような違いがあるのでしょうか?
例えば、フォームのドロップダウンリストのリストのソースを変更するプログラムを「開く時」に設定していますが、「読込み時」だとまずいんでしょうか?
今は、問題なく動いているので結果オーライなんですが、ちょっと気になります。
特にフォームのテキストボックスにプログラムの条件で初期値を入れるときなどはどっちのイベントでやるのが正しいのでしょうか?
今はどっちでやってもうまく動いているのですが。
よろしくお願いいたします。

Aベストアンサー

イベントの発生順は
Open → Load
です。
また、Open はキャンセルできますが、Load はできません。
ドロップダウンリストのリストを変更しようとしてエラーが発生した場合にはフォームを開かずにおくようにするのであれば Open イベントに記述しなければなりません。
キャンセルする必要がなければ、どちらでもよいと思いますよ。どちらが正しいということでもないように思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング