|
Ошибка типа "type mismatch" в MS_access
|
|||
---|---|---|---|
#18+
Добрый день! Мне было задано задания: задача Решается задача начисления зарплаты сдельщикам. База данных содержит четыре таблицы. Входная информация для решения задачи содержится в таблицах «Расценки» и «Лицевой счет», а выходная информация – в таблицах «Наряд» и «Начисления». При решении этой задачи корректируются записи входной таблицы «Лицевой счет» и формируются (добавляются) новые записи в выходные таблицы «Табель» и «Начисления». Зарплата сдельщика рассчитывается, исходя из выполненного им объема работ по расценкам в соответствии с его разрядом: Начислено= объем работ * расценка. Справочная информация о расценках содержится в таблице «Расценки», сведения о сдельщике – в таблице «Лицевой счет». Состав полей входных таблиц базы данных: “Расценки” • Код работы • Разряд • Расценка (руб./ед.) “Лицевой счет” • Цех • Табельный номер • Фамилия И.О. • Разряд • Начислено за год (руб) В форму осуществляется ввод информации о выполненном сдельщиком объеме работ: Табельный номер Код работы Объем работ (ед.) Месяц В таблице "Лицевой счет" осуществляется поиск записи с введенным табельным номером. Если искомая запись найдена, то программа должна предусмотреть выполнение следующих операций: 1) Выполнить поиск в таблице «Расценки» по коду работ и разряду соответствующей им расценки и произвести расчет начисленной зарплаты. 2) Выполнить корректировку найденной записи в таблице "Лицевой счет", заключающуюся в добавлении к значению поля "Начислено за год» полученного при расчете значения. 3) Добавить по новой записи в таблицы "Наряд" и "Начисления". Выходные таблицы имеют следующий состав полей: “Наряд” "Начисления" • Цех • Табельный номер • Разряд • Код работы • Количество (ед.) • Месяц "Начисления" • Цех • Табельный номер • Фамилия И.О. • Начислено (руб.) Выполнив все как указано в задаче + написав код работы у меня вылазит ошибка "type mismatch" код Option Compare Database Option Explicit Dim c As String Dim t As String Dim f As Integer Dim r As String Dim n As String Private Sub Ok_Click() On Error GoTo Err_Ok_Click c = ch.Value t = tn.Value f = fio.Value r = rz.Value n = ng.Value Obrabotka ch.Value = Null tn.Value = Null fio.Value = Null rz.Value = Null ng.Value = Null Exit_Ok_Click: Exit Sub Err_Ok_Click: MsgBox Err.Description Resume Exit_Ok_Click End Sub Private Sub Выход_Click() On Error GoTo Err_Выход_Click DoCmd.Close Exit_Выход_Click: Exit Sub Err_Выход_Click: MsgBox Err.Description Resume Exit_Выход_Click End Sub Public Function Obrabotka() Dim dbs As Database Dim rst As Recordset Dim nst As Recordset Dim lst As Recordset Dim nast As Recordset Set dbs = CurrentDb Set lst = dbs.OpenRecordset("Лицевой счет") Set nst = dbs.OpenRecordset("Наряд") Set nast = dbs.OpenRecordset("Начисления") Set rst = dbs.OpenRecordset("Расценки") rst.MoveFirst Do Until lst.EOF If t = lst![Табельный номер] Then lst.Edit lst![Разряд] = lst![Разряд] + r nast![ФИО] = f nast.Update nst.AddNew nst![Цех] = с nst![Табельный номер] = t nst![ФИО] = f nst![Разряд] = r nst![Начисленно за год (руб)] = n nst.Update End If rst.MoveNext Loop End Function Буду благороден любой помощи очень уж нужно мне его доделать сегодня.... Готов отблагодарить финансово)) Правда не очень много)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2012, 17:46 |
|
Ошибка типа "type mismatch" в MS_access
|
|||
---|---|---|---|
#18+
xxxzingerxxx, Данный говнокод не то что изучать, даже читать страшно. Почитайте как оформляется код, и немного правил ООП. По ошибке, возможно тут: st![Разряд] = lst![Разряд] + r, хотя не факт. Так как нет схемы таблиц с типами которые вы использовали. А вообще на месте ошибки, отладчик подсветит вам строку. Далее уже думайте, то ли вы строку суммируете с числом, то ли это другое ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2012, 19:14 |
|
Ошибка типа "type mismatch" в MS_access
|
|||
---|---|---|---|
#18+
автор Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
тут, ваше - полный алесс ! открывается на Edit - один рекордсет (lst.Edit), Update-тся - второй (nast.Update), а "крутится" - третий (rst.MoveNext), при том, что условие выхода из цикла - таки, по первому (lst.EOF) ... :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2012, 19:54 |
|
|
start [/forum/topic.php?fid=60&gotonew=1&tid=2157460]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 445ms |
0 / 0 |