![]() |
|
Модераторы: Akella |
![]()
|
|
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Привет всем. Помогите разобратся. Ситуация такова:
Есть БД (*.db). Работаю на Delphi 7 и использую BDE; При выполнении запроса SQL я не могу редактировать таблицу (пишет что-то "...read-only") До выполнения запроса всё пучком. В чём может быть дело? Кто знает как это решить? Помогите плиз. Зарание благодарен |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
1Pioner1, как это "не могу редактировать"? Ты используешь компонент TQuery? А RequestLive установил в True? B что у тебя за запрос? Если запрос типа
то как ты представляешь себе редактирование? |
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Запрос у меня таков
procedure TForm1.N9Click(Sender: TObject); var param:string [12]; begin param:=InputBox('Поиск','Введите имя:',''); with Form1.Query1 do begin Close; SQL.Clear; SQL.Add('select *'); SQL.Add('from ":video:db"'); SQL.Add('where'); SQL.Add('(name like "'+ param +'")'); SQL.Add('order by name'); Open; end; if Form1.Query1.RecordCount <> 0 then begin Form1.DataSource1.DataSet:=Query1; try Query1.Open; except On e : EDatabaseError do messageDlg(e.message, mtError, [mbOK],0); end; end else ShowMessage('Даных в базе нет'); end; Добавлено @ 22:04 Ааааааааа понял: Я выполняю запрос в Form1. А при переходе в Form2 выполняется procedure TForm2.FormShow(Sender: TObject); begin Form2.Query1:=Form1.Query1; Form2.DataSource1.DataSet:=Query1; end; И получилось что в Form1 RequestLive стоит False, а в Form2 RequestLive стоит True, но я же с первого запроса все параметры переписываю в другой Спасибо тебе. Натолкнул меня ещё раз всё проверить и разобратся З.Ы. А я то думаю что за... |
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
А теперь ещё одна проблема:
RequestLive я поставил оба в true, но теперь оно редактирует а не сохраняет изменёные записи. Как в этом случаи поступить? Это сообщение отредактировал(а) 1Pioner1 - 31.5.2006, 22:32 |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: нет Всего: 2 |
1. TUpdateSQL
2.Запрос на обновление |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
1Pioner1, кажется, FlushBuffers. Под рукой справки нет, не проверю. Если у тебя стоит CashedUpdate = True, то тебе надо самомстояетельно сбрасывать кэш. Скажем, при закрытии формы. Метод то ли Post, то ли FlushBuffers, то ли они оба одинаково действуют...
|
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Ситуация следуюющая: Я уже говорил что у меня 2 формы, так вот на первой форме у меня находится SQL который прописан и в второй форме (для того чтобы при переходе на другую форму данные в таблице были те же). Так вот решив проблемы указаные выше, появляется следующая, при выходе из проги данные не сохраняются, хотя при работе вроде всё нормально пашит. Что в таком случае посоветуете?
З.Ы. При onShow второй формы делается Edit базы, а при onClose post базы и Update SQL, так как вы посоветовали |
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Мне кто нибуть поможет
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Как? Совсем изменения не сохраняются? Ни одно?
|
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Если CashedUpdate стоит true то не сохраняет ни чего, но работает
procedure TForm2.DateTimePicker10Change(Sender: TObject); begin DataSource1.DataSet.FieldByName('srokdo').Value:=DateToStr(DateTimePicker10.Date); DateTimePicker10.Visible:=false; Button10.Visible:=true; DBText10.Visible:=true; end; Что не так????????? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Т.е. надо перевести query в состояние редактирования. |
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Первая форма у меня только для просмотра. При переходе во вторую форму делается DataSource.DataSet.Edit;
А при закритии делается DataSource.DataSet.Post; Так что мне не понятно что с ним??? Но это только с DataSource1.DataSet.FieldByName('srokdo').Value:=DateToStr(DateTimePicker10.Date); и другими столбиками. Если же используется DBEdit то всё пучком |
|||
|
||||
| 1Pioner1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Кто-то знает
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Другие СУБД | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |