** avtoritet |
Отправлено: 20.09.2004, 03:45 |
|
Не зарегистрирован
|
Утро доброе! Помогите разобраться с глюком.
Имеется: Query, grid, updatesql, datasource ... .
Значит устанавливаю свойства:
Query->SQL->Add("select*from base order by Name");
updatesql ---- генерирую все что надо(Modify, Insert, Delete...)
Естественно все между собой соединил.
Запускаю:
Запрос отображается, все удаляется, меняется, вставляется.
Но как только нажимаю кнопку другого запроса, где код такой:
Query->Close();
Query->SQL->Clear(); //
Query->SQL-> Add(select*from base order by Kol"); //
Query->Open();
Query->Edit();//-свой взор глюк останавливает на этом
Запрос отображается, но при попытке что-нибудь добавить, отред., удалить — ругается(query: cannot modify a read-only dataset).
Конкретно при попытки добавить:
Query: dataset not in edit or insert mode;
Ну вот и вся делема! Зарание всем спасибо!
|
|
AVC |
Отправлено: 20.09.2004, 08:44 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
По вашему куску кода совершенно не понятно где вы допускаете ощибку.
Одно могу сказать точно — это не глюк а ваши проблемы. Вы можете
1. Зарегестрироваться и прицепить к сообщению полный код с этой ошибкой (минимально необходимый кусок для получения exe). Постараемся (я или кто то еще) вам помочь.
2. Посмотреть здесь (Редактирование View) как заставить редактировать абсолютно любой запрос при использовании BDE.
3. И, наконец, сесть и спокойно почитать литературу. |
|
avtoritet |
Отправлено: 20.09.2004, 14:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Как я не хотел этого делать! Регистрация .... — ненавижу подобного рода процедуры! Прикрепил? Больно много весит( с моим поганым интернетом это займет около часа)!
А если так вопрос поставить:
Query->SQL = "select*from base order by name"
Update->Modify = update datafilms
set
Name_film = :Name_film,
Zhanr = :Zhanr,
God_vipuska = :God_vipuska,
Nalichie = :Nalichie
where
Name_film = :OLD_Name_film and
Zhanr = :OLD_Zhanr and
God_vipuska = :OLD_God_vipuska and
Nalichie = :OLD_Nalichie
Update->Insert = insert into datafilms
(Name_film, Zhanr, God_vipuska, Nalichie)
values
(:Name_film, :Zhanr, :God_vipuska, :Nalichie)
Update ->Delete = delete from datafilms
where
Name_film = :OLD_Name_film and
Zhanr = :OLD_Zhanr and
God_vipuska = :OLD_God_vipuska and
Nalichie = :OLD_Nalichie
-- все работает без упреков!
Как только меняю Query->SQL = "select*from base order by kol"
ничего не редактируется, не удаляется. Тексты ошибок уже писал.
Вообщем, как мне кажется, у меня что-то с Update->... ? |
|
avtoritet |
Отправлено: 20.09.2004, 14:06 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
На всякий случай — БД парадоксная. |
|
xim |
Отправлено: 20.09.2004, 14:27 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Хотелось бы увидеть структуру таблицы base |
|
xim |
Отправлено: 20.09.2004, 14:34 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
А лучше всю структуру (втч с индексами) |
|
AVC |
Отправлено: 20.09.2004, 14:36 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Очевидной причины не вижу. Можете выслать мне для начала таблицу base мылом на avc12@mail.ru. Поэкспериментирую. Какими компонентами пользуетесь? BDE? Таблицу желательно ту, с которой у вас не хочет работать. (Можете взять часть своей, но только убедитесь, что у вас она не работает). |
|
avtoritet |
Отправлено: 20.09.2004, 14:43 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Индесков нет. Все поля типа стринг. |
|
avtoritet |
Отправлено: 20.09.2004, 14:45 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
AVC — base on mail. |
|
avtoritet |
Отправлено: 20.09.2004, 15:16 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
я ТАК понимаю изменение TQuery->SQL = ... не должно влиять на TUpdateSQL->Modifi, Insert, Delete?
Или я не прав? |
|
avc* |
Отправлено: 20.09.2004, 15:22 |
|
Не зарегистрирован
|
Да. Так как у вас выборка идет из тоже самой таблицы. Максимум моги быть затронуты индексы, но вы пишете, что у вас их нет.
PS. Почты еще нет. |
|
avtoritet |
Отправлено: 20.09.2004, 15:30 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
avc: почта в пути. |
|
avc* |
Отправлено: 20.09.2004, 17:02 |
|
Не зарегистрирован
|
Только получил файлы. Извините, но сегодня уже не успею заняться. Подождите до завтра. |
|
AVC |
Отправлено: 21.09.2004, 10:45 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
...
-- все работает без упреков!
Как только меняю Query->SQL = "select*from base order by kol"
ничего не редактируется, не удаляется. Тексты ошибок уже писал.
...
|
Посмотрел. Вам повезло. У меня редактирует "по умолчанию" только если вообще не ставлю ни какого Order by.
Поностью рабочий вариант решения вашей проблемы отправляю мылом. Будет что не ясно — спрашивайте.
PS. Я добавил в таблицу поле "ID" (автоинкремент, PK) что значительно упрощает жизнь.
PPS. Я вам сразу советовал посмотреть тему "как редактировать любой BDE запрос".
|
|
avtoritet |
Отправлено: 21.09.2004, 13:28 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
AVC: Спасибо! Еще толком не разбирался, но сразу видно то что мне надо.
А что без поля ИД не пашит?
Как понимать запрос по "умолчанию" без ордер бай? Дак у тебя же есть запросы с ордер бай.
Обсуждения ваши читал на том сайте, но, почему -то , не нашел там то, чено искал. |
|
AVC |
Отправлено: 21.09.2004, 13:53 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE | А что без поля ИД не пашит? |
Пашет, но с ID намного удобнее — каждая запись имеет свой навсегда уникальный номер.
QUOTE | Как понимать запрос по "умолчанию" без ордер бай? |
Текст запроса "Select * From datafilms", в Query включаем только RequestLive и все работает (edit/insert/delete).
QUOTE | Обсуждения ваши читал на том сайте, но, почему -то , не нашел там то, чено искал |
То, что я послал — воплощение обсуждений (послений пост) для твоего частного случая. Предложенная метода позволяет работать с переименованными полями и с выборками из нескольких таблиц. |
|
avtoritet |
Отправлено: 21.09.2004, 14:40 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Мне всегда интересовала одна вещь: этот уникальный номер — какое у него максимальное значение. Записи удаляютя, а он штампуется без прерыно по порядку. К примеру, имея три записи(1,2,3), удаляем вторую(2), вставляем новую(номер будет 4). В таком случае наступит момент когда-нибудь, база начнет ругаться.
То что ты послал действительно вещь реальная. Сижу, разбираюсь ...
|
|
avc* |
Отправлено: 21.09.2004, 14:57 |
|
Не зарегистрирован
|
Даже если это просто 32-х разрядное положительное целое при добавлении 1 записи в секунду запаса хватит на 2147483647(7FFF.FFFF) / (24*60*60) = 24855 суток = 68 лет.
|
|