Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.15;
Скачать: CL | DM;

Вниз

TClientDataSet - перевод в режим редактирования.   Найти похожие ветки 

 
Чайник ©   (2010-03-29 14:01) [0]

На форме DBGrid и DBNavigator.

dSetMain : TClientDataSet.  

Данные в  dSetMain грузятся из файла:


  if FileExists(FileName) then begin
     dSetMain.FileName := FileName;
     dSetMain.LoadFromFile(FileName)
  end else begin
     dSetMain.EmptyDataSet;
     dSetMain.SaveToFile(FileName, dfBinary);
  end;
  dSetMain.Open;


Если файл отсутствует и создается пустой набор - все работает, навигатором могу добавлять записи, править и т.д.
Если же данные читаются из файла, dSetMain переходит в режим dsBrouse и никакими силами в режим правки не перевести.

Пробовал принудительно в разных сочетаниях:
  TexPassData.dSetMain.Append;
  TexPassData.dSetMain.Insert;
  TexPassData.dSetMain.Edit;
- никакого толку.
Что я делаю(или не делаю) неправильно???


 
Сергей М. ©   (2010-03-29 15:44) [1]

> Если файл отсутствует и создается пустой набор

Что-то не видать в твоем коде создания пустого набора


 
Чайник ©   (2010-03-29 15:52) [2]


> Что-то не видать в твоем коде создания пустого набора


А зачем, если грузится из файла?

P.S. Попробовал вставить:

  if FileExists(FileName) then begin
     dSetMain.FileName := FileName;
     dSetMain.CreateDataSet;
     dSetMain.LoadFromFile(FileName)
  end else begin...


- те же яйца, только в профиль.


 
sniknik ©   (2010-03-29 16:08) [3]

вот это в первом лишнее
> dSetMain.FileName := FileName;

а вот это странное
> dSetMain.EmptyDataSet;
получается сначала чистим а после сохраняем...

> dSetMain.Open;
тоже тогда не нужен.


 
Чайник ©   (2010-03-29 16:33) [4]


> вот это в первом лишнее> dSetMain.FileName := FileName;


Это действительно лишнее.


> а вот это странное> dSetMain.EmptyDataSet;получается сначала
> чистим а после сохраняем...


Просто надо застолбить файл хотя бы пустым набором.


 
sniknik ©   (2010-03-29 16:47) [5]

> Просто надо застолбить файл хотя бы пустым набором.
зачем?
если
if FileExists(FileName) then
 dSetMain.LoadFromFile(FileName)
else begin
 dSetMain.CreateDataSet;


когда он будет использоваться, этот пустой набор?


 
Чайник ©   (2010-03-29 17:04) [6]


> когда он будет использоваться, этот пустой набор?


В другом месте по существованию файла проверяются настройки.

Кстати, программным образом доступ к телу работает:

  TexPassData.dSetMain.Append;
  TexPassData.dSetMain.FieldByName("idParent").AsInteger := 1;
  TexPassData.dSetMain.FieldByName("KindPassport").AsInteger := 1;
  TexPassData.dSetMain.FieldByName("Title").AsString := "Title";
  TexPassData.dSetMain.Post;


И удаление записей тоже работает...

Может все дело в DBGrid или DBNavigator ?


 
Сергей М. ©   (2010-03-29 17:19) [7]


> Чайник ©   (29.03.10 15:52) [2]
> А зачем, если грузится из файла?


Какой нафих файл, если его нет ?
А если он есть, но тогда нафих CreateDataSet и тем более EmptyDataSet ?


 
Чайник ©   (2010-03-29 17:37) [8]


> Какой нафих файл, если его нет ?А если он есть, но тогда
> нафих CreateDataSet и тем более EmptyDataSet ?


ну нужен, нужен мне файл с нужным именем в нужном месте!!!

Я не об этом спрашиваю!


 
Сергей М. ©   (2010-03-29 17:41) [9]

Ну если явное программное обращение работает, то разглядывай внимательно грид, навигатор, дейтасурс и пр. - что-то в них не так


 
Чайник ©   (2010-03-29 18:03) [10]


> Ну если явное программное обращение работает, то разглядывай
> внимательно грид, навигатор, дейтасурс и пр. - что-то в
> них не так


С утра разглядываю, на мыло изошел, ничё понять не могу!


 
Сергей М. ©   (2010-03-29 18:05) [11]

Ну и что говорит дейтасет при попытке перевести его в режим редактирования при посредничестве, например, навигатора ?


 
Чайник ©   (2010-03-29 19:56) [12]


> Ну и что говорит дейтасет при попытке перевести его в режим
> редактирования при посредничестве, например, навигатора
> ?


Прошу прощения, сразу не ответил - пришлось отвлечься.

дата сет ничего не говорит - просто не переходит.

Смотрю исходники DBNavigator - нажатие кнопок вызывает те же методы датасета Insert, Edit и т.п. :

procedure TDBNavigator.BtnClick(Index: TNavigateBtn);
begin
 if (DataSource <> nil) and (DataSource.State <> dsInactive) then
 begin
   if not (csDesigning in ComponentState) and Assigned(FBeforeAction) then
     FBeforeAction(Self, Index);
   with DataSource.DataSet do
   begin
     case Index of
       nbPrior: Prior;
       nbNext: Next;
       nbFirst: First;
       nbLast: Last;
       nbInsert: Insert;
       nbEdit: Edit;
       nbCancel: Cancel;
       nbPost: Post;
       nbRefresh: Refresh;
       nbDelete:
         if not FConfirmDelete or
           (MessageDlg(SDeleteRecordQuestion, mtConfirmation,
           mbOKCancel, 0) <> idCancel) then Delete;
     end;
   end;
 end;
 if not (csDesigning in ComponentState) and Assigned(FOnNavClick) then
   FOnNavClick(Self, Index);
end;


И почему это не работает?


 
sniknik ©   (2010-03-29 20:06) [13]

> И почему это не работает?
с чего взял? у меня работает. вот сделай пример, все, что здесь говорил, в новом проекте. и ничего больше.


 
dik59   (2010-03-29 21:03) [14]

Извите, что вклиниваюсь, по дискуссии похоже, что навигатор с датасетом НЕ СВЯЗАН.


 
Чайник ©   (2010-03-29 22:38) [15]


> Извите, что вклиниваюсь, по дискуссии похоже, что навигатор
> с датасетом НЕ СВЯЗАН.


Связан, связан. Я же говорю - когда датасет не грузится из файла, а создается dSetMain.CreateDataSet - все работает.


 
Чайник ©   (2010-03-29 23:19) [16]


> sniknik ©   (29.03.10 20:06) [13].
>  вот сделай пример, все, что здесь говорил, в новом проекте.
>  и ничего больше.


Спасибо за дельный совет!
Действительно, в новом проекте все заработало.
Кажется разобрался, точнее не разобрался, а нашел болевую точку - у меня на другой форме с этим датасетом связан DBTreeView (который Dynamic DBTreeView). Как его отключил - все глюки исчезли.
Вот что значит использовать компоненты сторонних производителей...



Страницы: 1 вся ветка

Текущий архив: 2012.01.15;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1316959585
Pit
2011-09-25 18:06
2012.01.15
Несколько вопросов по Android


2-1317911115
vegarulez
2011-10-06 18:25
2012.01.15
Звук при нажатии Enter


2-1317796120
Laguna
2011-10-05 10:28
2012.01.15
Обработка ошибок в открывающейся форме


2-1318188503
Евгений07
2011-10-09 23:28
2012.01.15
В GraphicEx: нет LoadFromStream для Image


2-1317776310
Eeuwige Rouw
2011-10-05 04:58
2012.01.15
TMediaplayer