Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
2-1317892848
ford
2011-10-06 13:20
2012.01.15
findfirst не ищет в temp пользователя win7


15-1317155402
Юрий
2011-09-28 00:30
2012.01.15
С днем рождения ! 28 сентября 2011 среда


15-1317501002
Юрий
2011-10-02 00:30
2012.01.15
С днем рождения ! 2 октября 2011 воскресенье


2-1317643451
Очень Злой
2011-10-03 16:04
2012.01.15
TFileStream


2-1317185371
vgvolk
2011-09-28 08:49
2012.01.15
Создание xml файла в делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский