テーブルコントロール(コンポーネント)とDelphiのクエリコントロールの両方には、DataBaseNameプロパティが必要です。 DataBaseNameプロパティを使用して、コントロールによって参照されるデータテーブルパスを指定できます。 Property DatabaseNameのパスを設定するには2つの方法があります。最初の方法は、データテーブルの配置場所に直接入ることであり、もう1つの方法はデータベースエイリアス(エイリアス)を使用することです。 Delphiでは、データベースエイリアスがデータベースエンジン(BDE)に設定されており、エイリアスはファイルパスに対応しています。エイリアスを次のように定義できます。エイリアスはファイルパスのマッピングであり、ファイルパスの略語です。したがって、Property DatabaseNameでデータベースエイリアスを使用し、ファイルパスを使用することは基本的に同じであり、どちらもデータテーブルを見つけるためのルートパスとして機能します。ただし、データベースアプリケーションの設計では、多くのテーブルコントロールとクエリコントロールが関与している場合、エイリアスを使用してファイルパスを参照することは非常に効率的で便利で、エラーが発生しやすくありません。理由は明らかです。一方では、ファイルパスのようにキーボードから入力を必要とせずにエイリアスに直接アクセスできます。 。
さらに、テーブルコントロールとクエリコントロールのTableNameプロパティのSQLステートメントには、データテーブルのパス情報を含めることができます。クエリコントロールとテーブルコントロールの状況は非常に似ているため、以下はテーブルコントロールの説明にすぎません。このパス情報は、完全なパスまたは完全なパスのその後の部分のいずれかです。たとえば、テーブルコントロールのTableNameプロパティを割り当てる場合、C:/Delphi/demo1/data/subscriberを割り当てることができます。または、データ/サブスクライバーを割り当てることができます。つまり、絶対パスを使用するか、相対パスを使用することもできます。
プログラムポーティングを容易にするには、通常、プロパティデータベセネームのデータテーブルのパスを指定するだけで、TableNameにパス情報を含める必要はありません。一般に、プロパティタブネームのフルパスを指定しないでください。
データベースアプリケーションの移行は重要な問題です。データベースまたはデータテーブルにアクセスするためのデータベースアプリケーションでは、データファイルへのパスが関与する必要があるためです。一般的に言えば、開発後に使用するためにデータベースアプリケーションを他のマシンに移植する必要があるため、データベースアプリケーションが実行されているときのデータファイルパスは、開発時間とは異なる可能性があります。したがって、データファイルのパスは、システム移行のために効果的に管理する必要があります。以下は、データファイルパスを管理する3つの方法です。 1。アプリケーションが配置されているディレクトリのサブディレクトリにデータファイルを作成します。特定のプロセスは(1)設計の利便性のために、データベースエイリアスを設計中に使用でき、データベースエイリアスはアプリケーションの位置にあるパスを指します。サブパス名をテーブルコントロールのTableNameプロパティに追加します。 (2)アプリケーションを発行する前に、すべてのテーブルコントロールとクエリスペース属性をfalseにアクティブに設定し、属性データベース内のすべての文字を削除します(つまり、空)。デフォルトでは、アプリケーションが実行されている現在のディレクトリは、アプリケーションが配置されているディレクトリです。 CHDIRなどのプロセスがアプリケーションで呼び出されて現在のディレクトリを変更しない場合、3番目のステップを実行する必要はありません。そうでなければ、3番目のステップ処理を実行します。
(3)テーブルコントロールとクエリコントロールを使用するフォームのCREATEイベントでは、アプリケーションが各テーブルコントロールに配置されているパスを、フォームのクエリコントロールを割り当てます。 Table1.Databasename:= extractfilepath(application.exename);構成ファイルを使用して、データパスを保存します。将来、パス情報は構成ファイルから読み取りされます。構成ファイルの読み取りと執筆は、クラスのTinifile、クラスのTreginifile、およびクラスのTregistryが提供する方法を使用して実装されます。この方法の基本的なアイデアは次のとおりです。(1)設計の利便性については、設計中にデータベースエイリアスを使用してください。 (2)アプリケーションを発行する前に、すべてのテーブルコントロールとクエリスペース属性をfalseにアクティブに設定し、属性データベース内のすべての文字を削除します(つまり、空)。
(3)テーブルコントロールとクエリコントロールを使用するフォームのCREATEイベントでは、アプリケーションが各テーブルコントロールに配置されている場所とフォームのクエリコントロールを割り当てます。
Table1.Databasename:= extractfilepath(application.exename);
3。データベースエイリアスを使用して、データベースパスを保存します
セッションを使用してデータベースエイリアスを動的に作成するには、FormにFormにセッション1コンポーネントを追加する必要があります。データベースエイリアスを動的に作成および削除するときに使用するものは、フォームに追加されたセッション1コンポーネントではなく、ユニットによって定義されるセッショングローバル変数です。テストバンクシステムの作成中、混乱を防ぐために、フォーム上のsession1コンポーネントを削除しましたが、これは関数の実装に影響しません。
次のコードは、「サブスクライバー」という名前のエイリアスを作成する方法を示しています。そのデータベースパスは「e:/subscriber」であり、データベースタイプはパラドックスです。
session.configmode:= cmall; //セッションの構成モードを指定します
session.addstandarias( 'net'、 'e:/subscriber'、 'paradox');
エイリアスを削除する必要がある場合は、まずエイリアスが存在しないエイリアスを削除するかどうかを確認する必要があります。次のコードは、データベースエイリアス「サブスクライバー」が存在するかどうかを確認する方法を示しています。
VAR STRALIAS:TSTRINGLISTを定義します
コード:stralias:= tstringlist.create; // tstringlistクラスのインスタンスを生成します
session.getaliasNames(stralias); //現在、すべてのデータベースエイリアスを取得します
//サブスクライバーが存在するかどうかを見つけます。
if(stralias.indexof( 'subscriber')<> -1)then
始める
session.deletealias( 'subscriber'); //データベースエイリアスサブスクライバーを削除します
session.saveconfigfile;
終わり;