数据库端SQL2000中建有一数据库:人事管理系统库,含员工表(工号,姓名,部门...)和工资表(工号,年份,月份,基本工资...),现在想在客户端查询某年某月某部门某人的工资数据.数据库端的存储过程怎么写,还有客户端是不是用DbGrid1   DataSource1   AdoStoredProc1. 把查询结果显示到DbGrid1上.要不要用Query1呢?搞不懂了我好闷愈!

解决方案 »

  1.   

    还有客户端是不是用DbGrid1   DataSource1   AdoStoredProc1. 把查询结果显示到DbGrid1上.要不要用Query1呢?搞不懂了我好闷愈!
    要不要用Query1呢?
    ----》》
    不必!
    设置参数就可一了
    create procedure GetHRInfo
    @Salary varchar(20)
    as
    begin
     select a.salary from HR b,GZ a where b.id=a.id and a.salary=@Salary
    end
    Go
      

  2.   

    create procedure GetHRInfo @Lyear varchar(20),@lmonth varchar(20),@bm varchar(20),
     @xm varchar(20) as
    begin
     select a.salary from 工资表 a,员工表 b where b.工号=a.工号 and a.姓名=@xm 
    and b.年份=@Lyear and b.月份= @Lmonth and a.部门=@bm
    end
      

  3.   

    用存储过程就用AdoStoredProc1,不用存储过程就用 ADOQuery1DbGrid1.DataSource := DataSource1;
    DataSource1.dataset := ADOQuery1
    with ADOQuery1 do
    begin
    close;
    sql.clear;
    sql.text := 'select * from 表';
    open;
    end;
      

  4.   

    AdoStoredProc1与TQuery,TTable都是数据集组件.AdoStoredProc1与TQuery都可以去调用存储过程,
    唯一的区别就是AdoStoredProc1调用的一定是已经存在的,而TQuery可以调用动态的(也就是说可以在Sql.text:='写你需要的过程').