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