• ベストアンサー

Accessフォームのコントロールソースについて

こんにちは。お世話になります。 分からないので押していただけると助かります。 Accessのフォームでテキストボックスに表示するデータについて何ですが、 テーブルT1の項目名[住所]が、Nullの時に、[電話番号]を表示する形にしたいのですが、 コントロールソースに =IIF([ID]is null ,[仮ID],[住所] =Nz([ID],[仮ID]) のどちらを入力しても、#エラーになります。 そこで、そのようなことってできるのかどうかを教えていただきたいのです。 また、できたとして、新規入力する時には、T1のテーブルの[ID]欄に入力するようにしたいのですができますか? レコードソース=T1 です。 すみませんがよろしくお願いいたします。

  • totis
  • お礼率47% (43/90)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

さらに疑問点があります。 [T1]テーブルに、[ID]と[仮ID]というフィールドがあるのですね。 その場合、[仮ID]を表示するコントロールはフォーム上にはないのでしょうか。 [ID]と[仮ID]が両方入力されているデータはあるのでしょうか。 その場合の[仮ID]は表示しないのでしょうか。 また、質問のようにコントロールソースを設定したいということは、[ID]がNullの場合は自動的に、 [仮ID]→[ID] と代入するということでしょうか。 (コントロールソースを設定するなら当然そういう意図だと思いますが。) 新規入力する際、[仮ID]も新規入力することがあるのでしょうか。 いろいろ疑問点はありますが、一応対応策を。 [T1]テーブルの[ID]と[仮ID]フィールドに連結したテキストボックスをそれぞれ用意しておきます。 (テキストボックス名は、それぞれ[ID]、[仮ID]とします。) フォームのレコード移動時(Current)イベントに、 If Len(Me!ID.Value) = 0 Then   Me!ID.Value = Me!仮ID.Value End If とします。 [仮ID]を表示する必要がなければ、[可視]プロパティを「いいえ」にして、フォーム上のどこか邪魔にならないところに置いておけばいいでしょう。 これで、新規入力時も既存データ更新時も[ID]のテキストボックスに入力して、[ID]に入ります。

その他の回答 (2)

回答No.3

こんばんは。 1.表示だけならSWITCHで行うのはどうでしょうか? 例: =Switch(IsNull([住所])=False,[住所],IsNull([住所])=True,[電話番号]) しかし、この場合は入力できません。 2.テーブルに連結させたままでの表示。 ベタなやり方です。 住所と電話番号のテキストボックスを2つ作成して、 レコードが読み込まれるときに、住所のNullチェックを行い 必要なテキストボックスだけを表示するというのはどうでしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 疑問点がいくつかあります。 まず、 [ID]=[住所] [仮ID]=[電話番号] でしょうか。 だとすると、 =IIF([ID]is null ,[仮ID],[住所] という式の意味がわかりませんが。 >新規入力する時には、T1のテーブルの[ID]欄に入力するようにしたい [ID]欄に何を入力したいのでしょうか。 住所?電話番号?

totis
質問者

補足

ゴメンナサイ。 ちゃんと確認せずに投稿してしまいました。 大変失礼をいたしました。 [ID]=[住所] [仮ID]=[電話番号] です。(住所、電話番号は記入ミスです。忘れてくださいすみません) =IIF([ID]is null ,[仮ID],[住所] →IIF([ID]is null ,[仮ID],[ID]) の記入ミスです。ゴメンナサイ。 [ID]の欄にはIDを入力したいのです。 訳の分からない文章のまま質問してしまい申し訳ございません。

関連するQ&A

  • Accessフォームのコントロールソース

    Microsoft Accessでフォームを作っています。テーブル1とテーブル2があり、レコードソースはテーブル1に設定していますが、フォームの1項目のみテーブル2を参照したいです。どんな設定にすればよいですか。 レコードソースは「駅時刻リスト」、画像の「列車名」は直接入力、「列車コード」は「駅時刻リスト」を参照、「完了フラグ」のみ「素列車リスト」から参照

  • ACCESS2000 フォームとテーブル

    カテゴリを間違っていたので再度ご質問致します。 ACCESSのフォームなんですけど、 フォームとサブフォームがあり、サブフォームの数量の合計をフォームの合計に表示するように出来たのですが、 表示ではなく、テーブルに保存される形にしたいのですが・・。 テーブル T_(1) (1)No. (2)企業名 (3)合計 フォームのレコードソースは、T_(1)です。 今のやり方では、フォームで見ると表示されてますが、 テーブルの合計には保存されてません。 どうすればよいでしょうか? 今は、コントロールソースに、=[サブフォーム名].![テキスト名] にしています。

  • ACCESS フォーム設計

    ACCESS2003を使用して、基本情報と明細のテーブルとフォーム設計をしています。基本テーブルに担当者IDと氏名があり、明細テーブルにも担当者IDと氏名があります。明細のフォームで、担当者IDを入力したら、基本情報にある担当者名を自動表示し、明細テーブルに書き込みたいのですが、=DLookup("[氏名]", "[基本情報]", "[担当者ID] = " & Forms("明細")("[担当者ID]")) を指定しても、うまく動作しません。明細フォームの氏名のコントロールソースを空白にしても、テーブルとリンクしてもだめです。 又、明細の更新フォームとして、担当者IDを入力したら、該当レコードの内容を全て表示し、変更内容を入力後、同一主キーでUPDATEモードで書き込む方法も教えてください。

  • ACCESS 2007で帳票フォームで絞り込み

    はじめまして、ACCESS初心者なのですが、困っています。 商品マスターというテーブル(商品ID、メーカー名、品名、型式)があって、見積フォームの サブフォームの見積詳細フォーム中で、メーカー名、品名、型式をコンボボックスで選択できるようにしており、以前見積もりしたことのある商品をメーカー名、品名、型式をコンボボックスでテーブルから 絞り込みをしながら参照してくるようにしたいのですが、テーブル内にあるレコードと同じものを 選ぶと新しくレコードが追加されてしまいます。同じ場合は追加したくないのですがどうしたら良いのでしょうか? レコードソースはクエリQ_見積詳細で、  見積詳細テーブル(見積No、注文No、数量、単価、商品ID)と商品マスター(商品ID、メーカー、  品名、型式)を商品IDでくっつけているものです。  コンボボックスは3つあって、  1つ目のメーカーCoのコンボボックスはコントロールソース メーカー  値集合ソースはクエリでQ_メーカー  Q_メーカーは商品マスターのテーブルで  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・ON  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・OFF フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]         _Is Null,True,[商品マスター]![品名]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![品名IDCo]) テーブル・・なし 集計・・グループ化  2つ目の品名IDCoのコンボボックスはコントロールソース 品名  値集合ソースはクエリでQ_品名  Q_品名は商品マスターのテーブルで  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・OFF  フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]         _Is Null,True,[商品マスター]![メーカー]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![メーカーCo]) テーブル・・なし 集計・・グループ化  3つ目の型式Coのコンボボックスはコントロールソース 型式  値集合ソースはクエリでQ_型式  Q_型式は商品マスターのテーブルで  フィールド・・型式 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・品名 テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]  フィールド・・メーカー テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]   上記でやると、絞りこみはできるのですが、型式で同じものが2個表示されたり、レコードが新規  で追加されてしまいます。  よろしくお願いします。

  • フォームの計算結果を小数点以下で切り捨てたい

    借入金に対する支払い回数と金額を求める計算式フォーム「テーブルなし」を作り始めました。下記の数式は「借入金」と「金利」と「手数料」の総額を「回数(任意指定)」で割って、月額を表示する最後のテキスト窓のですが、小数点以下の切り捨てた数値を表示したいと思っています。 ■経過と現状(やってみたこと) 「最初にレコードソースに設定した数式」  =Nz([総額])/Nz([回数]) ※数式を入力する前は「#Div/0!」が表示されたので変更。 「変更した現在の数式」  =IIf(Val(Nz([回数]))=0,Null,[総額]/[回数]) ※WEBにて探索しコピーして使用する。 ■やりたいこと  =IIf(Val(Nz([回数]))=0,Null,[総額]/[回数]) 小数点以下を切り捨てる記述「追加方法」を教えてください。 ■追加のお願い 一般的に小数点以下四捨五入が多く用いられている事もあり、=IIf(Val(Nz([回数]))=0,Null,[総額]/[回数]) で表示される数値を四捨五入する場合の記述も教えてください。 以上ですが、宜しくお願いします。

  • access2007 フォームについて

    フォームで「グループ化の設定」はできるのでしょうか? 初心者ですが、よろしくお願いします。 例)テーブル(レコードソース) フィールド1 ,フィールド2 日本     ,ハンバーグ 日本     ,お好み焼き 日本     ,(Null ) アメリカ   ,スパゲッティ アメリカ   ,ハンバーグ アメリカ   ,ビール フランス   ,(Null ) フランス   ,(Null ) フランス   ,(Null ) ※フィールド1は必ず3レコードあると想定しまして、、 ↓ フォーム(1レコード目) 日本   ハンバーグ      お好み焼き      (Null ) フォーム(2レコード目) アメリカ スパゲッティ      ハンバーグ      ビール フォーム(3レコード目) フランス (Null )      (Null )      (Null ) ※Null 値に対し、レコードの更新を行いたく、また、実際にはフィールド1が30レコードずつあるため、グループ化設定を行い効率的なフォームを作りたいのですが、、、 分かりにくいかもしれませんが、ご教示下さい。

  • データ入力用フォームでコントロールが表示されない

    はじめまして、 現在、ACCESS2000のMDBからADP+SQLへの移行をしているのですが。 「t_受注」テーブルをデータソースとするフォームを 「データ入力用プロパティ」を「はい」にして、 データ入力用のフォームとして使っていました。 ADPへアップサイジングしたら コントロールがまったく表示されずに困っています。 「データ入力用プロパティ」を「いいえ」にすると、 全てのコントロールと「t_受注」テーブルのデータが見えます。 どうか宜しくお願いします。

  • Access2010でフォームロード時に表示したい

    アクセス2010で、職場テーブルの情報を表形式でフォームに表示しています。例として以下とします。 職場テーブル ID、社員ID、職場、住所・・・ 社員テーブル 社員ID、名前、年齢・・・ そこで、コンボボックスを使い、社員テーブルをリスト化して選択できるようにしています。 コンボボックスには、値集合ソース(SELECT [社員テーブル].[ID],[社員テーブル].[名前] FROM [社員テーブル])を使い、IDと名前を一覧で表示しています。 このようなフォームがあった時に、フォームを読み込んだときに、このコンボボックスのとなりのラベルに、社員IDに該当する名前を表示したいと考えていますが、どのようにしたらよいでしょうか? Me.社員名.Caption = Nz(Me.社員リスト.Column(1)) このようにしても、レコード件数分を繰り返してくれるわけではないようなので、悩んでおります。 解決策をご存じの方はよろしくお願いします。

  • アクセス コンボボックス コントロールソース

    フォームにはレコードソースは指定してないけど そのフォーム乗っているコンボボックスのコントロールソースに とあるクエリの値を表示したい場合は どうすればいいでしょうか?

  • フォームのレコードソース(Access2000)

    質問させていただきます。 フォームの「レコードソース」でテーブルとクエリーのほかに、「SELECT テーブル名、フィールド名・・・」というのがあります。これもクエリーなのでしょうか? ちなみに、レコードソースの右にある「---」をクリックすると「SQLステートメント:クエリビルダ」というものが開きます(クエリー画面と同じ?)。 また、フォームのレコードソースはテーブル、クエリー、SOLステートメントのどれにすれば良いのでしょうか?