Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

После SQL-запроса Table1 недоступна! [D7, Paradox]


Insane SPIRIT ©   (2006-04-27 07:55:00) 

Почему после выполнения SQL-запроса компонент TTable становится недоступным? Например, метод Table1.Edit не действует, иначе говоря, таблица не реагирует на действия. Вот код выполнения запроса:
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(Memo1.Text);
Query1.Open;
if Query1.RecordCount <> 0 then
 DataSource1.DataSet:=Query1
else
 DataSource1.DataSet:=Table1;
end;


evvcom   (2006-05-02 08:57:00) [1]


> if frm.RBView.Checked=True then

:)
Достаточно if frm.RBView.Checked then

> frm.Table1.Close;
> frm.Table1.ReadOnly:=True;
> frm.Table1.Open;

Зачем переоткрывать набор? Только для того, чтобы ReadOnly установить? Лишнее. Вообще, для работы с таблицей достаточно одного компонента или TTable, или TQuery. Два - это перебор.


ЮЮ   (2006-05-02 07:36:00) [2]


> В процедуре Modes проверяются радиокнопки и переводится
> таблица в один из режимов.


Так процедуру ещё и вызывать надо :)


> if Query1.RecordCount <> 0 then
> DataSource1.DataSet:=Query1
> else
> DataSource1.DataSet:=Table1;
>
> DataSource1.DataSet:=Table1;



Выкинь 4 первые строки, если есть 5-ая


Плохиш   (2006-04-29 11:42:00) [3]


> Insane SPIRIT   (29.04.06 10:45) [6]

Хорошо, что мне не надо будет пользоваться этой программой. Глюкодром сплошной.


Insane SPIRIT   (2006-04-29 10:48:00) [4]

В процедуре Modes проверяются радиокнопки и переводится таблица в один из режимов.


Insane SPIRIT   (2006-04-29 10:45:00) [5]

Пожалуйста:

begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(Memo1.Text);
Query1.Open;
if Query1.RecordCount <> 0 then
DataSource1.DataSet:=Query1
else
DataSource1.DataSet:=Table1;

DataSource1.DataSet:=Table1;

end;
procedure Modes(frm: TForm1);
begin
if frm.RBView.Checked=True then
begin
frm.Table1.Close;
frm.Table1.ReadOnly:=True;
frm.Table1.Open;
end;
if frm.RBEdit.Checked=True then
begin
frm.Table1.Close;
frm.Table1.ReadOnly:=False;
frm.Table1.Open;
frm.Table1.Edit;
end;
end;


Плохиш   (2006-04-28 11:50:00) [6]


> Insane SPIRIT   (28.04.06 10:32) [3]
> evvcom, определил по навигатору, у которого даже после перевода
> таблицы в режим редактирования доступны только кнопки перехода
> по записям

Я так понимаю, что навигатор привязан к DataSource1? Так что же ты хочешь получить после выполнения [0]? Не пора уже логику включить?


Desdechado   (2006-04-28 11:47:00) [7]

что за нехватка времени?!
и где тот участок кода, в котором ты все-таки что-то куда-то возвращаешь?


Insane SPIRIT   (2006-04-28 10:32:00) [8]

evvcom, определил по навигатору, у которого даже после перевода таблицы в режим редактирования доступны только кнопки перехода по записям, так же не работает эта процедура:
procedure TForm1.Edit1Change(Sender: TObject);
var StrFields: string;
begin
StrFields:='Surname';
Table1.Locate(StrFields,Edit1.Text,[loCaseInsensitive,lopartialKey]);
end;

Desdechado, ошибку свою я понял, но после блока IFя передавал DataSource1 таблицу Table1. После этого запрос не выполнялся. Я так понимаю, что получается нехватка времени между выполнением операторов DataSource1.DataSet:=Query1 и DataSource1.DataSet:=Table1. Или я ошибаюсь?


Desdechado   (2006-04-27 10:36:00) [9]

судя по коду, ты заменяешь работу с Ttable работой с TQuery в случае непустоты последнего
естественно, ttable при этом остается не у дел


evvcom   (2006-04-27 08:28:00) [10]

Что значит "TTable становится недоступным", "Table1.Edit не действует" и "таблица не реагирует на действия"? В чем это проявляется, как определил?


Наверх

Титульная страница Поиск, карта сайта Написать письмо