delphi高手请进!!求个delphi记录程序代码!!!

图1图2记录7个组的每天的业绩,确定后可以记录当天的业绩和备注。本月业绩为本月1号到当天的业绩总和;选择不同的时期可以看到日期当天的业绩情况和备注(比如我要看2012/1... 图1

图2

记录7个组的每天的业绩,确定后可以记录当天的业绩和备注。
本月业绩为本月1号到当天的业绩总和;
选择不同的时期可以看到日期当天的业绩情况和备注(比如我要看2012/12/5那天的业绩,只要在日期选项框中选好当天的日期就可以看到2012年12月5号那天各组的业绩和备注)图1 点击查询,可以查询日期1到日期2之间的业务和(图2)不知道如何实现每天保存记录和查询记录。

要做到记录和查询要怎么实现呢?是连接一个数据库实现?还是读取或写入某个EXCEL文件?
高手们能否给个详细的代码?
展开
 我来答
taishanpcb
2013-07-09
知道答主
回答量:3
采纳率:0%
帮助的人:4.5万
展开全部

首先我也是菜鸟,我是利用暑假时间才开始关注Delphi的,按照你的界面设计,以下代码供参考,还需进一步完善,如数据合法性验证等功能。 上图是我编译后的结果。不过本月总业绩这个位置遗漏了。可参考查询窗体中的部分代码。 SQL查询条件改成取本月的时间范围。

 

unit Unit1;   //主窗体

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls,unit2, DB, ADODB, Mask, DBCtrls;

type

  TForm1 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Label8: TLabel;

    Edit8: TEdit;

    Label9: TLabel;

    Label10: TLabel;

    Label11: TLabel;

    Label12: TLabel;

    Label13: TLabel;

    Label14: TLabel;

    Label15: TLabel;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    ADOConnection1: TADOConnection;

    ADOQuery1: TADOQuery;

    DataSource1: TDataSource;

    DBEdit1: TDBEdit;

    DBEdit2: TDBEdit;

    DBEdit3: TDBEdit;

    DBEdit4: TDBEdit;

    DBEdit5: TDBEdit;

    DBEdit6: TDBEdit;

    Edit1: TEdit;

    DBEdit7: TDBEdit;

    DBEdit8: TDBEdit;

    DBEdit9: TDBEdit;

    DBEdit10: TDBEdit;

    DBEdit11: TDBEdit;

    DBEdit12: TDBEdit;

    DateTimePicker1: TDateTimePicker;

    DBEdit13: TDBEdit;

    Button5: TButton;

    procedure Button4Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure FormShow(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure DBEdit13Click(Sender: TObject);

    procedure DateTimePicker1Change(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);//关闭

begin

 Close;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

  Application.CreateForm(TForm2,Form2);

  Form2.ShowModal;

  Form2.Free;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

  Button2.Enabled:=false;

  Button3.Enabled:=true;

  datasource1.dataset.Append;

end;

procedure TForm1.Button3Click(Sender: TObject);     //保存

Var sqlstr:string;

begin

  Button3.Enabled:=false;

  Button2.Enabled:=true;

  sqlstr:='insert so_det (so_date,achive1,memo1,achive2,memo2,achive3,memo3,achive4,memo4,achive5,memo5,achive6,memo6,achiveTotal)';

  sqlstr:=sqlstr+'values('''+datetostr(DateTimePicker1.time)+''','''+dbedit1.text+''','''+dbedit7.text+''','''+dbedit2.text+''','''+dbedit8.text+''','''+dbedit3.text+''','''+dbedit9.text+''','''+dbedit4.text+''','''+dbedit10.text+''','''+dbedit5.text+''','''+dbedit11.text+''','''+dbedit6.text+''','''+dbedit12.text+''','''+dbedit13.text+''')'; 

 // 在Delphi环境中,SQL语句最好不要换行,呵呵,换行还是可以的,只是有些麻烦

//so_det 是SQL数据库中的表,字段如上面的语句所示。

    if trim(dbedit1.Text)<>'' then

     begin

       try

          ADOQuery1.Close;

          ADOQuery1.SQL.Clear;

         ADOQuery1.SQL.Add(sqlstr);

          ADOQuery1.ExecSQL;

           Application.MessageBox('增加记录成功','提示',64);

          self.OnShow(Sender);

           dbedit1.SetFocus;

        except

          Application.MessageBox('增加记录失败','提示',64);

         Close;

        end;

       end;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

  ADOQuery1.Close;

  ADOQuery1.SQL.Clear;

  ADOQuery1.SQL.Add('select * from so_det order by so_date');

  ADOQuery1.Open;

end;

procedure TForm1.Button5Click(Sender: TObject);   //刷新数据

begin

 self.OnShow(Sender);

 Button2.Enabled:=true;

end;

procedure TForm1.DBEdit13Click(Sender: TObject); //数据汇总

begin

   dbedit13.Text:=inttostr(strtoint(Trim(dbedit1.Text))+  strtoint(Trim(dbedit2.Text))+ strtoint(Trim(dbedit3.Text))+ strtoint(Trim(dbedit4.Text))+ strtoint(Trim(dbedit5.Text))+ strtoint(Trim(dbedit6.Text)));

end;

procedure TForm1.DateTimePicker1Change(Sender: TObject); //根据选定的日期刷新数据

Var A:string;

begin

A:=datetostr(DateTimePicker1.Date);

Adoquery1.Close;

Adoquery1.SQL.Clear;

Adoquery1.SQL.Add('select * from so_det where so_date='''+A+'''');

Adoquery1.open;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

end;

end.

-------------------------

//unit Unit2;      查询窗体

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls, DB, ADODB;

type

  TForm2 = class(TForm)

    Label1: TLabel;

    DateTimePicker1: TDateTimePicker;

    DateTimePicker2: TDateTimePicker;

    Label2: TLabel;

    Button1: TButton;

    ADOConnection1: TADOConnection;

    ADOQuery1: TADOQuery;

    Edit2: TEdit;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

Var A,B: string;

begin

A:=datetostr(DateTimePicker1.Date);

B:=datetostr(DateTimePicker2.Date);

Adoquery1.Close;

Adoquery1.SQL.Clear;

Adoquery1.SQL.Add

('select sum(ahiveTotal) as total from so_det where so_date>='''+A+''' and so_date<='''+B+''''); //SQL语句分行的时候需留意,我一般写成一行

Adoquery1.open;

edit2.Text:=Adoquery1.fieldbyname('total').AsString; //显示查询结果在文本框中

end;

end.

追问
都要放入哪个控件呢?也是要自己建立一个ACCESS数据库文件及新建相应的字段是吗?
追答

1、先确定选哪种数据库,如SQL Server ,Oracle,ACCESS,DB2,等等,我实现的时候是用的SQL Server ;字段及数据类型如下:

2 、连接数据库的控件用到了  ADOConnection (用来链接数据库,可以在设计时候设置ConnectionString,LoginPrompt等属性),ADOQuery,DataSource ,其余的控件跟你界面差不多,可以查看代码中TYPE下面的部分。设计界面如下:

rich556677
2013-07-09 · TA获得超过2028个赞
知道小有建树答主
回答量:1365
采纳率:0%
帮助的人:903万
展开全部
这个代码还是比较多的,告诉你步骤吧
1,先设计 好数据库 需要有个业绩表,字段有编号,日期,业绩,备注,可以用ACCESS数据库
2,建立好数据库连接,用ADO控件连好数据库
3,设计界面,我看你已经有 了
4,输入数据,并合法性判断,今日,月的,在输入业绩变化后重新统计
select sum(业绩).....
5.当确定保存数据
6,在日期框变化后,查询业绩并显示,
7.点查询然后输入查询条件,查询结果/
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu284937488
2013-07-09 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:26.6万
展开全部
连接数据库实现!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钟阔OK
2013-07-09 · TA获得超过336个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:213万
展开全部
不用数据库可以用一个简单的输出输入:
assignfile('input','in.txt')'
reset(input);
//自己从in.txt读取相关信息,read(x);表示将下一个字符或者数字读到x里去,readln(x)读取一整行
//可以自己设计存储方式,比如第一行一个数n表示有多少天,接下来n*7行每7行表示一天的信息等
closefile(input);
assignfile(output,'out.txt');
rewrite(output);
//将内存中的新信息存到out.txt里去,只要数据格式相同,下次就可以从这个文件恢复信息,
//事实上in.txt和out.txt应该是一个文件
//write(x)
//writeln(x)
closefile(output);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式