Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > KeyValue


Автор: tikitiki 15.12.2005, 19:59
Овладел созданием локальных баз через BDE в paradox наконец нормально. KeyValue использую интуитивно как ниже
Код

type
  TfmFlightRegisterMain = class(TForm)
    laEatTimeNumber: TLabel;
    deEatTimeNumber: TDBEdit;
    buCancel: TButton;
    buExit: TButton;
    dsEatTimeNumber: TDataSource;
    taEatTimeNumber: TTable;
    naEatTimeNumber: TDBNavigator;
    laAirCompanyName: TLabel;
    deAirCompanyName: TDBEdit;
    taEatTimeNumberAircname: TStringField;
    taEatTimeNumberEattmnum: TFloatField;
    procedure FormActivate(Sender: TObject);
    procedure buExitClick(Sender: TObject);
    procedure buCancelClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    Editing:Boolean;
    KeyValue:String;
  end;

Всё работает, но я хочу описание желательно русское, как его использовать, чтоб без ошибок всё было. Или краткое объяснение. Я его использовал в разных модулях. В одной программе у меня получились KeyValue типа integer и string. Объявлял как выше в примере только с разными типами. Не совсем правильно выразился-меня больше интересует не использование, а правильное объявление наподобие как в приведённом примере, чтоб модули связать правильно.

Автор: tikitiki 17.12.2005, 20:16
Почему никто не отвечает. Меня этот вопрос сильно интересует.
И вопрос то вроде чепуховый. smile(

Автор: YurikGL 18.12.2005, 10:24
Цитата
но я хочу описание желательно русское, как его использовать, чтоб без ошибок всё было.

Советую взять справку к delphi и англо-русский словарь.
Всю жизнь Вам переводить справку никто не будет. Надо уметь пользоваться английской.

Автор: tikitiki 19.12.2005, 05:28
Я справок английских много читаю. У меня проблема в данном случае в другом.
Я help по delphi смотрел, но не понял смысл. Бывает очень часто, что и русский текст смысл не понимаешь, если информация техническая или новая какая-то заковыристая. Спервого раза не всё даётся. Ведь так?

Автор: sexton 19.12.2005, 09:08
Цитата(tikitiki @ 19.12.2005, 05:28)
Бывает очень часто, что и русский текст смысл не понимаешь, если информация техническая или новая какая-то заковыристая.

Я в данном случае не понял русский текст. В чем суть проблемы?

Автор: tikitiki 19.12.2005, 10:42
Цитата

В чем суть проблемы?


Я кроме того, что можно бы ставить объявление KeyValue в раздел public,
больше ничего об использовании KeyValue не знаю. Догадываюсь, что
KeyValue относится к величине ключа таблицы. В программе всё делаю интуитивно, работает, но так же ошибок не избежишь, если не знаешь
толком, как применять. Этот вопрос последний не разобраный для меня, как я считаю, из вопросов по локальным бд.

Автор: Vit 19.12.2005, 20:05
Хм... в приведенном коде KeyValue нигде не используется... вы просто объявили по сути переменную и всё...

Автор: tikitiki 19.12.2005, 23:12
Цитата

в приведенном коде KeyValue нигде не используется

Vit, я здесь всё пытался объяснить, что использование мне не надо-я знаю. А вот как объявлять правильно и в каких модулях не знаю. Кстати,
насчёт -переменная -это какая-то специальная переменная KeyValue и могу ли я менять тип и имя этой переменной?

Автор: YurikGL 19.12.2005, 23:23
Цитата
tikitiki (Online)


Какая разница, как переменную назвать? От этого не меняется ее тип или предназначение. С ней можно делать все, что можно делать с любой другой переменной.

Автор: tikitiki 20.12.2005, 14:30
Цитата

С ней можно делать все, что можно делать с любой другой переменной.


В help по delphi6 нашёл сейчас статьи TDBLookupControl.KeyValue и TDBLookupControl.KeyValue для VCL. Там пишется:Represents the common value of the KeyField field and the DataField field.

Я не уверен, что это относится к моему вопросу, но может это и есть переменная KeyValue?
Тоже можно сказать про Editing -выше в коде тоже есть.
Извиняюсь, если нелепо выгляжу.

Автор: YurikGL 20.12.2005, 15:27
Цитата
В help по delphi6 нашёл сейчас статьи TDBLookupControl.KeyValue и TDBLookupControl.KeyValue для VCL. Там пишется:Represents the common value of the KeyField field and the DataField field.

Там keyvalue является параметром соответсвующих классов. Если этот параметр применять по отношению к этим классам то он будет значить то, что написано в хелпе.
В твоем случае этого нет.
Ты можешь назвать переменную
i:integer или Form1:integer Разницы между Form1 и i в этом случае не будет.

Автор: tikitiki 20.12.2005, 17:49
Цитата

Ты можешь назвать переменную
i:integer или Form1:integer Разницы между Form1 и i в этом случае не будет.

Кажется начинаю понимать.
Чтоб окончательно прояснить - ниже код из implementation из того же модуля, что выше описан:
Код


procedure TfmFlightRegisterMain.buExitClick(Sender: TObject);
begin
   with taEatTimeNumber do
   begin
   if (State in [dsEdit,dsInsert]) and Modified then
      Post;   {Сохранить изменения, если действует режим}
   end;        {редактирования или дополнения и запись изменялась}
KeyValue :=   {Запомнить значение ключа для fmShowFlights}
          taEatTimeNumber.FieldByName('Aircname').AsString;
fmFlightRegisterMain.Close;

end;



Код

procedure TfmFlightRegisterMain.FormActivate(Sender: TObject);
begin

if Editing then
   begin
   Caption := 'Регистрация новой авиакомпании режим редактирования';
   naEatTimeNumber.Enabled:=True; {Навигатор доступен}
   with taEatTimeNumber do
      begin
      DisableControls;
      First;
      SetKey;
      FieldByName('Aircname').AsString:= KeyValue;
      GotoKey;        {Поиск записи по ключу}

         EnableControls;
         Edit;           {Режим редактирования}
         
      end;
   end
else
   begin
   Caption := 'Регистрация новой авиакомпании режим дополнения';
   naEatTimeNumber.Enabled:=False; {Навигатор не доступен}
   taEatTimeNumber.Append;   {Режим дополнения}
   end;
end;



Этот код работает так, как мне нужно и без ошибок в данных после тестов и на форме TfmFlightRegisterMain есть соответствующие навигатор naEatTimeNumber и таблица taEatTimeNumber.
В этом коде KeyValue - та же переменная, которую я могу переименовать по своему? Или что? Я просто этот код писал на основе примеров и не до конца по описанию смог понять, что к чему.
Заранее спасибо.

Автор: YurikGL 20.12.2005, 18:13
Цитата
В этом коде KeyValue - та же переменная, которую я могу переименовать по своему?

Да. Только не забудь все обращения к ней тоже переименовать.

Автор: tikitiki 21.12.2005, 05:26
YurikGL, спасибо большое за ясность в голове. По-моему благодарность не ушла. Потому повторил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)