超市盘点和图表分析

fang_fly 2006-05-09 02:03:58
本人做毕业设计,但是现在有两个地方出现错误,改了,好久了,一直没法弄正确,郁闷死了,希望大家帮忙解决下啊,出错的具体代码如下:
盘点的代码,错误提示为:project supermarket.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 supermarket.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;
我想这两个错误应该属于同一类型的,都是一样的报错,希望大家帮帮忙啊,万分感谢
...全文
1596 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rubi 2006-05-10
  • 打赏
  • 举报
回复
lz何处去了
Rubi 2006-05-09
  • 打赏
  • 举报
回复
'select sum(sell_number) as number
from sells
where product_name='+unitdata.products.FieldByName('pro_name').AsString这句好像有问题,你看看sql语句有没有问题,郁闷阿
fire_xp 2006-05-09
  • 打赏
  • 举报
回复
Anylib推出新版本,自由界面和报表的完美组合!
http://www.anylib.com
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
大家帮帮忙啊
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
盘点的程序就是这样的啊
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;
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
我用了断点啊,可是就是错那,我怎么该都不行。开始时我注释了,就在执行完
unitdata.products.Close;
unitdata.products.SQL.Clear;
unitdata.products.SQL.Add('select distinct pro_name from products');
unitdata.products.Open;
在这语句都没错,接下来就错了
Rubi 2006-05-09
  • 打赏
  • 举报
回复
你用断点调试看看,看程序还看不出什么问题列,你哪里只是写了sql语句,

CSDN论坛浏览器:http://CoolSlob.ys168.com/
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
销售分析窗体代码:
unit sellanalyze;

interface

uses
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;

implementation

uses 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.
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
unitdata是DataModule窗体,我把所有和数据库连接的东西都放在该窗体中了
Rubi 2006-05-09
  • 打赏
  • 举报
回复
最好能把代码贴完整点,你这看得太片面了

CSDN论坛浏览器:http://CoolSlob.ys168.com/
Rubi 2006-05-09
  • 打赏
  • 举报
回复
unitdata是什么意思?

fang_fly 2006-05-09
  • 打赏
  • 举报
回复
请大家帮帮忙啊,急啊,55555555555555
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
可是dbedit2,dbedit5不在这个窗体的啊,在另外的窗体,和这个窗体也没什么联系,调用的话,在dbedit2,dbedit5它们各自的窗体当然有用啊,但是现在的窗体没用的,就用了数据库里的表
imho888 2006-05-09
  • 打赏
  • 举报
回复
是字段没找到,是不是你在别的地方调用了dbedit2,dbedit5,或者是引用方式有问题。
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
就是没看到好的别人的例子啊,至少也和我的很不一样啊,高手帮忙啊
lxj2006 2006-05-09
  • 打赏
  • 举报
回复
先参见一下别人的例子
fang_fly 2006-05-09
  • 打赏
  • 举报
回复
希望有高手尽快帮我解决啊,谢谢拉

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧