2010-11-10 6 views
0

Я борюсь с созданием нескольких форм в MS Access 2007. Я выполнил следующее: у меня есть пациентов форма, где я могу создавать/редактировать записи пациентов. Когда нажата кнопка save, я открываю другую форму, которая имеет задачу ввода информации, относящейся к 2 таблицам. Таблицы в этой форме находятся в соотношении 1-1, и оба используют внешний ключ (patiendID из таблицы пациентов).MS Access 2007: невозможно изменить поля после «открытия кода» формы

Мне удалось сделать все хорошо: когда я обновляю/спасаю нового пациента, у меня открыта новая форма, в которую войдут кучу результатов лабораторных исследований. Некоторые результаты относятся к одной таблице, а другая - к другой таблице. поле patientID, которое также видно на этой 2-й форме, устанавливается так, как должно быть. Однако, когда я пытаюсь ввести ЛЮБОЕ значение в ЛЮБОЙ области в этой форме, я получаю следующее предупреждение в строке состояния: «Этот набор записей не обновляется». Я думаю, что это связано с тем фактом, что я фактически открыл 2 таблицы в одной форме, но, возможно, я ошибаюсь.

Вот код, я использую, чтобы открыть 2-й вид:

Private Sub save_Click() 
    Dim m_query As String 
    m_query = "INSERT INTO labresults (patientID) VALUES (" & Me.ID & ")" 
    If Me.Dirty = True Then 
    Me.Dirty = False 
    End If 
    If DCount("patientID", "labresults", "patientID = " & Me.ID) = 0 Then 
     CurrentDb.Execute m_query, dbFailOnError 
    End If 
    m_query = "INSERT INTO par14MO (patientID) VALUES (" & Me.ID & ")" 
    If DCount("patientID", "par14MO", "patientID = " & Me.ID) = 0 Then 
     CurrentDb.Execute m_query, dbFailOnError 
    End If 

    If CurrentProject.AllForms("labresults").IsLoaded = True Then 
     Forms![labresults]![patientID] = Me.ID 
     Forms![par14MO]![patientID] = Me.ID 
    Else 
     DoCmd.OpenForm "labresults", acNormal, , "idPAcijenta = " & Me.ID, acFormEdit, acWindowNormal, Me.ID 
    End If 

End Sub 

Любые идеи, что происходит ???

Thx a bunch! Я по-прежнему ищу работу и пытаюсь ... Я опубликую свои выводы, если мне удастся разобраться!

+1

Это не обычный способ делать вещи в Access. Вы не нашли http://stackoverflow.com/questions/4135030/insert-a-record-into-table-in-ms-access в любом случае полезным? – Fionnuala

+0

Huh ... Я думал, что SO сообщит мне, когда ответ будет изменен. Сейчас я читаю его и прокомментирую. Большое спасибо за Ваш ответ. – hummingBird

ответ

0

Оказывается, это действительно невозможно сделать :). Закрывая это, и считая, что это ответ.

Редактировать: Мне было предложено, чтобы мое последнее утверждение не было правдой. Однако я решил вещи «вручную», и теперь все в порядке. Я продолжу и приму этот ответ, чтобы сохранить свой ответ на хорошем уровне.

+1

Если то, что вы пытаетесь сделать, не может быть сделано, вы действительно не очень хорошо это объяснили, так как ваши вопросы описывают доступность Bog-Standard. –

+0

Ну, я нашел его на сайте MS: если вы создаете форму с полями из более чем одной таблицы, она открывается как только для чтения, так как она не может быть сохранена как запись. – hummingBird

+0

Неверно, что форма с источником записи, которая SELECT из более чем одной таблицы, автоматически доступна только для чтения. Что бы вы ни читали на веб-сайте MS, вы скорректировали его неправильно. Независимо от того, редактируется ли многосегментный SELECT, полностью зависит от характера конкретной инструкции SELECT. Кроме того, DISTINCTROW только для Jet/ACE часто вынуждает неотредактированные SELECT в редактируемое состояние. –

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