Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с SQL в Delphi 
:(
    Опции темы
1Pioner1
Дата 31.5.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Привет всем. Помогите разобратся. Ситуация такова:
Есть БД (*.db). Работаю на Delphi 7 и использую BDE;
При выполнении запроса SQL я не могу редактировать таблицу (пишет что-то "...read-only")
До выполнения запроса всё пучком.
В чём может быть дело?  smile 
Кто знает как это решить?
Помогите плиз.

Зарание благодарен 
PM MAIL   Вверх
skyboy
Дата 31.5.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



1Pioner1, как это "не могу редактировать"? Ты используешь компонент TQuery? А RequestLive установил в True? B что у тебя за запрос? Если запрос типа
Код

SELECT id,count(*) FROM table GROUP BY id

то как ты представляешь себе редактирование?  
PM MAIL   Вверх
1Pioner1
Дата 31.5.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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, но я же с первого запроса все параметры переписываю в другой smile 

Спасибо тебе. Натолкнул меня ещё раз всё проверить и разобратся smile 

З.Ы. А я то думаю что за... 
PM MAIL   Вверх
1Pioner1
  Дата 31.5.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



А теперь ещё одна проблема:

RequestLive я поставил оба в true, но теперь оно редактирует а не сохраняет изменёные записи. Как в этом случаи поступить?  

Это сообщение отредактировал(а) 1Pioner1 - 31.5.2006, 22:32
PM MAIL   Вверх
bas
Дата 1.6.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



1. TUpdateSQL
2.Запрос на обновление 
PM MAIL   Вверх
skyboy
Дата 1.6.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



1Pioner1, кажется, FlushBuffers. Под рукой справки нет, не проверю. Если у тебя стоит CashedUpdate = True, то тебе надо самомстояетельно сбрасывать кэш. Скажем, при закрытии формы. Метод то ли Post, то ли FlushBuffers, то ли они оба одинаково действуют... 
PM MAIL   Вверх
1Pioner1
  Дата 2.6.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Ситуация следуюющая: Я уже говорил что у меня 2 формы, так вот на первой форме у меня находится SQL который прописан и в второй форме (для того чтобы при переходе на другую форму данные в таблице были те же). Так вот решив проблемы указаные выше, появляется следующая, при выходе из проги данные не сохраняются, хотя при работе вроде всё нормально пашит. Что в таком случае посоветуете?

З.Ы. При onShow второй формы делается Edit базы, а при onClose post базы и Update SQL, так как вы посоветовали smile  
PM MAIL   Вверх
1Pioner1
Дата 5.6.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Мне кто нибуть поможет smile 

 
PM MAIL   Вверх
skyboy
Дата 5.6.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Как? Совсем изменения не сохраняются? Ни одно? 
PM MAIL   Вверх
1Pioner1
Дата 5.6.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Если CashedUpdate стоит true то не сохраняет ни чего, но работает smile  А если CashedUpdate стоит false то сохранять сохраняет только с проблемамиииииии. Тоесть если редактирую одну запись всё нормально, перехожу к другой при изменении какой то записи пишет ''Query1: Dataset not in edit or insert mode.'' В чём проблема не пойму. У меня изменяются несколько полей таким способом:

procedure TForm2.DateTimePicker10Change(Sender: TObject);
begin
 DataSource1.DataSet.FieldByName('srokdo').Value:=DateToStr(DateTimePicker10.Date);
 DateTimePicker10.Visible:=false;
 Button10.Visible:=true;
 DBText10.Visible:=true;
end;

 smile 

Что не так????????? 
PM MAIL   Вверх
skyboy
Дата 5.6.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Код

 DataSource.DataSet.Edit;
 DataSource1.DataSet.FieldByName('srokdo').Value:=DateToStr(DateTimePicker10.Date);

Т.е. надо перевести query в состояние редактирования.  
PM MAIL   Вверх
1Pioner1
Дата 6.6.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Первая форма у меня только для просмотра. При переходе во вторую форму делается DataSource.DataSet.Edit;
А при закритии делается DataSource.DataSet.Post;
Так что мне не понятно что с ним???
Но это только с DataSource1.DataSet.FieldByName('srokdo').Value:=DateToStr(DateTimePicker10.Date);
и другими столбиками.
Если же используется DBEdit то всё пучком smile   
PM MAIL   Вверх
1Pioner1
Дата 8.6.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Кто-то знает smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие СУБД | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.