1

私はデルファイでのプログラミングが初めてです。現在、簡単なノートブック プログラムを作成していますが、助けが必要です。5 つの tEdit フィールドを持つ連絡先というフォームがあります。私はSybaseデータベースにストアドプロシージャを作成して連絡先テーブルにレコードを挿入できると考えているので、デルファイプログラムで呼び出すことができます。Delphiでこのプロシージャを呼び出すにはどうすればよいですか? 挿入される値は、これらの tEdit フィールドへのユーザー入力から取得する必要があります。誰にも提案はありますか?それとも私の考え方が間違っていますか?前もって感謝します

4

1 に答える 1

0

ここにはいくつかのオプションがあり、使用している VCL コントロールによって異なります。(1)。tTable コンポーネントを介して挿入できます。これにより、素早く簡単に低レベルのコントロールが可能になります。コンポーネントをフォームにドロップし、コンポーネントのプロパティ(テーブル名など)を設定してから、

MyTable.Open;
MyTable.Insert; (or maybe append)
MyTable.FieldByName('MY_FIELD').AsString := 'Bob'; // set the field values
MyTable.post;

(2)。SQL を使用します。フォームに SQL コンポーネントをドロップします。パラメータを使用して SQLText プロパティを設定します。例: 「テーブル (MyField) 値に挿入:X」。私の意見では、これは複雑な状況、相関サブセレクトなどで行う方が簡単です.

MySQL.Close;
MySQL.ParamByName('X').AsString := 'BOB';
ExecSQL;

(3)。ストアド プロシージャを使用します。- これの利点は、複数のアプリケーションで使用でき、簡単に変更できることです。SQL コードを更新する場合は、(データベースで) 1 回更新しますが、アプリで変更してからアプリを複数のユーザーに配布する必要があります。

このコードは (2) とほぼ同じですが、VCL ライブラリの詳細はわかりません。ただし、実際には、実行するルーチンを指定し、パラメーター値を指定してから、ストアド プロシージャを実行します。

これらのルーチンはすべて、エラー コードまたは例外コードを返すことに注意してください。常にそれを確認することをお勧めします...

これは、qLoader という SQL ステートメントを使用したもう少し複雑な例です。qLoader はデータモジュールに存在します。パラメータを渡し、SQL ステートメントを実行してから、すべての結果を繰り返します。

  try
  with dmXLate.qLoader do
     begin

     Close;
     ParamByName('DBTYPE').AsString := DBType;
     Open;

     while not dmXLate.qLoader.Eof do
         begin
         // Here is where we process each result
         UserName:= dmXLate.qLoader.FieldByName('USERNAME').AsString;    

         dmXLate.qLoader.Next;
         end;


      end;

except
      on E: Exception do
      begin
        ShowMEssage(E.Message);
        exit;
      end;
    end;
于 2014-11-10T02:29:22.253 に答える