Автор: Bagira3785
Дата сообщения: 05.10.2007 19:29
Здравствуйте! Ребят, кто подскажет? У меня есть база по начислению зарплаты, но никак не получается одна штука. В форме есть поле СумОклад, есть список СписокНачислениеОклад, созданный на основе таблицы Начисление2.
В форме источник записей я указала SELECT Начисление2.* FROM Начисление2;
Таблица Начисление2:КодНачисление (счетчик), Месяц, Год, КодПлан (числовой), КодРаботник(числовой), Оклад (числовой)
В форме есть кнопка ИзменитьОклад, есть элемент SpinButton.1- КнСумОклад. Нужно, чтобы щелкая двойным щелчком в списке, в этом списке значение в поле оклад изменилось на значение которое будет введено в поле СумОклад. Если нажать на кнопку ИзменитьОклад, то выделялся бы весь список и так же изменялось бы значение в поле оклад. А еще как сделать так, чтобы в списке можно было бы выделять несколько записей и так же изменять оклад на то значение, которое стоит в поле СумОклад? Я вот тут кое-чего наворочала, но видно неправильно:
Private Sub Form_Open(Cancel As Integer)
'Если СписокНачислениеОклад пуст -
If СписокНачислениеОклад.ListCount = 0 Then
'закрыть доступ к изменению оклада
ДоступОклад False
Else
'иначе - открыть доступ к изменению оклада,
ДоступОклад True
'выделить 1-ю строку списка
СписокНачислениеОклад = СписокНачислениеОклад.Column(0, 0)
End If
End Sub
Private Sub СумОклад_Exit(Cancel As Integer)
On Error Resume Next
Dim N As Long
'Проверка корректности ввода
N = CLng(СумОклад.Text)
'Если введено не число или запредельное значение
If (Err.Number <> 0) Or (N < КнСумОклад.Min) Or (N > КнСумОклад.Max) Then
'сообщаем об этом
MsgBox "Введите число в диапазоне от " & CStr(КнСумОклад.Min) & " до " _
& CStr(КнСумОклад.Max), vbExclamation, "Ошибка ввода"
'Очищаем объект Err и возвращаемся в поле "СумОклад"
Err.Clear
Cancel = True
Else
'При корректном вводе поручаем обработку ошибок системе
On Error GoTo 0
'и меняем оклад
ИзменитьОклад
КнСумОклад.Value = СумОклад
End If
End Sub
Private Sub СписокНачислениеОклад_DblClick(Cancel As Integer)
Dim База As Object, Начисление2 As Object
Set База = CurrentDb
Set Начисление2 = База.OpenRecordset("Начисление2", dbOpenDynaset)
ДоступОклад True
With Начисление2
'Ищем соответствующую запись в таблице Начисление2.
.FindFirst "[КодПлан] = " & CStr(СписокНачислениеОклад)
КнСумОклад = СумОклад
.Edit
![Оклад] = СумОклад
.Update
СписокНачислениеОклад.Requery
Me.Requery
.Close
End With
Set База = Nothing
End Sub
Private Sub ИзменитьОклад()
Dim База As Object, Начисление2 As Object
Set База = CurrentDb
Set Начисление2 = База.OpenRecordset("Начисление2", dbOpenDynaset)
With Начисление2
.FindFirst "[КодПлан] = " & CStr(СписокНачислениеОклад)
.Edit
![Оклад] = СумОклад
.Update
СписокНачислениеОклад.Requery
Me.Requery
.Close
End With
Set База = Nothing
End Sub
Private Sub ДоступОклад(Доступ As Boolean)
КнСумОклад.Enabled = Доступ
СумОклад.Enabled = Доступ
End Sub
Может у кого есть что-то похожее по сути, может быть вышлете на адрес:UchBagira@yandex.ru
--------------------------------------------------------------------------------