|
DataBase |
|
データベース処理の流れデータベース処理には大きく分類すると次の4つある。 その他
Paradoxの場合次の2種類のどちらかだろう。
InterBaseの場合 Windows95で日本語を使うならシフトJISコードを使うべきだろう。 テーブルの作成時にデフォルトキャラクタセットをオプションで次のように指定する。
UNICODEを使う場合
ディクショナリに登録できるプロパティ
2.入力処理 ![]()
データを入力した時にデータが入力規則に沿っているかどうかを確かめる必要がある。 入力データの検証にはTFieldコンポーネントのOnValidateイベントを使う。 <例題> CompanyにCで始まるデータだけを受け入れる場合。 procedure TForm1.Table1CompanyValidate(Sender: TField); begin if CompareText(Copy(Sender.Text,1,1),'C') <> 0 then raise Exception.Create('無効なデータです。'); end;
3.更新処理 ![]() データを更新するには、まずデータを検索する必要がある。 検索処理を参照せよ。
TQueryコンポーネントを使うとデータを更新できないときがある。SQL文で2つ以上のテーブルを使用した場合はデータを更新できない。 その他にも次の語句をSQL文で使用すると更新できないデータセットになってしまう。
キャッシュアップデートを使うと、更新できる。 キャッシュアップデートはTUpdateSQLコンポーネントを使って実現する。 TUpdateSQLにDeleteSQL, InsertSQL, ModifySQLを設定する。 TUpdateSQLをダブルクリックするとSQL文自動生成のダイアログボックスが出てきるのでそれを使ってSQL文の雛形を作成する。
TQueryのSQL文で更新クエリーを指定すればデータの一括更新を実現できる。 <例題> Customer.DBのTaxRateをエディットボックスに入力した数値分増減する。
4.削除処理 ![]()
5.検索(閲覧)処理 ![]()
FindKey, GotoKeyは互換性のために残っているだけである。新しいアプリケーションではLocateとLookUpを使うべきだ。Locateは可能な限り速い方法を使って一致するレコードの位置を突き止める。 <例題1> SetRangeを使って、顧客テーブルの顧客番号が with Table1 do begin SetRangeStart; { 最初のキーを設定する } FieldByName('CustNo').AsFloat := StrToFloat(Edit1.Text); SetRangeEnd; { 最後のキーを設定する } FieldByName('CustNo').AsFloat := StrToFloat(Edit2.Text); ApplyRange;{ 範囲の設定をデータセットに適用する } end;
<例題2> Locateを使って会社名がEdit1.Textと先頭部分一致するデータを取り出す。 if not Table1.Locate('CompanyName',Edit1.Text, [loCaseInsensitive,loPartialKey]) then MessageDlg('該当するデータがありません。',mtInformation,[mbOK],0); <例題3> Locateを使って、StateとCityが
<例題4> FindKeyを使って、顧客テーブルの顧客番号(CustNo)が
|
処理 |
TTable |
TQuery |
---|---|---|
並べ替え |
IndexFieldNamesまたはIndexNameを使う。 インデックスを使用して並べ替えを行うのでテーブルにインデックスを作成する必要がある。 |
SQL文の中で Order Byを使う。 但し、SQL文の中で Order Byを使うと更新が不可能なデータセットになる。 |
検索 |
Filterプロパティを使う。 SetRangeを使う。但しインデックス項目にしか使えない。 Locate,FindKey |
|
データ更新 |
||
イベントの使用目的別解説
1.初期値の設定
使用するイベント OnNewRecord 順序 BeforeInsert, OnNewRecord, AfterInsert ソース(DB.PAS) TDataSet.Insert(5336),
TDataSet.Append(5353),
TDataSet.BeginInsertAppend(5421)
TDataSet.EndInsertAppend(5429)(例)
2.入力データの検証
使用するイベント OnValidate 順序 ソース(DB.PAS)
制作/著作 (C) 1998 好本宜充