9

私はDelphiを初めて使用し、次のコードを受け取りました(いくつかの無関係な部分を省略しました)。これについて、Delphiの機能を理解しようとしています。

object SelectCosts: TIBQuery
    SQL.Strings = (
      'SELECT * FROM costs '
      'WHERE code = :code')
    ParamData = <
      item
        DataType = ftUnknown
        Name = 'code'
        ParamType = ptUnknown
      end>
  end

別のファイルでは、そのクエリが使用されますが、クエリで定義されていないパラメータが追加されます。

DM_HRV.SelectCosts.ParamByName('part').Value := 1;

このパラメーター'part'は、行われた選択について何か変更しますか?言い換えれば、SQLクエリは自動的に次のように変更されますか?

'SELECT * FROM costs '
  'WHERE code = :code'
  'AND part = :part'
4

3 に答える 3

8

これは、SQLステートメントが実行時に変更される可能性があることを意味します。したがって、そのクエリが使用される場合、SQLにはすでにが含まれていますAND part = :part

SQLステートメントにこの追加パラメーターが含まれていない場合、partを割り当てるときに例外が発生しParamByName('part').Value := 1ます。

私はあなたがSelectCosts参照を混同しなかったと仮定しています(これはDM_HRV他のDMではなくにあります)。

于 2012-01-16T12:50:06.403 に答える
5

投稿の次のステートメントはパラメーターを追加せず、その値を設定します。

DM_HRV.SelectCosts.ParamByName('part').Value := 1;

実行時にパラメーターを追加するには、次のようにCreateParamを使用します。

if DM_HRV.SelectCosts.Params.FindParam('Part') = nil then
   DM_HRV.SelectCosts.Params.createParam(ftString, 'Part', ptInput);

クエリは自動的に変更されません。自分で変更する必要があります。

最初のスニップでは、ParamTypeとInputTypeが定義されていません。パラメータリスト(Params)プロパティエディタにアクセスし、これらの値を更新することで、IDEで変更できます。

于 2012-01-16T13:26:21.363 に答える
0

新しいパラメータを追加しても、クエリは変更されません。あなたはそれを自分でしなければなりません。

于 2012-01-16T12:34:30.530 に答える