Question

Je suis très nouveau à Delphi et j'ai reçu le morceau de code suivant (laissé de côté certaines parties non pertinentes) pour lesquelles j'essaie de comprendre ce qu'elle fait:

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

Dans un autre fichier, cette requête est utilisée, mais un paramètre qui n'est pas défini dans la requête est ajouté.

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

Fait ce paramètre 'part' changer quelque chose sur la sélection faite? En d'autres termes: la requête SQL est-elle automatiquement changée en ce qui suit?

'SELECT * FROM costs '
  'WHERE code = :code'
  'AND part = :part'
Était-ce utile?

La solution

Cela signifie que l'instruction SQL pourrait être modifiée au moment de l'exécution. Ainsi, lorsque cette requête est utilisée, le SQL contient déjà AND part = :part.

Si l'instruction SQL ne contient pas ce paramètre supplémentaire part, une exception sera soulevée lors de l'attribution ParamByName('part').Value := 1.

Je suppose que tu n'as pas confondu SelectCosts référence (qui est dans DM_HRV et pas d'autres DM).

Autres conseils

L'instruction suivante dans votre message n'ajoute pas de paramètre, il définit sa valeur:

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

Pour ajouter un paramètre lors de l'exécution, utilisez CreateParam comme suit:

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

La requête n'est pas modifiée automatiquement, vous devez le faire vous-même.

Dans votre premier snip, les paramype et l'entrée ne sont pas définis, vous pouvez modifier cela dans l'IDE en accédant à l'éditeur de propriétés de la liste des paramètres (params) et à la mise à jour de ces valeurs.

L'ajout d'un nouveau paramètre ne modifie pas la requête. Vous devez le faire vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top