MS Access несколько экземпляров единой формы для разных клиентов - PullRequest
0 голосов
/ 13 октября 2018

Еще один вопрос, который ставит меня в тупик.У меня есть непрерывная форма, которая показывает список всех наших клиентов в юридической фирме, в которой я работаю здесь.Прямо сейчас вы можете дважды щелкнуть имя клиента, после чего откроется форма (frmContactSummary), чтобы отобразить всю информацию для этого клиента.Проблема в том, что в настоящее время он разработан, чтобы клиент мог одновременно открыть только одну форму.Мы хотим иметь возможность открывать несколько версий или экземпляров frmContactSummary.Я позаимствовал код с сайта Аллена Брауна, который выглядит следующим образом:

Option Compare Database
Option Explicit
'Author:    Allen J Browne, July 2004
'Email:     allen@allenbrowne.com
'Found at:  http://allenbrowne.com/ser-35.html

Public clnClient As New Collection  'Instances of frmClient.

Function OpenAClient() 'ContactID As Integer
    'Purpose:   Open an independent instance of form frmClient.
    Dim frm As Form
    'Debug.Print "ID: " & ID

    'Open a new instance, show it, and set a caption.
    Set frm = New Form_frmContactSummary
    frm.Visible = True
    frm.Caption = frm.Hwnd & ", opened " & Now()

    'Append it to our collection.
    clnClient.Add Item:=frm, Key:=CStr(frm.Hwnd)
    Set frm = Nothing
End Function

Это работает определенным образом, но открывает только первую запись в нашей таблице контактов.Мы хотим, чтобы экземпляр открывался для определенной записи или идентификатора из таблицы контактов.Я пробовал этот код ближе к концу:

frm.RecordSource = "select * from Contacts where [ID] = " & ContactID

Но он не работал .. :-(

Любой совет будет высоко ценится! Спасибо!

1 Ответ

0 голосов
/ 13 октября 2018

Хорошо, когда вы создаете экземпляр формы, вы не можете использовать общий подход предложения where, подобный этому:

Docmd.OpenForm "frmContactSummary",,,"id = " & me!id

Вышеприведенное, конечно, будет работать для открытия одной формы.

Однако в вашем случае вам необходимо:

Создать новый экземпляр формы. Переместить / установить для источника данных формы значение ID. Показать форму

Поэтому нам нужны средства дляпереместите или установите форму для идентификатора строки, по которой мы только что щелкнули.

Итак, сразу после создания формы добавьте следующую строку кода:

Set frm = New Form_frmContactSummary

Frm.RecordSource = "select * from Contacts where id = " & me!id

И остальные вашиследует код.

Непонятно, является ли PK (ключ) таблицы «Контакты» «id» или «ContactID»

Таким образом, ваш код будет:

Frm.RecordSource = "select * from Contacts where id = " & me!id

Or

Frm.RecordSource = "select * from Contacts where Contactid = " & me!ContactID

Просто замените «ContactID» выше на фактический идентификатор PK, используемый в контактах таблицы.«Идентификатор» не имеет ничего общего с коллекцией.Мы просто создаем инструкцию SQL, которая будет тянуть / устанавливать форму в одну строку.Таким образом, единственная информация, требуемая здесь, это то, каково имя PK в вашей форме продолжения, и каково имя PK в вашей frmContactsSummary.(они будут иметь одинаковые имена в обеих формах и поэтому должны быть одинаковыми в выражении sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...