0

コンボ ボックスがクエリを使用しているときに、メイン テーブルを使用するコンボ ボックスでフォームを作成する方法を理解しようとしています。私がやろうとしているのは、コンボボックスが変更された後に更新することです。それぞれが独自のデフォルト (1 - 65) を持つ 65 個のコンボ ボックスです。メイン テーブルには「Recall_Position」という名前の列があり、クエリはこの列と「Lastname」および「Firstname」から取得します。フォームが開かれると、各コンボボックスには、「Recall_Position」がコンボボックスのデフォルトと等しい行の姓が自動的に入力されます。

例 1: "Recall_position" の番号 1 を含む行の "Lastname" の下の同じ行に Smith という名前があります。フォームを開くと、デフォルトとして "1" が設定されているコンボボックスが開き、Smith がすでに選択されています。コンボボックス。これはすでに設定されており、問題なく動作しています。

私が取得しようとしているのは、コンボボックスで別の「姓」を選択すると、「姓」から番号がクリアされ、そのコンボボックスのデフォルト番号で新しい「姓」が設定されることです。

例 2: コンボ ボックスが Smith から Woods に変更されたときに Example1 を使用すると、"Lastname" で Smith が検索され、"Recall_position" の下の同じ行に移動し、Smith の番号をクリアしてから、Woods を検索し、"Recall_position" を "1" にします。

変更時にすべてのコンボボックスに VBA を追加しなければならない場合でも、気にすることはありません。この背後にある理由は、名前と電話番号の名簿を作成するために、「Recall_position」に基づいて情報を取得するレポートを作成しているためです。

コンボボックス

4

1 に答える 1

0

例 2 でこれを使用してみてください。

Dim dbs As New ADODB.Connection
Dim rst As New ADODB.Recordset

Set dbs = CurrentProject.Connection
  With rst
       Set .ActiveConnection = CurrentProject.Connection
       .Source = "TheTableYouHave"
       .CursorLocation = adUseClient
       .CursorType = adOpenKeyset
       .LockType = adLockOptimistic
       .Open
   End With
rst.MoveFirst

rst.Find "[Recall Position] "27"" ' Will go to line number that hold 27
OldLastName = rst!LastName ' Save the old last name
rst!LastName = NewLastName ' Replace lastname in line 27 with new last name

set dbs = Nothing
set rst = Nothing

などなど

rst![Recall Position] を別の数字に置き換えることもできます。これは、これを行う方法のアイデアを提供するためのものでした。何かを使用するときrst.は、レコードセットに何を移動するか、検索するかなどを指示し、それがrst!何かである場合は、レコードセットに入ってセルを読み取ったり、セルを置き換えたりします。エクセルほどではありません。セル (2,5) を実行することはできません。この場合、次のようになります。

rst.move 5
rst![Column 2 Name] = NewValue

に対応する

cells(2,5) = NewValue 

Excelで(行と列を混同していたらごめんなさい)。お分かりできると良いのですが。Debug.Print rst!WhateverYouLikeVBA でを使用してみて、コードを理解してください。

よろしく、エミル。

于 2015-03-18T12:04:51.457 に答える