1

ここから2010にアクセスします。

わかりました。Dlookupは、使用場所によって動作が異なるように見えます。ClockNo_AferUpdate()サブルーチン内にこのDlookupがあり、新しいフォームエントリでうまく機能して、ClockNoコンボボックスに入力された「ClockNo」に基づいて「EmployeeName」フィールドの下の「Employees」DBにあるラベルのキャプションを変更します。 :

Me.LabelName1.Caption = DLookup("[EmployeeName]", "Employees", "[ClockNo] =" & Forms![InspectionEntryForm]!ClockNo)

Employeesデータベースには、AutoNumberタイプの「ID」、Numberタイプの「ClockNo」、Textタイプの「Shift」、およびTextタイプの「EmployeeName」の4つのフィールドがあります。

再編集:

Employeesデータベースから取得するClockNoコンボボックスのRowSource:

SELECT DISTINCTROW [ClockNo], [EmployeeName] FROM [Employees] ORDER BY [ClockNo];

再編集を終了

私が探しているのはForm_Current()の同じ機能なので、古いエントリを参照すると、入力されたClockNoに基づいてラベルのキャプションが保持されます。残念ながら、上記のDlookupを再利用するだけで、「実行時エラー '3075':クエリ式'[ClockNo] ='の構文エラー(演算子がありません)」が発生します。

Dlookupをコントロールソースとしてテキストボックスにアタッチすることは問題なく機能しますが、ここではラベルが最適な使用法のようです。私はしばらくの間、DloopkupのCriteriaセクションをいじくり回してきましたが、実際の成功はありませんでした。

最終目標は、現在および過去のClockNoエントリに基づいて従業員の名前を表示するコンボボックスの横にシンプルなラベルを付けることです。名前は、時計番号とシフトとともに別の従業員データベースに保存されます。

ClockNoエントリとLabelの両方が同じデータベースの同じフォームで動作するため、これは非常に単純なはずです。ご入力いただきありがとうございます。

4

1 に答える 1

1

ClockNoこれを行ソースとして指定したコンボボックスがあります。

SELECT DISTINCTROW [ClockNo], [EmployeeName]
FROM [Employees]
ORDER BY [ClockNo];

なぜそこに行きたいのかわかりませんDISTINCTROWDISTINCT私はもっ​​と適切だと思ったでしょう。しかし、私はそれが重要だとは思いません。

重要な点は、コンボにはすでにが含まれているため、再度フェッチ[EmployeeName]するためにを使用する必要がないことです。コンボで選択した行の2番目の列から値を読み取るだけです。DLookup[EmployeeName]

フォームに。という名前のテキストボックスが含まれているとしますtxtEmployeeName。フォームの現在のイベントでは、次のようにすることができます。

Me.txtEmployeeName = Me.ClockNo.Column(1)

列のインデックス番号は0で始まるため、2番目の列は.Column(1)です。

また、コンボの更新後イベントでも同じことができます。

最後に、ラベルのを変更したかったのです.Captionが、テキストボックスのを変更する方法を説明しました.Value。この手法をラベルで機能させることができない場合は、代わりにテキストボックスを使用してください。テキストボックスのEnabledプロパティをに設定しNo、他のプロパティを調整して、ラベルと視覚的に区別できないようにすることができます。

別のアプローチはさらに簡単かもしれません。[ClockNo]コンボのバインドされた値として保持したいが[EmployeeName]、コンボの選択された値として表示したい場合は、最初の列の幅([ClockNo])をゼロに設定できます。[ClockNo]との両方[EmployeeName]がドロップダウンに表示されます。これが許容できる場合は、ラベルやテキストボックスを気にする必要はありません。

于 2013-01-29T18:03:02.877 に答える