Как я делаю доступный для редактирования Запрос на объединение?

Это, является трудным дать Вам очень значимый ответ. Вы посмотрели на дисковые затраты ввода-вывода? Где Вы сохраняете файлы базы данных - возможно, это - ввод-вывод, который останавливается? Существует столько переменных здесь, которые могут влиять на производительность. Возможно, они, время потрачено Вашим UI или отобразить ли данные, возможно, это время, взяты Сетью?

, Возможно, самый легкий путь - где Вы будете видеть, большинство усилений должно будет разделить таблицу - если Вы идете Enterprise Edition SQL Server 2005.

Снова, не имея доступа к фактическим планам запросов, perfmon статистика это является могущественным трудно, чтобы сказать Вам точно, что является проблемой. Ваш вопрос просто не дает нам достаточно для продолжения - и все - просто предположение.

6
задан Alexis Pigeon 24 July 2013 в 17:07
поделиться

2 ответа

Если запрос является запросом объединения, вы не может обновить данные в запросе.

http://support.microsoft.com/kb/328828

Когда Access объединяет строки из разных таблиц в запрос на объединение, отдельные строки теряют идентификационные данные базовой таблицы. Access не может знать, какую таблицу вы хотите обновить, когда пытаетесь изменить строку в запросе на объединение, поэтому он запрещает все обновления.

Следующий вопрос редактировать :

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

например, в вашем объединении у вас будет что-то вроде этого :

SELECT 'Table1', id, ... FROM Table1
UNION 
SELECT 'Table2', id, ... FROM Table2

Затем с помощью формы ввода данных и VBA вы можете просмотреть значения текущей выбранной строки и обновить соответствующую таблицу.

РЕДАКТИРОВАТЬ 2: На один день, когда

Это вставляет значения в таблицу с помощью Access VBA

Option Compare Database
Option Explicit

Public Sub InsertDataPunk(TargetTable As String, IdVal As Long, MyVal As String)

    Dim conn As ADODB.Connection
    Set conn = CurrentProject.Connection

    Dim sql As String
    'You could build something fancier here
    sql = "INSERT INTO " & TargetTable & " VALUES (" & IdVal & ",'" & MyVal & "')"

    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = conn
    cmd.CommandText = sql
    cmd.CommandType = adCmdText
    cmd.Execute

End Sub  


InsertDataPunk "Table2", 7, "DooDar"
7
ответ дан 8 December 2019 в 16:08
поделиться

Я бы предпочел объединить эти отдельные таблицы в главную таблицу. Со всеми данными в одной таблице это может быть намного проще.

Однако, предполагая, что у вас есть , чтобы держать отдельные таблицы отдельно, измените запросы сопоставления, чтобы включить выражение поля для исходной таблицы имя. И включите это поле имени таблицы в запрос UNION.

Затем создайте непрерывную форму на основе запроса UNION только для чтения. Добавьте подчиненную форму на основе другого запроса, который возвращает единственную редактируемую запись из соответствующей таблицы. В событии On Current главной формы перепишите RowSource для запроса подчиненной формы:

strSQL = "SELECT fields_to_edit FROM " & Me.txtTableSource & _
    " WHERE pkfield =" & Me.txtPKeyField & ";"
Me.SubformName.Rowsource = strSQL
Me.SubformName.Requery
8
ответ дан 8 December 2019 в 16:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: