• 締切済み

アクセス DLookUpについて

職員番号入力後、自動で部署コードを入力できるようにしたいのですが、このアクセスのフォームで、正常に動くフォームと動かないフォームがあり困っております。どこが悪いか御教示お願いできませんでしょうか。 -------------------------------------------------------- 使用テーブル T_職員名簿 : ID、氏名漢字、氏名カナ、部署コード、部署名 イベントプロシ―ジャ内容 Private Sub 職員番号_AfterUpdate() Me.[部署コード] = DLookup("部署コード", "T_職員名簿", "職員番号= " & Me![職員番号] & "") End Sub エラー内容 イベントプロパティに指定した式更新後処理でエラーが発生しました。 --------------------------------------------------------

みんなの回答

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

-------------------------------------------------------->>>使用テーブル > T_職員名簿:ID、氏名漢字、氏名カナ、部署コード、部署名 ★T_職員名簿に【職員番号】が含んでいますね  ・部署のテーブルありますか  ・【職員番号】は重複無しに定義されていますか?  ・重複無しに定義するにはテーブルデザインで2通りあります。   1.主キーにする   2.インデックスプロパティで「重複無し」にする

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

添付図をご覧ください。今開発中の見積管理システムです よくご存知の【選択クエリー】ですね、クエリビルダーは フォームからも起動できます これでVBA無しで目的は達成できますね 全てのテーブルが1:∞のリレーションシップシップで 繋がっています リレーションが切れていると各テーブルのレコード数の  乗数になり膨大なレコード数になります ・クエリの作成手順 【作成リボン】→【クエリデザイン】  →【右端のテーブルリストからドラッグ】  ※リレーションの繋がりの無いテーブルはリレーションシップの  再構築が必要です。この問題をVBAでは解決できません ・リレーションシップ構築  【データベースツールリボン】→【リレーショできません  →【右端のテーブルリストよりドラッグ】   ※テーブルを重複するとテーブル名に番号が付いて    表示されるので右クリックから削除

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

回答№2です 「リレーションシップシップ」ご理解出来ましたか  添付をご覧ください フォームをデザインビューで開いたときプロパティーシートのレコードソース右端の…をクリックすると クエリービルダ―が起動し添付図のクエリ画面になります リレーションシップで関連付けられているので、 一つのテーブルになり、T_職員名簿の部署コードは必要有りません またT_職員名簿の部署ID(長整数型)をT_部署の部署名に  ルックアップすると部署名がコンボボックスになり、  T_職員名簿の部署名も除去 次にご存知と思いますが、VBAの作成について 1.空の「メニュー」フォームを作成します 2.メニューに「部署登録」のラベルボックス」を配置  ラベルボックスを配置すると入力した文字列は表示名でラベルは「ラベル858」のようになります  プロパティーのその他タグに在ります、ラベル名を表示名に  再入力します 3.イベントタグのクリックを選択するとVBAの表示になり  先頭行と END SUB 行が追加され表示され、

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

>職員番号入力後、自動で部署コードを入力できるようにしたいのですが、 このアクセスのフォームで、  正常に動くフォームと動かないフォームがあり困っております。 どこが悪いか御教示お願いできませんでしょうか。 -------------------------------------------------------------------------- 今晩は貴方のやろうとしている事はテーブルの「ルックアップ」 プロパティー」で解決できます。 添付図をご覧ください。 T_見積のIDとT_部署の見積IDが線でつながっていますね、これをリレーションシップシップと呼びます リレーションシップシップの設定は「ツール」リボンから入ります。 「DLookup」は使った事有りませんが Private Sub 部署コード_BeforeUpdate(Cancel As Integer) を次をお試しください Private Sub 部署コード_DblClick(Cancel As Integer) Private Sub 部署コード_Exit(Cancel As Integer)

  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

「T_職員名簿」には「職員番号」フィールドが無いようですが。 もしかしたら Me.[部署コード] = DLookup("部署コード", "T_職員名簿", "ID= " & Me![職員番号] & "")

関連するQ&A

  • AccessのDLookupについて

    AccessのDLookupについての質問です。 いろいろ調べたのですがわからなかったので教えてください。 テーブル「社員」…ID、社員コード、氏名、所属、回数 フォーム…テーブルと同項目 フォームで社員コードを入力すると、自動的に氏名、所属が表示されるようにしました。 しかし、所属が変更になった社員氏名がうまく表示できません。 ~例~ ID_社員コード_氏名 _所属_回数 1_1234   _山田 _東京_1 2_1234   _山田 _東京_2 3_1234   _山田 _大阪_3 とあったときに、表示したいのはID_3のデータなのですが、ID_1のデータが表示になってしまうのです。(回数が最大の氏名、所属を表示したい) x = Nz(DMax("回数", "社員", "社員コード=" & [社員コード]), 0) Me!氏名 = DLookup("氏名", "社員", "社員コード=" & [社員コード]) _ & " and 回数=" & x) としています。エラーは出ません。 どこが変なのでしょう? よろしくおねがいします。

  • Access Dlookup関数について

    Dlookupで悩んでいます。 ExcelのVlookと違い、“数字”のコードでなければ引っ張ってこれないのでしょうか? 以下、がその内容です。 「T_得意先マスタ」の得意先コードフィールドに aaa というコードがあり、得意先名フィールドに ○○商事 とあります。 どうやってもできないのです。 なぜか、aaa ではなく、数字(例. 123)にすると出ます。 教えてください。 Private Sub 得意先コード_AfterUpdate() Dim a As Variant, b As String b = "得意先コード = " & Me![得意先コード] a = DLookup("得意先名", "T_得意先マスタ", b) If IsNull(a) = True Then Me.テキスト1.Value = "該当がありません。": Me![得意先コード] = Null Else Me.テキスト1.Value = a End If End Sub

  • Accessで自動更新

    T_時間割というテーブルに曜日cd、時限cd、教室cd、更新日、更新者というフィールドがあります。 また、T_更新者というテーブルに教職員cdというフィールがあります。 *このテーブルにはファイルを開いている人の教職員コードが入力されています。 T_時間割をもとにフォームを作成し、曜日時限教室のいずれかが更新されると自動で更新日が更新されるようにするのは、コードビルダで実現できました。 曜日cdのプロパティの更新後処理に  Private Sub  曜日cd_AfterUpdate()  Me.更新日 = Now  End Sub と入力しました。 同じように曜日時限教室のいずれかが更新されると更新者フィールドにT_更新者の教職員cdが自動で入力されるようにしたく色々と試しましたが、エラーになってしまいます。  Private Sub  曜日cd_AfterUpdate()  Me.更新者 = T_更新者!教職員cd  End Sub とか  Private Sub  曜日cd_AfterUpdate()  Me.更新者 = DLookUp("教職員cd","T_更新者")  End Sub など。 方法をご存知の方がいましたら、ご教示ください。

  • Access2000のDLOOKUPについて

    Access2000にて収支管理のDBを作成中です。 フォームのDLOOKUPの設定についてお聞きしたいのですが、 テーブル 「00_Account code」に 「Account code」と「Account code テキスト」があります。 これを 「01_収支テーブル入力_フォーム」にて「Account code」入力時に「00_Account code」テーブルから「Account code テキスト」抽出しようと思い下記のような式を入れています。 =DLookUp("[Account code テキスト]","[00_Account code]","[Account code] =[Forms]![01_収支テーブル入力_フォーム]![Account code] ") しかしフォームにて[Account code]を入力してエンターをしても表示されず、一度フォームを閉じてから再度開くと表示されるという現象におちいっています。 これを入力→エンター時に表示させる方法はありますでしょうか? 何かの設定かと思うのですが・・・ぶつかっています。 どなたかお教え願えると助かります。よろしくお願いいたします。

  • Access2000 DLookup関数の使い方

    色々試してみたのですがわからないので質問させていただきます。 フォーム/サブフォームを作っています。 サブフォームにある商品コード(コンボボックス)を入力すると、同じサブフォームにある単位、単価に商品台帳テーブルの値(単位、単価)を持ってくるようにしたつもりなのですが・・・。 商品コードの更新処理後に以下のコードを記述したのですが、うまく動きません(エラーは出ない)。 Me![単価] = DLookup("[単価]","商品台帳","[商品コード] = [Forms]![フォーム]![サブフォーム]![商品コード]") どこが悪いか教えていただけないでしょうか?

  • アクセスのDLOOKUPについて

    DLOOKUPについて質問です。入力フォームにて製品番号を入れると製品名が出るようにして入力を楽にしたつもりでした。その方法はコントロールソースに=DLooKUP("品名","部番一覧表","部番='"&[部番]&"'")と入力しました。これは他の相談室の過去ログから拾いました。が、しかしテーブルの品名が空欄なんです。入力フォームにはちゃんと出ているのにどうしてテーブルに反映されないのでしょうか?スーパー初心者で何とかここまでたどり着きました。どうか教えてください、宜しくお願いします。

  • access Dlookup関数について

    いつもこちらではお世話になっています。 型が一致しません。エラー13 といったエラーが出ています。スペースを消したり、入力しなおしたりいろいろやってみたのですが、 このようなエラーがずっと出ています。「"」「#」「&」の位置などが問題なのでしょうか? Me.前回検針値 = DLookup("検針値", "T_水道検針", "部屋CD =" & Me!部屋CD & "" _ And "検針日 =#" & Me!前回検針日 & "#") ヘルプを見てもいろいろ調べても、わからないのでよろしくお願いします

  • Access DLookUp関数について

    DLookup関数を使用して、フォーム上にテーブルの値を返したいと思い、 試行錯誤をしたのですが、思うように値が返されません。。。 どうかお力添え下さいますようお願い致します。 「得意先&出荷先」テーブルに「得意先コード」「名称」項目を設け、 「詳細入力」フォームの「得意先コード」に値を入力をすると、 「得意先名称」項目に、テーブルの「名称」項目の値を返す動作を設定したいのです。 私は、下記のように書きましたが、「#Type!」と表示され、思うような動作をしません。 =DLookUp("[名称]","[得意先&出荷先]","[得意先コード] = '" & [Forms]![不具合詳細入力フォーム]![得意先名称] & "'") どこがおかしいのでしょうか?? またDLookUp以外でも、もし上記のような動作を実現させる方法がありましたら、ぜひご教授ください! 宜しくお願いいたします。

  • AccessのDlookup関数のエラー

    【Access2003】 dlookup関数について教えてください。 やろうとしていることは、ある商品について任意の日付の時点での数量を表示したく、 練習として、 DLookup("[数量]", "t_商品情報", "[品番] = '"& "1001" & "' and [日付] = #" & "2007/12/17" & "#") と記述したときには正常な値が表示されました。 その後、「品番」と「日付」をフォーム上のテキストボックスで任意の値を入力したいと思い、下記のように書き直しました。 DLookup("[数量]", "t_商品情報", "[品番] = '"& "[Forms]![フォーム1]![txt品番]" & "' and [日付] = #" & "[Forms]![フォーム1]![txt日付]" & "#") フォームのテキストボックスにそれぞれ値を入力したところ、「日付の構文エラー」となってしまいました。 勉強不足なのでしょうか、原因がわからず困っております。 お詳しい方のアドバイスをお待ちしております。宜しくお願い致します。

  • 【Access97】DLookupについて

     Access97を使って今、データベースを作成していますが、行き詰まってしまいました。  まず大まかな構成を書くと… <テーブル> 【○○班データ】テーブル ・「データナンバー」フィールド ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド 【部材マスター】テーブル ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド <クエリー> 【○○班データクエリー】 「○○班データ」テーブルを元に選択クエリーを作成(全てのフィールド) <フォーム> 上記のクエリーを元に作成。 ここからが質問内容になるのですが、「部材名」をコンボボックスで入力したら、Dlookup関数をテキストボックスのコントロールソースに記述して「部材ナンバー」と「部材コード」が表示されるようにはできました。 ですが、フォームで表示された「部材ナンバー」や「部材コード」がクエリーやテーブルには反映(入力)されておらず、どうしたらいいか手詰まりになっています。 もし、対処法を御存知の方がいらっしゃったら、是非とも御教示をお願いします。 念の為にテキストボックスのコントロールソースで記述したDLookup関数を書いておきます。 「部材ナンバー」の呼び出し =DLookUp("[部材ナンバー]","[部材マスター]","[部材名]='" & [部材名] & "'") 「部材コード」の呼び出し =DLookUp("[部材コード]","[部材マスター]","[部材名]='" & [部材名] & "'")

専門家に質問してみよう