個人情報が入力されているフォームに五十音別のトグルボタンを作成して氏名のふりがなを元に抽出を考えていますが、たくさんの式を記述するのが大変なので簡単にまとめる方法を考えています。
CHOOSE関数を使おうと思ったのですが、うまくいきません。
よい方法があれば教えて下さい。

A 回答 (1件)

こんにちは。

maruru01です。

>たくさんの式
というのがよくわかりませんが、トグルボタンを作る場合の方法を。
ふりがなはひらがなとします。

まず、トグルボタンはフレームでグループ化しておきます。
そして、選択したトグルの値(五十音なら1~50)をひらがなに変換する関数を作ります。

Private Function GetHiragana(tglValue As Long) As String

  Select Case tglValue
    Case 1
      GetHiragana = "あ"
        :
        :
  End Select

End Function

そして、例えば抽出ボタンのクリックイベントで、

Private Sub 抽出_Click()

  Dim WhereCond As String  '抽出条件

  WhereCond = "ふりがな LIKE '" & GetHiragana(フレーム1.Value) "*'"

  (以下略)

End Sub

とします。
この抽出条件を使って、レコードセットを作成するなり、SQLでテーブルを作成するなり、サブフォームで表示するなりして下さい。
では。
    • good
    • 0
この回答へのお礼

とても素晴らしい回答をありがとうございました。
こんなに簡単に出来る方法があるなんて思いつきもしませんでした。

お礼日時:2002/03/01 10:35

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

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

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

Q選択クエリでの複数抽出条件の記述について

フォーム上に「テキストボックス」、「コンボボックス」、「チェックボックス」の項目があって、それぞれの条件に合致した、データを抽出する選択クエリを書いてるのですが、うまく抽出してくれません。

「テキストボックス」、「コンボボックス」には、[Forms]![テーブル名]![入力するボックスの名前] or 、[Forms]![テーブル名]![入力するボックスの名前] is nullと記述しています。
「チェックボックス」には、、[Forms]![テーブル名]![チェックボックスの名前] = True or [Forms]![テーブル名]![チェックボックスの名前] = Falseと記述しています。
しかしながら、任意のコンボボックスからテキストを選択し、チェックボックスにレのついたデータを抽出したくても正しいデータを表示してくれません。
どなたか、クエリに詳しい方よろしくお願いいたします。

Aベストアンサー

「テキストボックス」には、[Forms]![テーブル名]![入力するボックスの名前]とありますが、
その意味がクエリーの抽出条件欄に記入した内容だとすると
そこは[Forms]![フォーム名]![入力するボックスの名前]です。
[テーブル名]ではないですよ。

QAccessのクロス集計クエリから、追加クエリをvbaで記述したいが記述が分からない。

Windows7のAccess2007を使っています。
Accessのクロス集計クエリから、追加クエリをvbaで記述したいが記述
が分からない。

vbaを使わなければ、データベースウインドウで最初にクロス集計のク
エリを作って、そのクエリを使って追加クエリを作れば終わりですが。
これと同じ事をvbaで記述をしたいのですが。

出来るのでしょうか。

例として、収穫テーブルとサイズテーブルのクロス集計を作ると仮定し
て下記の構造で作る物とします。
収穫テーブルは下記の構造です。
1. idと言う名前でオートナンバーの型
2. サイズと言う名前で数値の型

サイズテーブルは下記の構造とします。
1. idと言う名前でオートナンバーの型
2. 名前と言うフィールドの名前でテキストの型

収穫のテーブルは下記のデータが入っています。
ID サイズ
1 1
2 2
3 2
4 2
5 1
6 2
7 3

サイズのテーブルは下記のデータが入っています。
ID 名前
1 大
2 中
3 小

リレーションシップは、一側のテーブルがサイズのテーブルで、idを主
キーとします。多側のテーブルは、収穫のテーブルで多側のキーはサイ
ズです。

ここで、クエリ1の名前で
TRANSFORM Count(収穫.ID) AS IDのカウント
SELECT 収穫.ID
FROM サイズ INNER JOIN 収穫 ON サイズ.ID = 収穫.サイズ
GROUP BY 収穫.ID
PIVOT サイズ.名前;

を実行すると、下記が得られます。
ID 小 大 中
1 1
2 1
3 1
4 1
5 1
6 1
7 1

ここで、クエリ1を使って下記のクエリ2を作ります。
INSERT INTO table1
SELECT クエリ1.*
FROM クエリ1;

上記の操作でクエリ1のクロス集計クエリを使って
クエリ2の追加クエリと言う二つの手段で
クロス集計からデータを作る事が出来ます。

この操作をvbaの手法で作る方法は無いのでしょうか。
この例でのコードの記述を宜しくお願いします。

Windows7のAccess2007を使っています。
Accessのクロス集計クエリから、追加クエリをvbaで記述したいが記述
が分からない。

vbaを使わなければ、データベースウインドウで最初にクロス集計のク
エリを作って、そのクエリを使って追加クエリを作れば終わりですが。
これと同じ事をvbaで記述をしたいのですが。

出来るのでしょうか。

例として、収穫テーブルとサイズテーブルのクロス集計を作ると仮定し
て下記の構造で作る物とします。
収穫テーブルは下記の構造です。
1. idと言う名前でオートナ...続きを読む

Aベストアンサー

こちらが参考になるでしょう。
http://www.accessclub.jp/bbs6/0008/das1904.html


おまけ、上記を参考にした
一応動作するコード。

Dim strSQL As String
strSQL = "INSERT INTO table1 " & _
   "SELECT Q.* " & _
   "FROM [" & _
   "TRANSFORM Count(収穫.ID) AS IDのカウント " & _
   "SELECT 収穫.ID " & _
   "FROM サイズ INNER JOIN 収穫 ON サイズ.ID=収穫.サイズ " & _
   "GROUP BY 収穫.ID " & _
   "PIVOT サイズ.名前 " & _
   "IN ('大','中','小')" & _
   "]. As Q"
Debug.Print strSQL
CurrentDb.Execute strSQL

Qトグルボタンの帳票フォーム連動って・・・

access2007で・・・
サブフォーム(帳票フォーム)に表示させているテーブルにトグルボタンを連動させたいのですが・・・
イメージ的には以下になります。

例えば
(Table_A)
カラム1    | カラム2 | カラム3 | カラム4 |カラム5
トグルボタン | 1998年 |  田中 | 35歳 | 東京
トグルボタン | 1999年 |  佐藤 | 56歳 | 神奈川
トグルボタン | 2000年 |  吉田 | 21歳 | 埼玉
トグルボタン | 2001年 |  伊藤 | 25歳 | 千葉
トグルボタン | 2002年 |  高橋 | 32歳 | 東京

・・・みたいな感じで、作ってはみたのですが、トグルボタンを押すと、全部が押されてしまいます・・・

無理ですかね~?

Aベストアンサー

> ちなみに、トグルボタンが押されている所のキャプションを変更したいのですが、どういうふうにやるのでしょうか?

こんなところですかね。
http://penhagi.com/access/ota2000/53.htm

Qアクセスでフォームとサブフォームのリンクについて

アクセスを勉強初めて10日経過したシロウトものです。
今顧客管理データベースを作成しています。いろいろ学んで来ましたが、従業員のメンテフォーム作成でつまずいています。
社員No 配属 従業員名 のデーブルからフォーム、サブフォームを作成しました。フォームで入力し、サブフォームで従業員の一覧ができるようにしたいのです。ウィザード通りに作成するとサブフォームではフォームにある社員Noの行しか現れません。何かの見本では、ズラーと社員一覧になっており、サブフォームのどこかをクリックすると上のフォームの画面がサブフォームと連動して切り替わります。この仕組みがどうなっているのか、どうか教えて下さい。よろしくお願いします。

Aベストアンサー

失礼しました。
アクセスをはじめたばかりでいらっしゃるのを忘れていました。

これは、「コードビルド」を選択して記述します。VBAといわれるプログラム言語です。
どこに書いてもいいのですが、ここではIDという名前のテキストボックスがあって、これをダブルクリックするとそのレコードを親フォームに表示する、という風に動作させようということで、書いたコードです。

1 Private Sub ID_DblClick(Cancel As Integer)
2 Dim TargetID As Long
3 TargetID = Me![ID]
4 Me.Parent![ID].SetFocus
5 DoCmd.FindRecord TargetID
6 End Sub

以下、一行ずつ解説しますので、ヘルプなども参照しながら応用してみてください。

1はいいですね。あるコントロール(テキストボックスなどの総称)のプロパティ-イベント-ダブルクリック時-コード で開くと、自動的にこの行が生成されます。この場合は、IDというコントロールのダブルクリックイベントで走るコードだよ、という意味の名前です。

2。変数を宣言します。

3。Meというのは、今の場合で言えば、現在、選択しているレコードです。現在選択しているレコードの、IDというコントロールの値を参照するときに、Me![ID] と書きます。

4。親レコードのテキストボックスIDにフォーカスを移します。フォーカスされた場所というのは、この場合、点滅しているカーソルのあるところです。ダブルクリックするのはサブフォームのコントロールですから、この時点では、サブフォームにフォーカスされています。
サブフォームから、親フォームのコントロールを示すときに、Me.Parent![コントロール名] と書くのです。
今は、フォーカスをそのコントロールに移したいので(次の行を実行させる準備)、 Me.Parent![コントロール名].SetFocus と書きます。

5.フォーカスのある項目が、変数TargetID の内容と同じレコードを探します。

ここでは、IDという名のコントロールを仮定しましたが、多分これを、社員Noに読み替えていただければよいかな?
ポイントは、5行目の DoCmd.FindRecord です。その前は、これを意図どおりに実行させる準備です。
ヘルプや本をご覧になる際に、FindRecord から攻略してみてください。

失礼しました。
アクセスをはじめたばかりでいらっしゃるのを忘れていました。

これは、「コードビルド」を選択して記述します。VBAといわれるプログラム言語です。
どこに書いてもいいのですが、ここではIDという名前のテキストボックスがあって、これをダブルクリックするとそのレコードを親フォームに表示する、という風に動作させようということで、書いたコードです。

1 Private Sub ID_DblClick(Cancel As Integer)
2 Dim TargetID As Long
3 TargetID = Me![ID]
4 Me.Parent![ID].SetFo...続きを読む

Qメインフォームから他フォームへの移動について

Access2007を使用して、営業部内の顧客情報共有DBを作成しようとしています。
フォームは大きく分けて2つに分けており、
1)メインフォーム(担当営業選択及び該当顧客一覧表示)
2)顧客詳細情報の入力フォーム
としています。
メインフォームはコンボボックスにて営業の選択を行い、選択後
同一フォーム内に作成したサブフォームにて担当顧客一覧が表示
される様にしています。
顧客一覧の顧客コードの部分をダッブルクリックするとその顧客の
詳細情報入力フォームへ移動sる様に設定したいのですが、
詳細情報入力フォームの先頭顧客番号へ移動するだけで、ダブルクリックした
顧客の詳細情報入力フォームへ移動できません。
恐らくどこかにリンク等の設定が必要ではないかと思いますが、それを
どこでどの様に設定してよいのかがわかりません。
まだ勉強中の身で、色々検索しながら情報を入手したりマニュアルや参考図書
を読みながら奮闘しております。
この様な設定をされた事がある方がいらっしゃれば是非ともご教授頂ければ
幸いです。
宜しくお願い致します。

Aベストアンサー

> 顧客一覧の顧客コードの部分をダッブルクリックするとその顧客の
> 詳細情報入力フォームへ移動sる様に設定したいのですが、

顧客コード テキストボックスのダブルクリック時のイベントプロシージャに、

DoCmd.OpenForm "詳細情報入力フォーム", , , "顧客コード=" & Me.顧客コード

と1行記述。これが、いちばん標準的な方法だと思います。

上記は、顧客コードが数値型の場合です。テキスト型の場合は、

DoCmd.OpenForm "詳細情報入力フォーム", , , "顧客コード='" & Me.顧客コード & "'"


人気Q&Aランキング

おすすめ情報