Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: На добавление
 
 автор: Гоблин   (07.08.2009 в 23:41)   личное сообщение
 
 

Ну бывает. Торможение происходит.
Из свободной формы работает. Однако добавляет столько раз, сколько записей в таблице есть.
INSERT INTO Пациенты ( Фамилия, Инициалы, ДатаРождения, Пол )
SELECT [Forms]![Поиск ввод пациентов]![ПолеСоСписком2] AS Выражение1, [Forms]![Поиск ввод пациентов]![ПолеСоСписком4] AS Выражение2, [Forms]![Поиск ввод пациентов]![Поле6] AS Выражение3, [Forms]![Поиск ввод пациентов]![ПолеСоСписком13] AS Выражение4
FROM Пациенты;

Чего -то надо тут менять?

  Ответить  
 
 автор: Lukas   (08.08.2009 в 00:05)   личное сообщение
 
 


Private Const SQLDATE As String = "\#mm\/dd\/yyyy\#"
strSQL="INSERT INTO Пациенты ( Фамилия, Инициалы, ДатаРождения, Пол ) Values ('" & Me.ПолеСоСписком2 & "', '" & Me.ПолеСоСписком4 & "', " & Format$(Me.Поле6, SQLDATE) & ", '" & Me.ПолеСоСписком13 & "')"

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 10:10)   личное сообщение
 
 

Вот почему дату не вводил. И за это спасибо. Только теперь новый спотык.
Раньше новая другая форма открывалась в режиме добавления. В нее вносились данные из переменных. Все пахало. Теперь данные вносятся перед открытием. Открываю форму с фильтром по последнему. Даю весь код на открытие формы:
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 Если не понятно, то не стесняйтесь долбать вопросами.

  Ответить  
 
 автор: snipe   (10.08.2009 в 10:54)   личное сообщение
 
 

Вы сами ответили на вой вопрос.................

Если из списка открываем, то одно значение и фильтр не пахает. Если с полясосписком - то другое значение и фильтр при открытии включается?



форму уже вы открыли так и делайте с ней что душе угодно

может просто сразу прописать прямо в форме фильтр
ну а потом только FilterOn или True или False по ситуации (там штука такая хитрая если FilterOn=false то без разницы что написано в строке Filter - все равно покажет все записи)

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 11:04)   личное сообщение
 
 

Да в том то все и дело что хожу вокруг да около а поймать никак не могу что надо. Тут одна и та же форма открывается с 2 разных мест. Что бы фильтр отключать надо критерий. Переменная не действует. (не знаю почему) Даже в модуле ее прописывал.
Пробовал на полеСосписком13 ставить так:
DoCmd.OpenForm "Пациенты"
stLinkCriteria = "[КодПациента]=" & DMax("КодПациента", "Пациенты")
DoCmd.OpenForm stDocName, , , stLinkCriteria
Ругается на последнюю строку. Имя формы ему подавай, хотя открывает правильно со всех мест. Давал имя формы, все равно ругается. Что-то где-то рядом а где ХЗ.

  Ответить  
 
 автор: snipe   (10.08.2009 в 11:18)   личное сообщение
 
 

а переменная stDocName точно ранее определена как текст и ей задано значение (имя формы)

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 11:18)   личное сообщение
 
 

Снип, спасибо.
Все. Нашел причину. На ПолеСоСписком13 там где открывается форма установил

stDocName = "Пациенты"
stLinkCriteria = "[КодПациента]=" & DMax("КодПациента", "Пациенты")
DoCmd.OpenForm stDocName, , , stLinkCriteria

Фильтр на открытие формы убрал.
Ну как всегда что-то да упущу. Теперь со всех мест пахает как надо и добавляет. Вроде.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList