|
|
|
| Ну бывает. Торможение происходит.
Из свободной формы работает. Однако добавляет столько раз, сколько записей в таблице есть.
INSERT INTO Пациенты ( Фамилия, Инициалы, ДатаРождения, Пол )
SELECT [Forms]![Поиск ввод пациентов]![ПолеСоСписком2] AS Выражение1, [Forms]![Поиск ввод пациентов]![ПолеСоСписком4] AS Выражение2, [Forms]![Поиск ввод пациентов]![Поле6] AS Выражение3, [Forms]![Поиск ввод пациентов]![ПолеСоСписком13] AS Выражение4
FROM Пациенты;
Чего -то надо тут менять? | |
|
| |
|
|
|
|
Private Const SQLDATE As String = "\#mm\/dd\/yyyy\#"
strSQL="INSERT INTO Пациенты ( Фамилия, Инициалы, ДатаРождения, Пол ) Values ('" & Me.ПолеСоСписком2 & "', '" & Me.ПолеСоСписком4 & "', " & Format$(Me.Поле6, SQLDATE) & ", '" & Me.ПолеСоСписком13 & "')"
|
| |
|
| |
|
|
|
| Вот почему дату не вводил. И за это спасибо. Только теперь новый спотык.
Раньше новая другая форма открывалась в режиме добавления. В нее вносились данные из переменных. Все пахало. Теперь данные вносятся перед открытием. Открываю форму с фильтром по последнему. Даю весь код на открытие формы:
Private Sub Form_Open(Cancel As Integer)
With Me.Form 'Открываем последнюю запись. Ту что добавлена только что.
.Filter = "КодПациента=" & Nz(DMax("КодПациента", "Пациенты"), 0)
.FilterOn = True
End With
If Me!СоцПоложение = "В/служащий МО" Or Me!СоцПоложение = "В/служащий МВД,ФСК,ПВ,ФСБ" Then 'избегаем лишнего
Me!Звание.Visible = True
Else
Me!Звание.Visible = False
End If
With Me.[подчиненная форма № истории].Form 'в подчиненной показываем последнюю запись и даем возможность добавить
.AllowEdits = False
.AllowAdditions = True
.Filter = "КодИсследования=" & Nz(DMax("КодИсследования", "№ истории", Me.Filter), 0)
.FilterOn = True
End With
Me.СоцПоложение.SetFocus
End Sub
Все пахает как надо. Но! Это если клиент не был внесен ранее и его только что внесли. А если он уже был, то найдя его в первой форме 2 щелбана в списке и ... в данном случае открывается последний как фильтр велит. Пробовал отключать фильтр из первой формы. Не получается.
Возможно ли в ПолеСоСписком13 - чем заканчивается ввод нового, вклинить фильтр по последнему, что бы не ставить его на открытие формы.
Private Sub ПолеСоСписком13_AfterUpdate()
Me![Список10].Requery
Me.Requery
If Me.Список10.ListCount = 0 Then
If MsgBox("Данный пациент отсутствует в базе. Добавить?", vbOKCancel) = vbOK Then
Const SQLDATE As String = "\#mm\/dd\/yyyy\#"
strSQL = "INSERT INTO Пациенты ( Фамилия, Инициалы, ДатаРождения, Пол ) Values ('" & Me.ПолеСоСписком2 & "', '" & Me.ПолеСоСписком4 & "', " & Format$(Me.Поле6, SQLDATE) & ", '" & Me.ПолеСоСписком13 & "');"
CurrentDb.Execute strSQL
Response = acDataErrAdded
DoCmd.Close acForm, "Поиск ввод пациентов"
DoCmd.OpenForm "Пациенты",, (И вот тут пробовал вставить фильтр. Надо как-то его сохранить и имя вкатать только) Плиз как его сюда вклинить? Составить запрос и сохранить как фильтр?
Else
Me![ПолеСоСписком2].SetFocus
Me![ПолеСоСписком2] = ""
End If
End If
End Sub
А может глобальную переменную состряпать и присваивать ей разные значения? Если из списка открываем, то одно значение и фильтр не пахает. Если с полясосписком - то другое значение и фильтр при открытии включается?
PS Если не понятно, то не стесняйтесь долбать вопросами. | |
|
| |
|
|
|
| Вы сами ответили на вой вопрос.................
Если из списка открываем, то одно значение и фильтр не пахает. Если с полясосписком - то другое значение и фильтр при открытии включается? |
форму уже вы открыли так и делайте с ней что душе угодно
может просто сразу прописать прямо в форме фильтр
ну а потом только FilterOn или True или False по ситуации (там штука такая хитрая если FilterOn=false то без разницы что написано в строке Filter - все равно покажет все записи) | |
|
| |
|
|
|
| Да в том то все и дело что хожу вокруг да около а поймать никак не могу что надо. Тут одна и та же форма открывается с 2 разных мест. Что бы фильтр отключать надо критерий. Переменная не действует. (не знаю почему) Даже в модуле ее прописывал.
Пробовал на полеСосписком13 ставить так:
DoCmd.OpenForm "Пациенты"
stLinkCriteria = "[КодПациента]=" & DMax("КодПациента", "Пациенты")
DoCmd.OpenForm stDocName, , , stLinkCriteria
Ругается на последнюю строку. Имя формы ему подавай, хотя открывает правильно со всех мест. Давал имя формы, все равно ругается. Что-то где-то рядом а где ХЗ. | |
|
| |
|
|
|
| а переменная stDocName точно ранее определена как текст и ей задано значение (имя формы) | |
|
| |
|
|
|
| Снип, спасибо.
Все. Нашел причину. На ПолеСоСписком13 там где открывается форма установил
stDocName = "Пациенты"
stLinkCriteria = "[КодПациента]=" & DMax("КодПациента", "Пациенты")
DoCmd.OpenForm stDocName, , , stLinkCriteria
Фильтр на открытие формы убрал.
Ну как всегда что-то да упущу. Теперь со всех мест пахает как надо и добавляет. Вроде. | |
|
| |