#1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2012
    Location
    São Paulo - Brazil
    Posts
    35
    Rep Power
    3

    Erro with parameters opening ADOQuery


    I'm acessing a SQL table(MS SQL Server) via the following sql statement:

    SELECT * FROM LAUDOS
    WHERE CDEMPGRP = @pCDEMPGRP
    AND CDLAUDO = @pCDLAUDO
    ORDER BY CDLAUDO

    In the parameters clause of the ADOQuery the parameters are defined:

    @pCDEMPGRP
    Attributes - []
    DataType - ftInteger
    Direction - pdInput
    Name - @pCDEMPGRP
    NumericScale - 0
    Precision - 5 (the column of the table is numeric(5) )
    Size - 0
    Value - (null)

    @pCDLAUDO
    Attributes - []
    DataType - ftInteger
    Direction - pdInput
    Name - @pCDLAUDO
    NumericScale - 0
    Precision - 12 (the column of the table is numeric(12) )
    Size - 0
    Value - (null)

    The BeforeOpen method for the ADOQuery is:

    procedure TfrmConstrucaoDET.qryLaudosBeforeOpen(DataSet: TDataSet);
    begin
    if Empresa <> 0 then
    try
    qryLaudos.Parameters.ParamByName('@pCDEMPGRP').Value := Empresa;
    qrylaudos.Parameters.ParamByName('@pCDLAUDO').Value := 100000;
    except
    On e:Exception do
    begin
    Dialogs.ShowMessage('Erro atribuindo parametros = ' + e.Message);
    Exit;
    end;
    end;
    end;

    And it doesn't report exceptions


    In the FormCreate method, the first lines of the code are:

    if Empresa <> 0 then
    try
    qryLaudos.Open;
    except
    On e:Exception do
    begin;
    MessageDlg('Erro OPEN qryLaudos = ' + e.Message,mtError,[mbOK],0);
    Abort;
    end;
    end;

    When I execute the program i receive the message:

    Erro OPEN qryLaudos = Must declare the scalar variable "@pCDEMPGRP"

    Should someone of you tell me what's happen here? Where am I making a mistake, please?

    Greetings from São Paulo - Brazil

    Ricardo

    Delphi XE 15.0.3890.34076
    Last edited by nightrider43; March 1st, 2013 at 01:20 PM.
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jun 2008
    Posts
    356
    Rep Power
    7
    Query parameters in Delphi are preceded with a : not @
    Code:
    SELECT * FROM LAUDOS
    WHERE CDEMPGRP = :pCDEMPGRP
    AND CDLAUDO = :pCDLAUDO
    ORDER BY CDLAUDO
    and no need to include the : in setting the parameters.

    qryLaudos.Parameters.ParamByName('pCDEMPGRP').Value := Empresa;
    qrylaudos.Parameters.ParamByName('pCDLAUDO').Value := 100000;

    Should work

IMN logo majestic logo threadwatch logo seochat tools logo