Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
Всем привет!

Сразу оговорюсь с Accessom раньше сталкиваться не доводилось, и возможно проблема где то на виду, но - нужна помощь.

Собственно пробелма - есть БД на акксессе 2007, до не давних пор все вроде работало, в определенный период как водится перестала отрабатывать одна из форм ввода. Стал разбираться, при выполнении инсерта вылетает сообщение
"Run time error 3073
В операции должен выполняться обновляемый запрос"

Решил написать примерно тоже самое, но к простенькому справочнику, дабы убедится, что мыслю верно по вба - в итоге
strSQL = "INSERT INTO types( [id], [name] ) VALUES ( 7, 'new record');"
 CurrentDb.Execute strSQL

strSQL2 = "Select id, number, date FROM types"
numbers.RowSource = strSQL2
Me.Refresh


и получаем снова этот же эксшепшен.

Как быть - куда копать ?!
25 мар 13, 07:11    [14090325]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
cylindr
Member

Откуда:
Сообщений: 305
KonstF,

Попробуйте заменить имена полей types , date на другие. Поставьте кавычки для 7 и попробуйте ещё раз.
25 мар 13, 07:28    [14090346]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
cylindr,

>_Попробуйте заменить имена полей types , date на другие.

как понять на другие, в таблице есть поля - обращаюсь к ним именно так как они определены.

создал свою таблицу: car

 strSQL = "INSERT INTO car( [car_id], [car_name] ) VALUES ( 1, 'new_car');"
 CurrentDb.Execute strSQL

strSQL2 = "Select car_id, car_name FROM car "
sprav.RowSource = strSQL2
Me.Refresh


все работает

возвращаюсь к
Private Sub Êíîïêà58_Click()
  
 ' MsgBox (DMax("car_id", "car") + 1)
  
 strSQL = "INSERT INTO types( [id], [name] ) VALUES ( " & DMax("id", "types") + 1 & ", 'new type engine');"
 CurrentDb.Execute strSQL

strSQL2 = "Select id, name FROM types "
sprav.RowSource = strSQL2
Me.Refresh
End Sub


ошибка та же ... (
куда копать, нииид ХЭЛП!
25 мар 13, 07:50    [14090367]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
ЫLL HEAD
Member [заблокирован]

Откуда: Сибирь
Сообщений: 695
проверить запросы в конструкторе. отделить мух от котлет - либо вба бастует либо скл косячный
можно debug.print ваши_скл_строки и в конструкторе пытать их
25 мар 13, 08:02    [14090379]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
ЫLL HEAD,

>_проверить запросы в конструкторе. отделить мух от котлет - либо вба бастует либо скл косячный
это где такое взять ?

_>можно debug.print ваши_скл_строки и в конструкторе пытать их
я так понимаю это запросы перехватываемые

сори за ламерские вопросы, но до этого с акксесом не работал!
25 мар 13, 08:08    [14090384]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
ЫLL HEAD
Member [заблокирован]

Откуда: Сибирь
Сообщений: 695
KonstF
>_проверить запросы в конструкторе. отделить мух от котлет - либо вба бастует либо скл косячный
это где такое взять ?
пытать ваши запросы (вы жэ пишете их для выполнения в коде) во вкладке Запросы главного окна базы данных
кликать Создать>в режим SQL>пастите или пишите запрос туда>вверху RUN
25 мар 13, 08:21    [14090405]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
гурД
Guest
KonstF,

я правильно понял, что смысл состоит в том, чтобы добавить в справочную таблицу новое значение? - Достаточно сделать тип поля Айди Счётчиком. Тогда его значение будет всегда уникальным и наращиваться автоматически.

А ошибка, видимо, от "рекурсии" - ссылки запроса на ту же самую таблицу...
25 мар 13, 08:21    [14090407]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
ЫLL HEAD,

вопрос в догонку, при попытке открыть любую таблицу в конструкторе выдается сообщение

Таблица "TableName" является связанной таблицей, структуру которой изменить нельзя. Если требуется добавить или удалить поля либо изменить их свойства или тип данных, это можно сделать в исходной БД.

Может быть, что ошибка не в скл запросе(куда проще то), а с настройками самого акксеса и расположения БД. (БД в данный момент лежит на сетевой папке, пути к таблицам так же прописаны на сеть)
25 мар 13, 08:27    [14090428]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
cylindr
Member

Откуда:
Сообщений: 305
KonstF
как понять на другие, в таблице есть поля - обращаюсь к ним именно так как они определены.


Это зарезервированные слова, нельзя называть поля ни name, ни date.

Сделайте так и из окна immediate скопируйте сюда то, что там появится, только сначала на русский переключите раскладку клавиатуры:

Private Sub абракадабра_Click()
  
 ' MsgBox (DMax("car_id", "car") + 1)
  
 strSQL = "INSERT INTO types( [id], [name] ) VALUES ( " & DMax("id", "types") + 1 & ", 'new type engine');"
debug.print strSQL 
'CurrentDb.Execute strSQL

strSQL2 = "Select id, name FROM types "
debug.print strSQL2
'sprav.RowSource = strSQL2
'Me.Refresh
End Sub
25 мар 13, 08:27    [14090431]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
ЫLL HEAD
Member [заблокирован]

Откуда: Сибирь
Сообщений: 695
KonstF,

связанные таблицы не редактируются по структуре
это делается по месту ихразмещения (в том файле)
25 мар 13, 08:30    [14090440]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
гурД, все верно, просто пополнить справочник

(код прогр. который собственно это и писал, поле счетчик). изменил без расчета айди

"INSERT INTO types( [name] ) VALUES ( 'new type engine');"

ситуация та же - тот же эксшепш.
25 мар 13, 08:34    [14090449]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
cylindr
KonstF
как понять на другие, в таблице есть поля - обращаюсь к ним именно так как они определены.


Это зарезервированные слова, нельзя называть поля ни name, ни date.

Сделайте так и из окна immediate скопируйте сюда то, что там появится, только сначала на русский переключите раскладку клавиатуры:

Private Sub абракадабра_Click()
  
 ' MsgBox (DMax("car_id", "car") + 1)
  
 strSQL = "INSERT INTO types( [id], [name] ) VALUES ( " & DMax("id", "types") + 1 & ", 'new type engine');"
debug.print strSQL 
'CurrentDb.Execute strSQL

strSQL2 = "Select id, name FROM types "
debug.print strSQL2
'sprav.RowSource = strSQL2
'Me.Refresh
End Sub


собственно - на выходе имеем

INSERT INTO types( [id], [name] ) VALUES ( 7, 'new type engine');
Select id, name FROM types
25 мар 13, 08:44    [14090468]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
гурД
Guest
KonstF,

ещё как вариант - у вас недостаточно прав, чтобы писать в линкованную по сети базу. Вы тестовую таблицу, в которой всё получилось, создали непосредственно на вашем пк?
25 мар 13, 09:27    [14090601]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
гурД
KonstF,

ещё как вариант - у вас недостаточно прав, чтобы писать в линкованную по сети базу. Вы тестовую таблицу, в которой всё получилось, создали непосредственно на вашем пк?


Я бы сам хотел это понять - где она находится.
Открываю редактирование конфигурации(локально), таблица есть, открываю файл с таблицами(в сети) её нет, судя по всему на локальной машине создано.

хм. потыкался в аксесе - попробовал операцией экспорта из конфигурации перебросить таблицу car в файл таблиц на шаре, в итоге получил отбой - База данный ХХХ доступна только для чтения!

Права нужны на уровне ОС или внутри аксесса есть утилита конфигурирования?!
25 мар 13, 09:43    [14090658]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
гурД
Guest
Ваша база логически (и физически) разделена на два файла: на шаре лежат таблицы, а у пользователей, для обращения к ним, - интерфейсные части (формы, отчёты, запросы). Так как таблицы линкованные (внешние, связанные), вы не можете не только менять их структуру, но и создавать (вручную) их там, только локально.
KonstF
Права нужны на уровне ОС или внутри аксесса

Это сначала к админам (думаю, что, скорее всего, политика сети)
25 мар 13, 10:14    [14090817]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
Проверил уровень прав на доступ к файлам Access, везде полный доступ.

У Accessa есть встроенные средства разграничения прав?!
25 мар 13, 10:18    [14090837]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
гурД
Guest
KonstF,

ещё вариант: "перенести" справочники (так как основное назначение справочника чаще всего сводится к упрощению ввода данных) к себе на комп. Или временно, или же регулярно их синхронизировать с основными
25 мар 13, 10:31    [14090900]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
гурД
KonstF,

ещё вариант: "перенести" справочники (так как основное назначение справочника чаще всего сводится к упрощению ввода данных) к себе на комп. Или временно, или же регулярно их синхронизировать с основными


Код, приводимый ранее работал, на данный момент не отрабатывает именно с этой ошибкой. Этим примером просто пытался понять, что не работает.
25 мар 13, 10:39    [14090936]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
У Accessa есть встроенные средства разграничения прав?!
25 мар 13, 10:56    [14091016]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
гурД
Guest
KonstF,

F1
25 мар 13, 11:09    [14091071]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
Смоляное Чучелко
Member

Откуда:
Сообщений: 10
KonstF, таки самый последний вариант -- выложить конкретные базы, если это возможно.
25 мар 13, 17:37    [14093538]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
qwerty112
Guest
KonstF
гурД, все верно, просто пополнить справочник

(код прогр. который собственно это и писал, поле счетчик). изменил без расчета айди

"INSERT INTO types( [name] ) VALUES ( 'new type engine');"

ситуация та же - тот же эксшепш.

types - точна таблица ? это не запрос ?
если таблица - ПК есть в ней ?
25 мар 13, 17:46    [14093616]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
qwerty112
KonstF
гурД, все верно, просто пополнить справочник

(код прогр. который собственно это и писал, поле счетчик). изменил без расчета айди

"INSERT INTO types( [name] ) VALUES ( 'new type engine');"

ситуация та же - тот же эксшепш.

types - точна таблица ? это не запрос ?
если таблица - ПК есть в ней ?



Да, это именно таблица!
Конечно, примари кей стоит и тип поля - автоинкремент!
26 мар 13, 06:58    [14094988]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
KonstF
Member

Откуда:
Сообщений: 33
Может наведет кого на мысль или сам сталкивался - когда делаю экспорт таблиц с локальной БД в файл базы в сети(переливаю табличку-структуры + данные) получаю сообщение

"База данных ХХХ доступна только чтения!"
"Невозможно сохранить изменения данных или определений объектов этой базы данных"

:(

права в win на файл - полный доступ - чтение - запись.
26 мар 13, 07:09    [14094992]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый запрос  [new]
cylindr
Member

Откуда:
Сообщений: 305
KonstF,

Я не знаю как в 2007-м, но может быть так?

К сообщению приложен файл. Размер - 78Kb
26 мар 13, 07:29    [14095007]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить