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

Форум: MS ACCESS

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

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

 
 

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

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

тема: HELP!!!
 
 автор: lexalex_84   (14.12.2010 в 09:42)   личное сообщение
22 Кб.
 
 

Добрый день!!!
У меня следующая проблема: Имеется код.
Private Sub cmd_n_copy_Click()
On Error GoTo error_main

Dim dveri As Recordset
Set dveri = CurrentDb().OpenRecordset("dveri")

Dim n_s As String
Dim n As Integer
Dim schet As Integer
Dim otvet1 As Integer
Dim otvet2 As Integer
Dim lit As Long
Dim lit_n As Long
Dim lit_cc As Long

Me.Refresh

otvet1 = MsgBox("Создать несколько подобных изделий в рамках этого договора ?", vbOKCancel)
If otvet1 = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If

n_s = InputBox("введите количество дверей в договоре") 'выводим форму для ввода
n = Val(n_s) 'переводим string в integer

If n = 0 Then
MsgBox "Ошибка ввода", vbCritical 'обрабатываем неправильный ввод
Exit Sub
End If

lit = Forms!Двери_Е!litera

If lit = 1 Then
lit_n = 1
lit_cc = 2
End If

If lit <> 1 Then
If lit = 0 Then
otvet2 = MsgBox("Начальный номер изделия в договоре 0." & Chr(10) & _
"Исправить на 1 ?", vbOKCancel, "Предупреждение")
If otvet2 = 1 Then
lit_n = 1
lit_cc = 2
End If
If otvet2 = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
End If

If lit <> 1 And Not lit = 0 Then
otvet2 = MsgBox("Начальный номер изделия в договоре не равен 1." & Chr(10) & _
"Исправить?", vbYesNoCancel, "Предупреждение")
If otvet2 = 7 Then
lit_n = lit
lit_cc = lit + 1
in_otvet = MsgBox("Нумерация будет продолжена с " & lit_cc & "-го изделия", _
vbOKCancel, "Предупредждение")
If in_otvet = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
End If
If otvet2 = 6 Then
lit_n = 1
lit_cc = 2
End If
If otvet2 = 2 Then
MsgBox "Отменено пользователем"
Exit Sub
End If
End If
End If

Forms!Двери_Е!litera = lit_n

schet = n - lit_n
If schet < 0 Then
MsgBox "Ошибка ввода - текущий номер изделия больше чем у последнего", _
vbCritical 'обрабатываем неправильный ввод
Exit Sub
End If
If schet = 0 Then
MsgBox "Ошибка ввода - текущий номер изделия совпадает с последним", _
vbCritical
Exit Sub
End If

Do Until schet = 0 'запускаем цикл копирования
schet = schet - 1 '{!}f переписать на уровне записей

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70
Forms!Двери_Е!litera = lit_cc
Forms!Двери_Е.Refresh
lit_cc = lit_cc + 1
DoCmd.GoToRecord acDataForm, "Двери_Е", acNext

Loop

Exit Sub

error_main:
MsgBox err.Description
Exit Sub

End Sub



Когда у нас в Аксесе находятся оригинальные таблицы, то код РАБОТАЕТ, а когда у нас таблицы линкованные через ODBC на Мускул, то некоторое неработает и выводит ошибку.

Где ошибка в коде?Необходимо чтобы код работал и с линкованными таблицами на Мускул..... все остальное работает нормально....
P.S Также иногда выдает ошибку и кнопка "Дублирование записи" - она создана стандартными средствами Акса 2003......
здесь есть форма с которой работаем http://zalil.ru/30138490.

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

а с линкованными таблицами работает - несколько операторов - одновременно?

  Ответить  
 
 автор: lexalex_84   (14.12.2010 в 10:40)   личное сообщение
 
 

ага работает......в некоторых местах приходится ставить дополнительную строчку например lit = DoEvents....

PS. Вместо "lit" может быть другая переменная объявленная выше.....

  Ответить  
 
 автор: час   (14.12.2010 в 17:52)   личное сообщение
 
 

Тута блин и в настройках надо самого акса и следить, что бы в один момент с базой .......

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