Главная страница
    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-1317792498
petvv
2011-10-05 09:28
2012.01.15
Array of Char to String (ANSIString)=:


2-1317364016
Phoenix
2011-09-30 10:26
2012.01.15
Работа с Вебсервисами с помощью Delphi2009


15-1317153552
xayam
2011-09-27 23:59
2012.01.15
ExeClient = WebKit + HTML + CSS + JavaScript


15-1316837540
SQLEX
2011-09-24 08:12
2012.01.15
идиотека..


15-1316457374
Leon-Z
2011-09-19 22:36
2012.01.15
Каким будет ПО через 10 лет ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский