Доступ к форме, поиск записи из другой таблицы и вставка в поле текущей формы

У меня есть таблица, в которой хранятся счета-фактуры, и форма, основанная на этой таблице, которая выглядит как счет-фактура, чтобы вы могли искать предыдущие счета-фактуры. В настоящее время я создаю счета в Excel, а затем экспортирую данные в виде новой записи в таблицу счетов. Мне было интересно, есть ли способ создать счета из моей формы счета-фактуры. У меня есть таблица всех продуктов и цен, которые мы носим, ​​которые будут использоваться для счета. Есть ли способ поместить кнопку поиска в форму счета-фактуры, которая будет искать запись или «продукт» в таблице продуктов и вставлять ее в поля нового счета-фактуры? Я просмотрел некоторый код для подключения к таблице продуктов и вставки его в поля в форме счета, но как мне выполнить поиск? Есть мысли или идеи? Любая помощь приветствуется!!


person Lars    schedule 15.10.2010    source источник
comment
Обычно для этого используется раскрывающийся список элементов инвентаря, как показано на этом снимке экрана: dfenton.com/DFA/examples/InvoiceDetail.png . Это то, что вы ищете?   -  person David-W-Fenton    schedule 16.10.2010


Ответы (2)


Обработка этого с помощью VBA и управляющих событий обычно является лучшим выбором:

  1. Используйте свободное текстовое поле в вашей форме в качестве поля ввода поиска. Это позволит пользователю ввести некоторый текст в поле и нажать Enter или нажать соответствующую кнопку «GO», если вы решите выполнить какой-либо поиск.
  2. Установите свойство `OnChange` этого текста. box на имя макроса или метода, который вы разработали для обработки этого события (или свойства события click, если вместо этого вы настроили кнопку на a) проверьте значение текстового поля; и б) справиться с этим; обычно позволяет пользователю нажать клавишу ввода или нажать кнопку для выполнения этого действия). Вы также можете просто вызвать `inputbox` из какого-либо события нажатия кнопки, чтобы вывести подсказку, позволяющую пользователю ввести значение продукта для поиска.
  3. В вашем сценарии обработки используйте DLookup(), чтобы использовать это введенное пользователем значение в таблице продуктов для получить некоторую значимую ценность продукта, которую вы затем можете разместить в любом месте своей формы.

Кроме того, хотя я не знаком с вашей конкретной настройкой, кажется, что вам следует отказаться от файла excel и перейти к форме ввода MS Access с прямым интерфейсом пользователя. Вы можете обнаружить, что всегда легче иметь дело с пользовательским вводом напрямую, а не косвенно через сторонние файлы. Таким образом, вы лучше контролируете проверку пользовательского ввода и отзывы пользователей, а не опасаетесь того, что клиент Excel захочет поместить в эти электронные таблицы.

person bob-the-destroyer    schedule 21.10.2010
comment
безграничное текстовое поле? Вы имеете в виду несвязанное текстовое поле? - person David-W-Fenton; 22.10.2010
comment
Да, просто поленился с соглашениями об именах. - person bob-the-destroyer; 22.10.2010

Не уверен, что это правильный дизайн. Вы выставляете счет только за один продукт?

Кроме того, это не звучит так, как будто вы думаете с точки зрения первичных ключей.

И это не звучит так, как если бы вы думали «относительно».

Позвольте мне уточнить. В большинстве систем выставления счетов обычно есть таблица Invoices, а затем таблица InvoiceItems. Связь между элементами счета и счетом-фактурой будет представлять собой один счет-фактуру (потенциально, но не обязательно) для многих элементов.

Затем у вас есть таблица «Продукты». Отношения между продуктами и элементами счета-фактуры — это один продукт для многих элементов счета-фактуры. Т.е. вы можете продавать данный товар многим разным покупателям.

Итак, у нас есть:

Invoices -->  InvoiceItems
Products -->  InvoiceItems

Теперь вам нужно реализовать это в ваших формах.

Сопоставляя ваши таблицы и их отношения, вы создаете InvoiceForm и создаете InvoiceItemsSubForm. Подформа InvoiceItemsSubForm для хранения многих элементов является непрерывной формой.

В подформе InvoiceItemsSubForm у вас будет поле, которое принимает первичный ключ продукта (наряду с другими полями, такими как дата, количество приобретенных продуктов и т. д.).

Для поиска ваших продуктов у вас может быть поле со списком с полями ProductId и ProductName. Это поле со списком служит двум целям: оно позволяет вам искать ваши продукты и позволяет вам вводить продукт, который вы хотите, в свою запись InvoiceItem.

Если я неправильно понял ваш вопрос, мои извинения. Если я правильно понял ваш вопрос, вам предстоит многому научиться...

person awrigley    schedule 15.10.2010
comment
Нет, вы правильно поняли мой вопрос. Я думаю, что я не ясно объяснил себя. Я объясню вам всю ситуацию. Во-первых, у меня есть основная таблица «Продукты», которая содержит все различные марки продуктов, которые мы продаем, и цену, по которой мы покупаем продукт. Вне таблицы продуктов у меня есть разные уровни цен в зависимости от цены, по которой мы покупаем продукт, и количества, которое покупает клиент. У нас также есть некоторые индивидуальные запросы клиентов, потому что мы даем перерыв на определенные продукты. Таким образом, привязать цену к продуктам довольно сложно для выставления счетов, потому что один продукт может иметь много цен. - person Lars; 15.10.2010
comment
а также клиенты, имеющие много различных продуктов. Это описывает часть базы данных, посвященную ценам на продукты. Далее у меня есть сторона выставления счетов. Первоначально я настроил выставление счетов следующим образом; Я импортировал две таблицы в файл Excel, клиенты и продукты. Затем я настроил формат счета-фактуры. Я использовал поля со списком, чтобы получить информацию из импортированных таблиц в счет. После того, как счет-фактура был завершен, я создал макрос для записи информации из счета-фактуры в таблицу, в которой хранится копия счета-фактуры. Затем я создал форму, которая загружала сохраненные счета, чтобы я мог найти счет или сделать - person Lars; 15.10.2010
comment
изменения. Потом я задумался. Есть ли способ использовать форму счета-фактуры для поиска продуктов из таблицы продуктов и вставки данных в строку счета-фактуры. Таким образом, мне не пришлось бы проходить через Excel. То, как я должен был сделать в Excel, - это поле со списком для каждой строки в счете-фактуре, и я уверен, что мне придется сделать это и здесь. Я бы предпочел не использовать поле со списком, потому что у нас есть почти 2000 продуктов, и попытка найти один продукт в поле со списком с таким количеством продуктов - это головная боль. Теперь это имеет больше смысла? - person Lars; 15.10.2010
comment
Ларс, ты задаешь слишком много вопросов сразу. Разбейте проблему. Прямо сейчас вы потеряли меня, мне потребуется час, чтобы понять, что делает ваше приложение. Люди платят мне за это. Я всегда готов помочь по конкретным вопросам, но не пытаюсь выяснить, что не так со всем вашим приложением. - person awrigley; 15.10.2010
comment
Все, что я только что сказал, сделано и работает. Все, что мне нужно, это способ найти продукт и вставить его в форму счета-фактуры. - person Lars; 15.10.2010