Привязка одной формы к нескольким таблицам и сохранение данных по щелчку мыши

StackOverflow https://stackoverflow.com/questions/1834307

Вопрос

Итак, у меня есть форма, которую я хочу, чтобы пользователь использовал для обновления нескольких таблиц.Я не хочу, чтобы форма была привязана к таблицам, так как я бы предпочел сделать это с помощью VBA (я думаю, я не знаю).

Итак, вот небольшой пример таблицы

Доступный для использования

UserID
First
Middle
Last
Division
Title

Оснащаемый

EquipID
AssignedLaptop
Model
Barcode

Мягкий стол

SoftID
SoftwareName
License#
Custom (running sum to calculate how many licenses are left....another question)

Подлежащий замене

UserID
SoftID
EquipID

Итак, вот как я расставляю столы.Все эти текстовые поля / cmb существуют в одной таблице, и я хотел бы иметь возможность сохранять эти данные из этой одной формы во все относительные таблицы одним нажатием кнопки.

Итак, кто-нибудь может помочь мне со следующим:

Если у меня есть эта несвязанная форма, заполняемая после нажатия кнопки Create New, как тогда я могу указать скрытым текстовым полям (которые в идеале должны содержать идентификационные номера " "), чтобы они заполняли новые идентификационные номера (автономера) для каждой из таблиц в них, чтобы я мог назначить инструкцию UPDATE SQL для нажатия кнопки SAVE в VB для сохранения данных?

Могу ли я настроить это так, чтобы просто "таблица обмена" (понятия не имею, почему я ее так назвал) заполняла идентификационные номера для других таблиц, а не наоборот?

Неужели я иду по этому пути неправильно

Редактировать:

Я просто пытался привести вам пример, чтобы увидеть, возможно ли то, что я пытался сделать, с несколькими таблицами (в конечном счете, с несколькими ключами) в одной форме, и если да, то чем это отличается от выполнения этого с одной формой / таблицей:Я часто использую несвязанный подход из-за форм, которые мне приходится создавать, и необходимости постоянно переносить параметры из одной формы в другую в VBA.Я думаю, что быстрее закодировать это самому?Таким образом, для этой концепции у меня всегда есть скрытое текстовое поле в форме, которое обычно содержит IDNumber относительной таблицы.Таким образом, для нажатия кнопки сохранить потребуется всего лишь простое SQL = * WHERE Tbl_ID = frmID своеобразная идея.

Все, что меня интересовало, - это эти вопросы?

Когда вы запускаете INSERT, должен ли идентификационный номер присутствовать в ИНСТРУКЦИИ или access просто назначит вам следующий относительный номер при выполнении?

Если нет Учитывая описанный выше метод, как я могу определить этот номер (ID, который мне нужно использовать) самостоятельно, с помощью кода?

Еще один вопрос?Как вы можете отключить функцию прокрутки записей колесиком мыши в связанной форме?

Это было полезно?

Решение

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

Это то, что у вас есть:

  • У вас есть несвязанная форма, которая не связана ни с какой таблицей
  • Эта несвязанная форма, которая никоим образом не связана с какой-либо таблицей, будет разработана вами путем добавления некоторых текстовых полей, а также полей со списком и кнопок
  • Внутри этих текстовых полей у вас есть несколько текстовых полей, в которых будет храниться идентификатор (ключевое значение) строки.Чтобы при сохранении идентификационный номер возвращался в текстовое поле
  • Как только идентификационный номер будет установлен в это скрытое поле, вы сможете выпускать обновления для всех таблиц, которым требуется этот идентификационный номер

Это правильно звучит?Если это так, то все очень просто.Все, что вам нужно сделать, это после нажатия кнопки "Создать" выполнить вставку, что-то подобное:

 ' Command to Insert Records.
      Dim cmdInsert As New OleDbCommand()
      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"
      cmdInsert.Connection = cnJetDB
      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))
      oleDa.InsertCommand = cmdInsert

Затем вы выдаете другую команду, чтобы вернуть идентификатор, а именно ваш ID:

  ' Create another command to get IDENTITY value.
  cmdGetIdentity = New OleDbCommand()
  cmdGetIdentity.CommandText = "SELECT @@IDENTITY"
  cmdGetIdentity.Connection = cnJetDB

Вы всегда можете получить идентификационный номер с помощью SELECT @@IDENTITY

Итак, в вашем коде позади вас установите для текстового поля значение SELECT @@IDENTITY.Я не пользовался access более 5 лет, но я помню, что делал что-то подобное.Получив этот идентификатор, вы помещаете его в свое скрытое текстовое поле.Это поможет вам выполнять ОБНОВЛЕНИЯ, использующие этот идентификатор.

Вот хорошее место для начала: http://support.microsoft.com/kb/815629 Вот еще одна замечательная статья, которая может вам помочь: http://support.microsoft.com/kb/815629

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top