Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Recordset is not available / 8 сообщений из 8, страница 1 из 1
13.05.2003, 17:32
    #32158875
dead1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
Програмка пролежала на полке полгода, сейчас пришло время с ней возится. Проблема заключается в том, что если раньше всё более-менее работало, то сейчас один и тот же барьер.

Итак, по порядку. Есть большая таблица (lsr). С помощью простого запроса
SELECT lsr.*
FROM lsr, [SELECT a.srn FROM adreses1 AS a WHERE a.rajons = 1]. AS b
WHERE lsr.srn = b.srn
ORDER BY lapas_num;

из неё извлекаются все данные по значению одного из полей и показываются в форме. lsr, adreses1 - таблицы, lapas_num,srn,rajons - поля.
Раньше можно было прямо из формы сквозь запрос изменять значения в таблице. Теперь вылетает ошибка "This recordset is not updatable". Как с этим бороться я пока не знаю. Таблицы берутся с sql сервера через odbc. На серваке стоят все пермишшаны. Какие есть общие и частные методы устранения сей неприятности?

Так же есть и второй вопрос. Нужно сделать фильтр по значениям полей этого запроса. Я создаю ещё один запрос, где пишу всё что требуется и показываю это в форме. Вроде, SELECT * FROM qryLsr WHERE lapas_num > 150; Так ли надо делать или можно обойтись всё тем же запросом (добавить туда доп.условия) и вызывать?
...
Рейтинг: 0 / 0
13.05.2003, 17:49
    #32158901
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
С трудом верится в былую работоспособность. Запрос с подзапросом имхо никогда не был обновляемым. Один из вариантов, если работаешь c jet, переписать запрос с использование DLookup, например:

SELECT lsr.*
FROM lsr, DLookup("srn", "adreses1", "rajons = 1") AS b
WHERE lsr.srn = b.srn ORDER BY lapas_num;

Что касается второго вопроса, можно и так и так.
...
Рейтинг: 0 / 0
13.05.2003, 18:05
    #32158915
dead1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
Форму открыть отказывается напрочь. Зато, если первый запрос сделать таким (SELECT * FROM lsr;), то всё работает как положено. Раньше тот двойной запрос был разбит на два отдельных и всё бы ничего, если бы не скорость - раз в 10-15 медленнее.
...
Рейтинг: 0 / 0
14.05.2003, 11:24
    #32159315
dead1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
Ничерта не понимаю. Поменял тот запрос на
SELECT lsr.* FROM lsr WHERE srn in (SELECT adreses1.srn FROM adreses1 WHERE rajons = 1) ORDER BY lsr.lapas_num;

Теперь в query design, после запуска запроса, можно изменять значения, а в форме всё равно не даёт.

ps: мысли вслух :)
...
Рейтинг: 0 / 0
14.05.2003, 11:46
    #32159374
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
2 dead1

Привел два разных по-сущности запроса и уже вслух мыслить стал...
Первый действительно не будет обновляемым, последний твой - обновляемый.
Ты бы у формы проверил разрешения на изменения.
Заодно приоткрыл бы тайну о версии Акеса и типа базы (mdb or adp).
...
Рейтинг: 0 / 0
14.05.2003, 12:01
    #32159404
dead1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
Ура. Заработало. (!!!)

База mdb, Access 2000, все основные (публичные) таблицы хранятся на ms sql сервере. Мысли вслух могут у любого появится, если работа горит, а два с половиной дня оно не пашет ;)

Конечно, очень странно, что раньше первый запрос работал. Может тогда линки стояли не на odbc, а на такие же mdb... Если бы он не работал, я бы его так не оставил. Между прочим, может они и разные, но данные выводили 100% идентичные. Но не работало при всех allow'сах, которые я тщательно проверял.

Хорошо. А какая может быть разница в этих запросах, если один может, а другой не может? Что может мешать первому нормально работать?
...
Рейтинг: 0 / 0
14.05.2003, 12:02
    #32159406
dead1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
pps : Пора мне ник менять, а то всё постоянно не работает :(
...
Рейтинг: 0 / 0
14.05.2003, 12:12
    #32159425
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset is not available
Специально проверил

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT tbl0Country.auCounty, tbl0Country.ID_Country, 
tbl0Country.NameOfCountry_rus, tbl0Country.NameOfCountry_ger, 
tbl0Country.UserName, tbl0Country.UserTimeChange
FROM tbl0Country
WHERE (((tbl0Country.auCounty) In (select t.auCounty from tbl0Country t where 
t.auCounty> 1 )));


работает и обновляет

и
Код: plaintext
1.
2.
3.
4.
5.
SELECT tbl0Country.auCounty, tbl0Country.ID_Country, 
tbl0Country.NameOfCountry_rus, tbl0Country.NameOfCountry_ger, 
tbl0Country.UserName, tbl0Country.UserTimeChange
FROM [select t.auCounty from tbl0Country t where t.auCounty> 1 ]. AS t INNER 
JOIN tbl0Country ON t.auCounty = tbl0Country.auCounty;


Работает и обновляет, если выставить "Тип набора записей" в "Динамический не согласованный" (у формы и запроса)

Так что IgorM оказался не прав, ну и я за компанию.
ПРОСТИТЕ, братцы
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Recordset is not available / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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