今だけ人気マンガ100円レンタル特集♪

Access初心者です。
今Accessで顧客管理を作製しています。
フォームでかな氏名検索をしたいのですが、
検索先が入力順になっている為とても検索し辛いです。
これをかなの昇順に変える方法があったら教えて下さい。
また電話番号検索でも下4桁での検索とかが可能でしたら、教えて頂けるとうれしいです。
どうぞ宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

たぶん、コンボボックス、もしくはリストボックスで一覧を出して、そのClickイベントあたりで目的のお客のレコードへ飛びたい、というのもだと思います。



VBAで微調整はいりますが、#2さんのロジックを元に、コンボボックス、もしくはリストボックスの値集合ソースを設定してやればOKだと思います。

もちろん、イベント発生後に、目的のレコードへ飛ぶコードを各必要がありますが、これはコンボボックス作成時のウィーザードで「レコードの移動」を選択すれば、サンプルを作っていくれますので、それを元にモデファイすればいいと思います。
    • good
    • 0
この回答へのお礼

かな検索のクエリを昇順で作製して、値集合ソースのSELECT文をそのクエリに変えたらうまくいきました。
本当にどうもありがとうございました。こんなに早く解決できて感動しています。

お礼日時:2003/10/10 21:02

ME!txt (フォームのtxt というtxtboxに下4桁を入れるとして)を追加して、値集合ソースを次のものにしてください。



コンボボックスを別にするか、同じコンボボックスで、値集合ソースをVBAで切り替えるかはお任せします。

"SELECT ID,氏名, しめい, 電話番号 FROM 顧客管理 WHERE 電話番号 Like '*" & Me!txt & "';"
    • good
    • 0
この回答へのお礼

手探りでやったクエリーのRIGHT書式で何とかうまくいきました。重ね重ね本当にありがとうございました。初心者には本当に未知の世界です。(^_^;)また何かありましたら教えて下さいね。本当にありがとうございました。

お礼日時:2003/10/10 22:58

単純にかなの昇順に変えたいのならば、クエリーで「かな」フィールドの並べ替えを昇順にしてそのクエリーをもとにフォームを作成すればよいと思います。



電話番号の下4桁での検索は、クエリーで
=RIGHT(電話番号,4)のフィールドを作成し、抽出条件にパラメータの設定をすれば条件に合致するデータだけ抽出してくれます。

この回答への補足

かな検索の方はうまくいきました。本当にどうもありがとうございました。ところで、電話検索の方で「クエリーで=RIGHTのフィールド」というのはどのように作成したらいいのですか?すみません。初心者な者で・・。良かったら教えて下さい。

補足日時:2003/10/10 21:10
    • good
    • 0
この回答へのお礼

方法を具体的に書いて頂いてありがとうございました。ただ下記の方の補足にも書かせて頂きましたが、もう既に自社のDBとして機能しております。なので、あまり変更せず使いやすくできればなと思っています。でも、試しにやってみますね。

お礼日時:2003/10/10 20:27

>フォームでかな氏名検索をしたいのですが、



検索は簡単ですが、その検索した後、そのデータをどのように利用するのでしょうか?

また、現在までの作業はどうなっているのでしょうか?

単にフォームウィザードでテーブルとくっついたものを作成しただけでしょうか?

この回答への補足

一対多のテーブルのフォームをウィザードで作りました。が、それからいろいろと手を加えて、お恥ずかしながら既にかなりの入力も終わり、自社の顧客管理として機能しています。
かな氏名検索は、検索したお客様のテーブルにデータを追加する時に使用しています。なので、かなり頻繁に使用しています。
できれば、あまり変更する事無くこの機能をスムーズに使いたいのですが・・・。
かな氏名検索のプロパティをあたる位でできる方法とかはないでしょうか?

補足日時:2003/10/10 20:14
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

QAccess、検索用フォームでのあいまいな検索

現在、Accessでデータベース作成をしています。

テーブル:  ・テーブルA
         ・テーブルB
         (A・B間にリレーションシップ設定)

クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成)

フォーム   ・検索用フォーム(デザインビューでフォーム作成より)
         ・検索結果フォーム(検索クエリを元に作成)

また、以下のような設定を入力しました。

「検索クエリ」の抽出欄
 Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)
 ※検索したい項目、すべての抽出欄に設定済

「検索用フォーム」
 検索実行ボタンを作成し、マクロを設定
 ・フォームを開く→「検索結果フォーム」
 ・フィルタ→「検索クエリ」

上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。
ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも
(1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。

2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか??

ご存知の方、ぜひ教えてください。
よろしくお願いいたします。

現在、Accessでデータベース作成をしています。

テーブル:  ・テーブルA
         ・テーブルB
         (A・B間にリレーションシップ設定)

クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成)

フォーム   ・検索用フォーム(デザインビューでフォーム作成より)
         ・検索結果フォーム(検索クエリを元に作成)

また、以下のような設定を入力しました。

「検索クエリ」の抽出欄
 Like "*" & [Forms]![検索用フォーム]![検索した...続きを読む

Aベストアンサー

>「Forms!検索用フォーム!検索したい名前」というタイトルの
>メッセージボックスが出る
これはそこに書いてあるものがAccessにとって不明なものだから
値の入力を要求してきているのです

検索用フォームは開いていますか?
フォームやテキストボックスの名前は間違っていませんか?

テーブルを結合したクエリであることとは全く関係ありません

QAccessでコードを入れると名前がでるようにしたい

Accessで顧客コードを入れると顧客マスタ通りの名前、住所TELがフォームに自動で出て、商品コードを入れると品物名が出るようにしたいのですが。
コードと商品名のはいったテーブルとフォームは作ったのですが・・・

Aベストアンサー

はじめの手順から書きます。

顧客コードと氏名・住所・TELが入ったテーブルを作ります。(顧客マスタの事)

>コードと商品名のはいったテーブルとフォームは作ったのですが・・・

と言うことですので、商品用のテーブルはできています。

もう1つ、テーブルとテーブルのリレーション(関連性)を設定しやすいように、

オートナンバーを設定した主キー用のフィールドと、
顧客コードと、商品コードを設定したテーブルを作ると良いでしょう。(以下Cテーブルと呼びます。)

あとは、テーブルのリレーション設定を行います。


リレーションシップボタンをクリックし、
テーブルをすべて表示させます。

次に、顧客用のテーブルから顧客コードをCテーブルの顧客コードへとドラッグし、参照整合性にチェックを入れます。
そして、作成をクリックします。

同様に、商品コードの入ったテーブルから、
Cテーブルへとドラッグし、参照整合性にチェックを入れます。そして作成をクリックします。

続いて、クエリの作成に移ります。
オブジェクトをクエリに変更します。

デザインビューでクエリを作成し、
テーブルの一覧を表示させます。

一覧から、まず
Cテーブルのオートナンバーを設定したフィールドを
ダブルクリックします。
次に、Cテーブルの顧客コードをダブルクリックします。
次に、顧客マスタに入っている名前・住所・TELの順にダブルクリックしていきます。

次に、Cテーブルの商品コードをダブルクリックします。
そして、商品名をダブルクリックして
必要なフィールドの設定が完了します。

クエリは、名前をつけて保存しましょう。
(以下では、Q顧客商品と呼びます。)

できた、Q顧客商品を
ウィザードを使用してフォームを作成するから
選択して、完了。

これで、コードを入れるだけで、
テーブルから名前・住所・TEL・商品名が
自動表示されるようになります。

文章で書き並べた感がありますので、
分かりにくければ、また、ご質問ください。では。

はじめの手順から書きます。

顧客コードと氏名・住所・TELが入ったテーブルを作ります。(顧客マスタの事)

>コードと商品名のはいったテーブルとフォームは作ったのですが・・・

と言うことですので、商品用のテーブルはできています。

もう1つ、テーブルとテーブルのリレーション(関連性)を設定しやすいように、

オートナンバーを設定した主キー用のフィールドと、
顧客コードと、商品コードを設定したテーブルを作ると良いでしょう。(以下Cテーブルと呼びます。)

あとは、テーブル...続きを読む

QACCESSのフォーム上で複数検索したい項目がある場合どうすればいいですか?

(1)部品ID
(2)日付
(3)入庫か出庫 
以上3つを検索したいのですがどうすればいいでしょうか?

(1)の部品IDはリストBOXの一覧から選択し、選択したものをテキストBOXに表示させるという形で作成しました。
(2)の日付はテキストBOXに手入力という形です。
(3)の入庫か出庫はコンボBOXで選択するという形です。

検索ボタンを作成してクエリの更新をかけて表示したいと思うのですが、3つの条件のうちその時により、全ての検索条件を入力しなくても1つでも条件を入力するとその条件が表示させるようにさせたいのです。

あと、何も条件を入力せず、検索ボタンを押すと全てのデータが表示させれるようにもしたいのです。

どのようなコードを記述すればいいでしょうか?
よろしくおねがいします

Aベストアンサー

>”このオブジェクトに値を代入することはできません”と表示され・・
失礼しました。フィルターのセットで最後が足りませんでした。あと[このオブジェクトに値を代入・・]のメッセージは抽出等で間違った指定方法をしているという事なのですが・・。
多分日付の抽出の仕方だと思いますので日付抽出のセットを少し変えましたのでメインフォーム上のボタンCmd1のクリック時のイベントを下記に変更してみてください。

Private Sub Cmd1_Click()
Dim MyCriteria As String

MyCriteria = "日付 ="
If IsNull(Text2) Then
MyCriteria = MyCriteria & True
ElseIf Not IsNull(Text2) Then
MyCriteria = MyCriteria & "#" & Me!Text2 & "#"
Else
End If

strfilter = MyCriteria
strfilter = strfilter & " And 部品ID Like '*" & Me.Text1.Value & "*' And 区分 Like '*" & Me.Cmb1.Value & "*'"

Forms!フォーム名!サブフォーム名.Form.Filter = strfilter
Forms!フォーム名!サブフォーム名.Form.FilterOn = True
Forms!フォーム名!サブフォーム名.Requery

End Sub

メインフォーム上のテキストボックスやコンボの値をサブフォームのフィルターに代入するときはMe!Text1の指定で良さそうなので上記でサブフォームにフィルターをかけられます。(試したらフィルターかけられました。)
これでどうでしょう。

>”このオブジェクトに値を代入することはできません”と表示され・・
失礼しました。フィルターのセットで最後が足りませんでした。あと[このオブジェクトに値を代入・・]のメッセージは抽出等で間違った指定方法をしているという事なのですが・・。
多分日付の抽出の仕方だと思いますので日付抽出のセットを少し変えましたのでメインフォーム上のボタンCmd1のクリック時のイベントを下記に変更してみてください。

Private Sub Cmd1_Click()
Dim MyCriteria As String

MyCriteria = "日付 ="
If IsNull(T...続きを読む

QAccessで検索フォームを作成したい。

Access2000でDBをつくりました。

そのデータから検索をして、抽出をしたいのです。
検索条件をいれるデータはこれ、と決まっていればパラメータークエリでもつくればいいのですが、どれでも検索条件にするようにしたい、と使用者から頼まれました。
入力方法としては単票フォームを開き、検索したい項目に、検索条件をいれると抽出される、というようなものです。
検索したい項目は日付かもしれないし、名前かもしれない、はたまた会社名かもしれない、とバラバラなのです。
その項目毎にパラメータクエリをつくるのもちょっと・・・と思うので。
何かいい方法はありますでしょうか?

よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。
まず最初に、抽出するフィールドは、[一覧]テーブルの全フィールドではないのですか? もし全フィールドなら、"SELECT * FROM 一覧 WHERE ・・・"としましょう。
さて、一応上のように全フィールドを抽出するとすると
intKen = CLng(Me!検索値)
SQL = "SELECT * FROM 一覧 WHERE Date_year = " & intKen
DoCmd.RunSQL SQL
となります。
KODAMARさんのコードでは、
"の位置がおかしい
SELECTやFROMの前後に半角スペースがあるか
SQLステートメントの文末がおかしい(最後の"がないなど)
文末の「;」は不要
などの問題点があります。
とりあえず、改行などは考えずに作りましょう。
ちなみに、テーブルは[一覧]しか使用しないので、テーブル名を省略してもかまいません。
またSELECT句で一部のフィールドのみ抽出する場合は、
SQL = "SELECT Date_year, Date_month, Date_day FROM ・・・"
という風に記述して下さい。
では。

こんにちは。maruru01です。
まず最初に、抽出するフィールドは、[一覧]テーブルの全フィールドではないのですか? もし全フィールドなら、"SELECT * FROM 一覧 WHERE ・・・"としましょう。
さて、一応上のように全フィールドを抽出するとすると
intKen = CLng(Me!検索値)
SQL = "SELECT * FROM 一覧 WHERE Date_year = " & intKen
DoCmd.RunSQL SQL
となります。
KODAMARさんのコードでは、
"の位置がおかしい
SELECTやFROMの前後に半角スペースがあるか
SQLステートメントの文末がおかしい(最後の"...続きを読む

QACCESSに同時アクセス(編集)をしたい

教えてください。
ACCESSのDBに複数のユーザが同時にアクセスして、
データを追加・編集したいのですが、
やはり、不可能でしょうか?

Aベストアンサー

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」

というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを
選択します。

こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと
呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された
データをdb2で編集することができます。

db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。
リンクテーブルに対してできないことはテーブル構造の変更くらいで
他のことはだいたいできると思っていいかと思います。

このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ
から同時に同じアクセスデータベースにアクセスすることは可能かと思います。

このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって
いた頃は、特段支障もなく業務を行なうことができました。問題は、これを
読んだ他の誰かが指摘してくださるかと思います。

同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい
ことになります。これを回避するためには、db2にワークテーブルを備えておき、
リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに
リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを
リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが
よいかと思います。私はそのようにしていました。

他に、ADOを使う方法などもあります。方法はいくつかありますから、
少し研究してみるといいですよ。(^-^)

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」
...続きを読む

QAccessの電話番号フィールド

Access2000以降について質問です。
顧客記録の電話番号フィールドについてお尋ねします。
異なるデータソース(テキスト形式)から各々に電話番号フィールドを含む2つのテーブルを作成したのですが、電話番号のフィールドがテーブル1では「ハイフンつき」の電話番号、テーブル2のほうでは「ハイフンなし」の電話番号になっています。また、いずれのフィールドもデータ型は「テキスト型」になっています。
やりたいことはテーブル1の電話番号にはないテーブル2の電話番号を含むレコードを不一致クエリを用いて抽出したいのですが、ハイフンがあるために全て不一致になってしまいます。
ハイフンを入れるのは地方の電話番号が多いため市外局番が3桁や4桁などで不揃いのためLEFT、RIGHT関数を用いて入れるのは不可能です。
そこでテーブル1のハイフンつき電話番号フィールドからハイフンを取り除きたいのですが、なにか方法はありませんか?VBAは分からないのでそれ以外でやる方法があれば教えて下さい。お願いします。

Aベストアンサー

選択クエリで、式1にReplace([電話番号],"-","")でやってみると
下記になりましたが、これが使えませんか。
ID氏名電話番号重複式1
1山田03-2345-6543a0323456543
2大島042-2345-234504223452345
3下田0720-34-3456a0720343456
4小出042-345-23450423452345
5中田07523-23456a0752323456
(たまたまあったテーブルを使っただけで、上記「重複」フィールドは意味ないので無視してください。)

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QAccess フォーム上でのテキストボックスとテーブルの連結

フォームヴィザードからフォームを作成すると、
テキストボックスと指定したテーブルを連結させることができるのですが、デザインビューでそれをするときに、テキストボックスのプロパティのコントロールソースにテーブル名を入れれば連結できるのかと思いきや、うまく表示されません。どこを設定すればテキストボックスとテーブルを連結できるのでしょうか?

Aベストアンサー

#2です。
デザインビューの空欄スペース(グレー1色のところ、升目なし)で右クリックをするとプロパティが出てきます。また、フォームウィザードの途中で、そのフォームと連結するテーブルかクエリを選択する画面が出てきます。

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で空白の時の抽出

access2000を使っています。まだ初心者なので難しい事はできないのですが、クエリを使って絞り込み検索のフォームを作っています。
テーブル内のデータで空白のデータがあります。その際にクエリの抽出条件にlike iif(is null([forms]![formA]![テキスト100]),"*","*"&[forms]![formA]![テキスト100]&"*")としています。フォームのテキストが空白のときは全て抽出するという条件を満たす予定で設定したのですが、テーブル内のデータが空白の物が抽出できません。データが空白がない様にすればいいのでしょうが、クエリの条件で設定できないものでしょうか?データはテキスト型です。

Aベストアンサー

クエリで、like "*"では、空白のレコードの抽出は出来ないのでは?
like "*" Or Is Nullになると思いますが、これをこのまま指定の抽出条件に記述したら、条件が・・・のエラーメッセージが出ると思います。そこで、何もかもを一度にするので無く、多少分解してやります。
抽出条件というフィールドを作成し、InStr関数を使用して、テキストの中に、指定した文字が含まれているかを調べます。この関数は、文字が見つかった時は、最初に見つかった文字位置を返してくるので、抽出条件は、<>0と指定します。
フォームに抽出条件が設定されていない時は、全件抽出したいという事ですので、テキストボックスが空白の時に、0以外をこのフィールドにセットすればOKでは?

フィールドに
抽出条件:IIf(IsNull([Forms]![formA]![テキスト100]),1,InStr([FAX番号],[Forms]![formA]![テキスト100]))
抽出条件に
<>0

こんな感じでどうでしょ?


人気Q&Aランキング