Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912

Ошибка добавления

28.10.2013, 09:43. Показов 1802. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте..
Возникла такая проблема с утра по раньше
Недавно перенес БД с Access на SQL ( Все в тесте, пока разбираюсь )
после переноса возникали различные ошибки, и вроде все исправил, на открытие записей и просмотр, работает все отлично, но сегодня с утра решил попробовать добавить запись ( так сказать, последняя проверка, перед тем как пользователям отдать на тестирование ) и вылезла ошибка на Me.Дата = Date ( См.рис )
На открытие формы использую обычный макрос: Открыть форму - ЗаказОдин, Режим данных - добавление.
но при загрузки формы возникает ошибка.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Load()
 
  '*********
If Me.DataEntry Then Me.Дата = Date
On Error Resume Next
MkDir ("C:\file\" & [Заказ.Номер])
On Error GoTo 0
 
  '*********** 
End Sub


Если линкован к accdb файлу, то работает все отлично, если линкую к таблицам на SQL , то ошибка
и так во всех макросах, которые открывают форму на добавления записи..

Подскажите пожалуйста в чем дело ..
Миниатюры
Ошибка добавления  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2013, 09:43
Ответы с готовыми решениями:

Ошибка добавления столбца в таблицу
Создал запрос на базе таблицы "Агенты_и_прокси" Решил добавить в таблицу "Агенты_и_прокси" еще одно значение из таблицы...

Ошибка добавления. Ключ Связи БД Туры
Здравствуйте. Помогите пожалуйста разобраться. 1. У меня есть форма edit_inf. На ней расположена Вкладка работа с турами. Там я могу...

VBA, ошибка в макросе при функции добавления
Добрый вечер. Имеется прикрепленная ниже БД. Мои действия: 1. Открываю форму "orderForm"; 2. Ввожу в поле...

17
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
28.10.2013, 09:53
Так может действительно Recordset не обновляемый?
И проверьте поля-счетчики на скуле. Они есть?
1
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
28.10.2013, 09:55
Как вариант: в серверной таблице и/или запросе нет ключевого поля. SQL-сервера чувствительны к его отсутствию.
1
1320 / 539 / 67
Регистрация: 16.01.2013
Сообщений: 4,119
28.10.2013, 11:28
попробуй добавить вот такой код
Visual Basic
1
DoCmd.RunCommand acCmdSaveRecord
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Load()
 
  '*********
If Me.DataEntry Then Me.Дата = Date
On Error Resume Next
DoCmd.RunCommand acCmdSaveRecord
MkDir ("C:\file\" & [Заказ.Номер])
On Error GoTo 0
 
  '*********** 
End Sub
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
28.10.2013, 12:23  [ТС]
Как выглядит мои таблицы на SQL..( См.рис ).. То что подчеркнуто красным, это мускул сам создал первичный ключ при переносе из Акцесса,. То что синим, это я удалил созданный им первичный ключ и создал его в ручную,...
Сейчас изначальной ошибки нет, но и добавлять он не добавляет, форма открывается, но , новый номер записи не присваивается...

В другой таблице после изменения Первичного ключа ( в ручную т.е такая же операция как выше) в SQL,... при добавление записи:
ругается на эту строку
Visual Basic
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
'  gurnal_izm Me, Номер
End Sub
Если я закоментирую этот вызов, то запись успешно добавляется в SQL, но тогда у меня перестает работать ЖурналИзменений

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Function gurnal_izm(forma As Form, i As Long)
Dim c As Control
Dim tabl As Recordset
  On Error Resume Next
  Set tabl = CurrentDb.OpenRecordset("ЖурналИзменений", dbOpenDynaset, dbSeeChanges) 
  With tabl
    For Each c In forma.Controls
      Select Case c.ControlType
        Case acTextBox, acComboBox, acCheckBox:
            If Nz(c.OldValue, 0) <> Nz(c, 0) Then  'если старое и новое значения - разные
              .AddNew                              'выполняем запись в журнал
              !UserID = CurrentUser()
              !FormName = forma.Name
              !FieldName = c.ControlSource
              !RecordID = i
              !OldValue = c.OldValue
              !NewValue = c
              !DateUpdate = Now() 'Date
              .Update
            End If
      End Select
    Next c
  End With
End Function

Не знаю важно ли это:
Вот таким образом у меня ЖурналИзменений работает, когда был линк к accdb то все нормально работало, после переноса на Мускул, все это дело перестало работать, покопал в нете и ( может чего не так понял ) работать будет только с ADO, но исправлять пол программы не особо хотелось ( да и знаний еще маловато ), нашел такой выход из проблемы dbSeeChanges
подписываем к Recordset которые есть в программе и все у меня опять заработало, но как выяснилось сегодня , на добавление записи это как то не так повлияло..

В чем проблема теперь?
Миниатюры
Ошибка добавления  
0
1320 / 539 / 67
Регистрация: 16.01.2013
Сообщений: 4,119
28.10.2013, 12:25
Цитата Сообщение от duh_si Посмотреть сообщение
Как выглядит мои таблицы на SQL..( См.рис ).. То что подчеркнуто красным, это мускул сам создал первичный ключ при переносе из Акцесса,. То что синим, это я удалил созданный им первичный ключ и создал его в ручную,...
Сейчас изначальной ошибки нет, но и добавлять он не добавляет, форма открывается, но , новый номер записи не присваивается...

В другой таблице после изменения Первичного ключа ( в ручную т.е такая же операция как выше) в SQL,... при добавление записи:
ругается на эту строку
Visual Basic
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
'  gurnal_izm Me, Номер
End Sub
Если я закоментирую этот вызов, то запись успешно добавляется в SQL, но тогда у меня перестает работать ЖурналИзменений

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Function gurnal_izm(forma As Form, i As Long)
Dim c As Control
Dim tabl As Recordset
  On Error Resume Next
  Set tabl = CurrentDb.OpenRecordset("ЖурналИзменений", dbOpenDynaset, dbSeeChanges) 
  With tabl
    For Each c In forma.Controls
      Select Case c.ControlType
        Case acTextBox, acComboBox, acCheckBox:
            If Nz(c.OldValue, 0) <> Nz(c, 0) Then  'если старое и новое значения - разные
              .AddNew                              'выполняем запись в журнал
              !UserID = CurrentUser()
              !FormName = forma.Name
              !FieldName = c.ControlSource
              !RecordID = i
              !OldValue = c.OldValue
              !NewValue = c
              !DateUpdate = Now() 'Date
              .Update
            End If
      End Select
    Next c
  End With
End Function

Не знаю важно ли это:
Вот таким образом у меня ЖурналИзменений работает, когда был линк к accdb то все нормально работало, после переноса на Мускул, все это дело перестало работать, покопал в нете и ( может чего не так понял ) работать будет только с ADO, но исправлять пол программы не особо хотелось ( да и знаний еще маловато ), нашел такой выход из проблемы dbSeeChanges
подписываем к Recordset которые есть в программе и все у меня опять заработало, но как выяснилось сегодня , на добавление записи это как то не так повлияло..

В чем проблема теперь?
избегайте русских слов и пробелов
выложите исходник, я у себя на сервер перекину посмотрю. а вообще это уже не в том форуме нужно вопросы задавать. есть раздел выше sql server https://www.cyberforum.ru/sql-server/
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
28.10.2013, 12:35  [ТС]
Цитата Сообщение от evgenii3000 Посмотреть сообщение
избегайте русских слов и пробелов
Евгений понимаете, БД эта мне по наследству досталась, и как уж было так и оставил, работает и славно, в этой БД и с нормализацией дело очень плохо..


есть раздел выше sql server https://www.cyberforum.ru/sql-server/
спрашивал я там до этого какой то вопрос, не особо там с помощью как то,...да и ситуация тут двоякая, вроде и Access и SQL

выложите исходник, я у себя на сервер перекину посмотрю,
не против если я вам на почту пришлю?
0
1320 / 539 / 67
Регистрация: 16.01.2013
Сообщений: 4,119
28.10.2013, 16:58
Цитата Сообщение от duh_si Посмотреть сообщение
не против если я вам на почту пришлю?
жду

 Комментарий модератора 
Правилами форума, раздел 4.6, запрещено приглашение к обсуждению вне форума. evgenii3000, Вам предупреждение


Добавлено через 3 часа 9 минут
при открытии формы поставщик у вас выполняется вот такой код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_Load()
Call setRight(Me)
    vk = 17 'задать код клавиши CTRL
    
Me.Факс1.Visible = False
Me.Факс2.Visible = False
Me.ТелефонОфиса1.Visible = False
Me.ТелефонОфиса2.Visible = False
Me.БанковскиеРеквизиты.Visible = False
Me.Website.Visible = False
Me.ОтветственныйП.Visible = False
Me.ПроектП.Visible = False
для чего он?

и если я правильно открыл форму то на ней не указано что она для ввода. поэтому и ошибка может быть

Добавлено через 1 час 5 минут
Цитата Сообщение от evgenii3000 Посмотреть сообщение
Комментарий модератора*mobile
Правилами форума, раздел 4.6, запрещено приглашение к обсуждению вне форума. evgenii3000, Вам предупреждение
я не приглашал. меня пригласили

 Комментарий модератора 
Уговорили. Предупреждение также получает duh_si
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
30.10.2013, 15:38  [ТС]
День добрый ..

( на сервере все права разрешены, ПК проставлены )
Пробовал делать маленькую программку ( таблица и форма к ней ) все записи добавляются.

проблема в моей программе..
Вход: логин Админ, пароль 1
Каким образом у меня устроена программа:
На форме СписокЗаказов показаны заказы в краткой форме, если открыть любой из них, откроется форма Заказ один на которой все более подробно и несколько подчиненных форм..

Как я делаю добавление: на форме СписокЗаказов нажимаю кнопку в ней макрос: "ОткрытьФорму: заказ один, режим данных: добавление" ну т.е самый обычный..

До подключения к SQL у меня форма ( Заказ один ) загружалась таким образом
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Load()
 
If Me.DataEntry Then Me.Дата = Date
On Error Resume Next
MkDir ("C:\file\" & [Заказ.Номер])
On Error GoTo 0
 
End Sub
т.е мне нужно было создать каталог с новым номером при загрузке формы..., благодоря этой строке If Me.DataEntry Then Me.Дата = Date собственно все и работало, номер добавлялся и каталог создавался и запись в БД , а после подключения к SQL этот код не работает,
сейчас же просто открывается форма без нового номера записи т.е в БД добавить ничего нельзя

подскажите пожалуйста как это можно исправить, разрешить эту проблему ( В архиве посмотреть можно более наглядно )
Вложения
Тип файла: rar тест.rar (401.6 Кб, 4 просмотров)
0
1320 / 539 / 67
Регистрация: 16.01.2013
Сообщений: 4,119
30.10.2013, 16:07
duh_si, что делает этот код? распишите
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Load()
 
If Me.DataEntry Then Me.Дата = Date
On Error Resume Next
MkDir ("C:\file\" & [Заказ.Номер])
On Error GoTo 0
 
End Sub
0
 Аватар для VinniPuh
9131 / 6143 / 593
Регистрация: 27.03.2013
Сообщений: 20,011
30.10.2013, 16:46
Цитата Сообщение от duh_si Посмотреть сообщение
...Недавно перенес БД с Access на SQL ( Все в тесте, пока разбираюсь )...
Предательством Всемогущего Акса занимаетесь однако - Ле-Ле- Ле
Цитата Сообщение от evgenii3000 Посмотреть сообщение
...меня пригласили...
Цитата Сообщение от evgenii3000 Посмотреть сообщение
...Предупреждение также получает duh_si...
А я всегда верил в его верность Аксику - Грустно
0
1320 / 539 / 67
Регистрация: 16.01.2013
Сообщений: 4,119
30.10.2013, 16:59
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от kmv-puh Посмотреть сообщение
Предательством Всемогущего Акса занимаетесь однако - Ле-Ле- Ле


А я всегда верил в его верность Аксику - Грустно
kmv-puh,

Не по теме:

ни чего не понял, что употребляли? =)

1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
01.11.2013, 11:24  [ТС]
День добрый ..
Сейчас (эксперимента ради ) с формы Заказ один удалил подчиненные формы, которые находятся во вкладках, и записи сразу начали добавляться, т.е на форме остались только контролы связанные с источником записей самой формы.. с чем это связанно? не пойму..

Или в самом SQL тоже как то Связи, Зависимости нужно сделать?

Добавлено через 20 часов 38 минут
Уважаемые, посоветуйте/предложите хоть какие варианты,..
буду рад любой идеи..

в какую сторону можно покапать
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.11.2013, 21:03
duh_si, возможно у вас ситуация с изменением именованых переменных, или проще говоря у вас получилась ситуация когда ваш адаптер обращается к таблице в аксе, а реальная таблица в MS SQL, для исправления ситуации необходимо внимательно отсмотреть все названия в коде, и возможно, добавить предрасширение dbo, по сути это нормальная ситуация при миграции, однако чаще всего ее решают путем написания нового клиента, так проще и быстрее в итоге получается.

Добавлено через 2 минуты
Цитата Сообщение от duh_si Посмотреть сообщение
День добрый ..
Сейчас (эксперимента ради ) с формы Заказ один удалил подчиненные формы, которые находятся во вкладках, и записи сразу начали добавляться, т.е на форме остались только контролы связанные с источником записей самой формы.. с чем это связанно? не пойму..

Или в самом SQL тоже как то Связи, Зависимости нужно сделать?

Добавлено через 20 часов 38 минут
Уважаемые, посоветуйте/предложите хоть какие варианты,..
буду рад любой идеи..

в какую сторону можно покапать
в 2007 аксе создаешь адп клиент и при помощи него указываешь связи в схеме данных. Схема данных создается на вкладке создать (там где макрос, выбираем схему) и указываешь связи.
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
06.11.2013, 11:21  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
возможно у вас ситуация с изменением именованых переменных, или проще говоря у вас получилась ситуация когда ваш адаптер обращается к таблице в аксе, а реальная таблица в MS SQL, для исправления ситуации необходимо внимательно отсмотреть все названия в коде, и возможно, добавить предрасширение dbo,
...
Схема данных создается на вкладке создать (там где макрос, выбираем схему) и указываешь связи.
Это я все проверял, с этим все впорядке

при добавление записи:
ругается на эту строку.
код находится в Форме в которой делается запись..
Visual Basic
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
 gurnal_izm Me, Номер
End Sub
Вот такая ошибка " Run-time '94' Invalid use of Null"
Если вызов висит на этом событии, то ошибка при добавлении, пробовал на другие события вешать, результата нет..
Если коментирую эту строку, все добавляет и в главную и подчиненную форму..

В Модуле..
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Function gurnal_izm(forma As Form, i As Long)
Dim c As Control
Dim tabl As Recordset
  On Error Resume Next
  Set tabl = CurrentDb.OpenRecordset("ЖурналИзменений", dbOpenDynaset, dbSeeChanges) 
  With tabl
    For Each c In forma.Controls
      Select Case c.ControlType
        Case acTextBox, acComboBox, acCheckBox:
            If Nz(c.OldValue, 0) <> Nz(c, 0) Then  'если старое и новое значения - разные
              .AddNew                              'выполняем запись в журнал
              !UserID = CurrentUser()
              !FormName = forma.Name
              !FieldName = c.ControlSource
              !RecordID = i
              !OldValue = c.OldValue
              !NewValue = c
              !DateUpdate = Now() 'Date
              .Update
            End If
      End Select
    Next c
  End With
End Function

Если открываю уже существующую запись и изменяю ее то все в порядке, ни каких ошибок нет

Подскажите как устранить эту проблему?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.11.2013, 20:52
Цитата Сообщение от duh_si Посмотреть сообщение
Подскажите как устранить эту проблему?
для начала попробуйте отказаться от русских названий.

Добавлено через 4 минуты
Цитата Сообщение от duh_si Посмотреть сообщение
при добавление записи:
ругается на эту строку.
код находится в Форме в которой делается запись..
Visual Basic
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
 gurnal_izm Me, Номер
End Sub
Вот такая ошибка " Run-time '94' Invalid use of Null"
А запятая в коде это ошибка введении здесь, или у вас в коде так же?
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
06.11.2013, 21:02  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
А запятая в коде это ошибка введении здесь, или у вас в коде так же?
В коде так и есть, а что в этом проблема?
0
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
06.11.2013, 21:20
Ошибки в gurnal_izm Me, Номер нет. Me это еще и переменная формы, а в процедуре именно такая нужна.

duh_si, ошибка видимо в том, что переменная (или поле) Номер к моменту обращения имеет значение NULL. Поскольку в процедуре gurnal_izm у параметра i тип Long, то нуллов такая переменная не принимает. Значит или контролируйте, чтобы Номер был не пустой, или замените тип параметра i на Variant.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2013, 21:20
Помогаю со студенческими работами здесь

Ошибка при обращении к объектам при открытии формы в режиме добавления данных acFormAdd
запускаю простой код, который в теории должен открыть форму в режиме добавления данных и сделать кнопки не активными Private Sub...

Ошибка добавления в БД
Здравствуйте! есть форма &lt;form name=&quot;form1&quot; method=&quot;post&quot; action=&quot;add_page.php&quot;&gt; &lt;p&gt; &lt;label&gt;Введите...

Ошибка добавления в базу
function generateCode($length=6) { $chars = &quot;abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789&quot;; $code = &quot;&quot;; ...

Ошибка добавления данных
Подскажите почему данные не добавляются в базу ? &lt;html&gt; &lt;head&gt; &lt;title&gt; веб-приложение записи введенных данных в БД ...

ошибка добавления в xml
public function Csv2xml($uploadfile) { $csv_php =fopen($uploadfile,&quot;r&quot;); while ($line = fgetcsv($csv_php)) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru