Связывание одной формы с несколькими таблицами и сохранение данных по клику - PullRequest
0 голосов
/ 02 декабря 2009

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

Итак, вот небольшой столик

UserTable

UserID
First
Middle
Last
Division
Title

EquipTable

EquipID
AssignedLaptop
Model
Barcode

SoftTable

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

ExchangeTable

UserID
SoftID
EquipID

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

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

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

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

Я поступаю неправильно

EDIT:

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

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

Когда вы запускаете INSERT, должен ли идентификационный номер присутствовать в ЗАЯВЛЕНИИ или вам нужно будет просто назначить следующий относительный номер при выполнении?

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

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

1 Ответ

2 голосов
/ 02 декабря 2009

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

Вот что у вас есть:

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

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

 ' 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

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

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

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

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

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

...