本人做毕业设计,但是现在有两个地方出现错误,改了,好久了,一直没法弄正确,郁闷死了,希望大家帮忙解决下啊,出错的具体代码如下:
盘点的代码,错误提示为:project superet.exe raised exception class edatabaseerror with message 'dbedit2:field'sell_number'not found'.
但是dbedit2是再另一个窗体中用于连接sells表的sell_number列的,和当前窗体没联系的
if (usertype<>'系统管理员') then
  begin
    messagebox(handle,'没有足够的权限!','权限不足',MB_ICONWARNING+mb_ok);
    exit;
  end;
  unitdata.sells.Close;//与数据库中的销售记录表相连接,sells是ADOQuery的名称,也是销售记录表
  unitdata.sells.SQL.Clear;
  unitdata.sells.SQL.Add('select sum(product_price*sell_number) as total from sells where year(sell_time)=year(getdate())');//出错的地方
  unitdata.sells.Open;
  messagebox(handle,PChar('本年度销售额为 '+unitdata.sells.FieldByName('total').AsString+' 元。'),'年度盘点',MB_ICONinformation+mb_ok);
销售分析的代码,错误提示为:project superet.exe raised exception class edatabaseerror with message 'dbedit5:field'pro_stock'not found'.
但是dbedit5是再另一个窗体中用于连接products表的pro_stock列的,和当前窗体没联系的
var
  i: integer;
begin
  With Series1 do
  Begin
    unitdata.products.Close;
    unitdata.products.SQL.Clear;
    unitdata.products.SQL.Add('select distinct pro_name from products');
    unitdata.products.Open;    for i:=1 to unitdata.products.RecordCount do//出错的地方
    begin
      unitdata.sells.Close;
      unitdata.sells.SQL.Clear;
      unitdata.sells.SQL.Add('select sum(sell_number) as number from sells where product_name='+unitdata.products.FieldByName('pro_name').AsString);
      unitdata.sells.Open;
      Add(unitdata.sells.FieldByName('number').AsInteger,unitdata.products.FieldByName('pro_name').AsString,random(100000));
    end;
  end;
end;
我想这两个错误应该属于同一类型的,都是一样的报错,希望大家帮帮忙啊,万分感谢

解决方案 »

  1.   

    是字段没找到,是不是你在别的地方调用了dbedit2,dbedit5,或者是引用方式有问题。
      

  2.   

    可是dbedit2,dbedit5不在这个窗体的啊,在另外的窗体,和这个窗体也没什么联系,调用的话,在dbedit2,dbedit5它们各自的窗体当然有用啊,但是现在的窗体没用的,就用了数据库里的表
      

  3.   

    最好能把代码贴完整点,你这看得太片面了CSDN论坛浏览器:http://CoolSlob.ys168.com/
      

  4.   

    unitdata是DataModule窗体,我把所有和数据库连接的东西都放在该窗体中了
      

  5.   

    销售分析窗体代码:
    unit sellanalyze;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart, Buttons;type
      Tunitsellanalyze = class(TForm)
        Chart1: TChart;
        Series1: TPieSeries;
        SpeedButton1: TSpeedButton;
        procedure FormShow(Sender: TObject);
        procedure SpeedButton1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      unitsellanalyze: Tunitsellanalyze;implementationuses data;{$R *.dfm}procedure Tunitsellanalyze.FormShow(Sender: TObject);
    var
      i: integer;
    begin
      With Series1 do
      Begin
        unitdata.products.Close;
        unitdata.products.SQL.Clear;
        unitdata.products.SQL.Add('select distinct pro_name from products');
        unitdata.products.Open;    for i:=1 to unitdata.products.RecordCount do
        begin
          unitdata.sells.Close;
          unitdata.sells.SQL.Clear;
          unitdata.sells.SQL.Add('select sum(sell_number) as number from sells where product_name='+unitdata.products.FieldByName('pro_name').AsString);
          unitdata.sells.Open;
          Add(unitdata.sells.FieldByName('number').AsInteger,unitdata.products.FieldByName('pro_name').AsString,random(100000));
        end;
      end;
    end;procedure Tunitsellanalyze.SpeedButton1Click(Sender: TObject);
    begin
      close;
    end;end.
      

  6.   

    你用断点调试看看,看程序还看不出什么问题列,你哪里只是写了sql语句,CSDN论坛浏览器:http://CoolSlob.ys168.com/
      

  7.   

    我用了断点啊,可是就是错那,我怎么该都不行。开始时我注释了,就在执行完
        unitdata.products.Close;
        unitdata.products.SQL.Clear;
        unitdata.products.SQL.Add('select distinct pro_name from products');
        unitdata.products.Open;
    在这语句都没错,接下来就错了
      

  8.   

    盘点的程序就是这样的啊
    procedure Tunitmain.N27Click(Sender: TObject);
    begin
      if (usertype<>'系统管理员') then
      begin
        messagebox(handle,'没有足够的权限!','权限不足',MB_ICONWARNING+mb_ok);
        exit;
      end;
      unitdata.sells.Close;
      unitdata.sells.SQL.Clear;
      unitdata.sells.SQL.Add('select sum(product_price*sell_number) as total from sells where year(sell_time)=year(getdate()) and month(sell_time)=month(getdate()) and day(sell_time)=day(getdate())');//出错的地方,用断点查到的
      unitdata.sells.Open;
      messagebox(handle,PChar('今日销售额为 '+unitdata.sells.FieldByName('total').AsString+' 元。'),'今日盘点',MB_ICONinformation+mb_ok);
    end;
      

  9.   

    Anylib推出新版本,自由界面和报表的完美组合!
    http://www.anylib.com
      

  10.   

    'select sum(sell_number) as number 
    from sells 
    where product_name='+unitdata.products.FieldByName('pro_name').AsString这句好像有问题,你看看sql语句有没有问题,郁闷阿