powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка типа "type mismatch" в MS_access
3 сообщений из 3, страница 1 из 1
Ошибка типа "type mismatch" в MS_access
    #37949493
xxxzingerxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Мне было задано задания:
задача
Решается задача начисления зарплаты сдельщикам. База данных содержит четыре таблицы. Входная информация для решения задачи содержится в таблицах «Расценки» и «Лицевой счет», а выходная информация – в таблицах «Наряд» и «Начисления». При решении этой задачи корректируются записи входной таблицы «Лицевой счет» и формируются (добавляются) новые записи в выходные таблицы «Табель» и «Начисления». Зарплата сдельщика рассчитывается, исходя из выполненного им объема работ по расценкам в соответствии с его разрядом:
Начислено= объем работ * расценка.
Справочная информация о расценках содержится в таблице «Расценки», сведения о сдельщике – в таблице «Лицевой счет».
Состав полей входных таблиц базы данных:
“Расценки”
• Код работы
• Разряд
• Расценка (руб./ед.)
“Лицевой счет”
• Цех
• Табельный номер
• Фамилия И.О.
• Разряд
• Начислено за год (руб)

В форму осуществляется ввод информации о выполненном сдельщиком объеме работ:
 Табельный номер
 Код работы
 Объем работ (ед.)
 Месяц
В таблице "Лицевой счет" осуществляется поиск записи с введенным табельным номером. Если искомая запись найдена, то программа должна предусмотреть выполнение следующих операций:
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

Буду благороден любой помощи очень уж нужно мне его доделать сегодня....
Готов отблагодарить финансово))
Правда не очень много))
...
Рейтинг: 0 / 0
Ошибка типа "type mismatch" в MS_access
    #37949531
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xxxzingerxxx,

Данный говнокод не то что изучать, даже читать страшно. Почитайте как оформляется код, и немного правил ООП. По ошибке, возможно тут:
st![Разряд] = lst![Разряд] + r, хотя не факт. Так как нет схемы таблиц с типами которые вы использовали. А вообще на месте ошибки, отладчик подсветит вам строку. Далее уже думайте, то ли вы строку суммируете с числом, то ли это другое
...
Рейтинг: 0 / 0
Ошибка типа "type mismatch" в MS_access
    #37949553
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
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


тут, ваше - полный алесс !

открывается на Edit - один рекордсет (lst.Edit),
Update-тся - второй (nast.Update),
а "крутится" - третий (rst.MoveNext), при том, что условие выхода из цикла - таки, по первому (lst.EOF) ...
:))
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка типа "type mismatch" в MS_access
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]