2015-03-02 5 views
0

Я пытаюсь выяснить, как я могу создать форму с комбинированными полями, которая использует основную таблицу, в то время как поле со списками использует запрос. То, что я пытаюсь сделать, - это обновить поле со списками после их изменения. Это 65 списков со всеми по умолчанию (1 - 65). В главной таблице есть столбец с именем «Recall_Position», и запрос извлекает из этого и «Lastname» и «Firstname». Когда форма открыта, каждое поле со списком автоматически заполняется фамилией из строки, где значение «Recall_Position» равно по умолчанию для списков combobox.Изменение ячейки таблицы данных на основе форм comboxes

Пример 1: строка, содержащая номер один в «Recall_position», имеет имя Smith в той же строке под «Lastname», когда форма открыта, поле со списком, которое имеет «1», как установлено по умолчанию, откроется с помощью Smith уже выбранных в выпадающем списке. Это уже задано и работает без проблем.

Что я пытаюсь получить, когда в поле со списком выбрано другое «Последнее имя», оно очистит номер от «Lastname» и установит новое «Lastname» с этим номером по умолчанию для comboboxes.

Пример2: Используя пример 1, когда поле со списком изменено от Смита до Вудса, оно найдет Смита в «Фамилии» и переместится в ту же строку под «Recall_position» и очистит номер Смита, затем найдите Вудса и поместите «Recall_position» как "1".

Если мне нужно пройти и добавить VBA для каждой комбинации со сменой, это меня не беспокоит. Причина этого заключается в том, что я создаю отчет, который будет извлекать информацию на основе «Recall_position» для создания списка имен и телефонных номеров.

combo boxes

+0

Не уверен, что я понимаю - Можете ли вы загрузить скриншот? Какой combobox вы хотите изменить? Все 50? –

+0

Процедуру трудно понять только из слов. Попробуйте обновить свой вопрос с помощью нескольких фотографий и пошагового описания. Я думаю, что другим людям тоже сложно, так как пока никто не ответил. –

+0

обновил вопрос. – user2002716

ответ

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 

первенствует (извините, если я перепутал строки и столбцы). Надеюсь, вы понимаете. Попробуйте использовать Debug.Print rst!WhateverYouLike в VBA и получить представление о кодах.

С уважением, Эмиль.

+0

Это вроде близко. Я не пытаюсь изменить какую-либо информацию в строке, кроме числа в Recall_position. То, что я пытаюсь найти или получить помощь, говорит, что combobox с параметром «1», поскольку его значение по умолчанию называется combo1. Итак, код, который начинается с Private Sub Combo1_Change(), находит «1» в таблице («Userdata») столбца «Recall_Position» и очищает его. Затем найдите фамилию, в которой поле со списком было изменено, и в той же строке в разделе «Recall_position» введите номер 1 – user2002716

+0

Или, может быть, я думаю, что Private Sub Combo1_AfterUpdate() – user2002716

+0

Я бы сказал, что вам нужен код, который я предоставил. Если вы хотите передвигаться по номерам в таблице, вам нужен код выше. Вы не можете сделать это иначе, кроме как сделать запрос и связать это с ... Если вы хотите поменять f.x. номера 1 и 5, так что 5 переходит к строкам 1 и 1 к строке 5, вам необходимо использовать вышеуказанный письменный код. –

Смежные вопросы