zoukankan      html  css  js  c++  java
  • ASP.NET实际项目演练(2)

    上篇文章中大概的实现了第一个需求,虽然没有正式的效果出来,但总归思路是这样的,具体实现代码后面会提供。

    今天我们主要实现需求分析的第二点和第三点:导入数据模块及修改数据

     

    在网上我们可以找到ASP.NET 导入Excel表现在代码,只要拿过来用就可以了,在做导入功能之前,我们有必要了解导入的数据的结果是什么样的,因为我们导入的数据最后是存入数据库的,所以我们需要构建表的结果以对应导入的数据。

    下面是数据的截图

     

     

    下面就表中的一些字段进行说明:

    Boltid是设备的标识

    Boltname:是设备的类型

    Asmid:也是一个标示

    Boltnum:设备数量

    A_stand:角度标准值

    A_max:角度最大值

    A_min:角度最小值

    T_stand扭矩标准值

    T_max扭矩最大值

    T_min扭矩最小值

    Qrkstatic:某个静态数据

    Techpara:设备参数

     

    VIN:设备号

    Dataid:设备标识

    Torque:扭矩

    Angle:角度

    Ok:是否可用

    Gettingtime:生产时间

    Logintime:登录时间

    Workerid:员工号

     

    于是我们就可以设计表的结构了,

    对应的表结构如下:

    CREATE TABLE [dbo].[BoltData](

        [id] [int] IDENTITY(1,1) NOT NULL,

        [vin] [varchar](100) NULL,

        [dataid] [float] NULL,

        [torque] [float] NULL,

        [angle] [float] NULL,

        [ok] [float] NULL,

        [gettingtime] [datetime] NULL,

        [logintime] [datetime] NULL,

        [workerid] [varchar](16) NULL,

     CONSTRAINT [PK_BoltData] PRIMARY KEY CLUSTERED

    (

        [id] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

     

     

    CREATE TABLE [dbo].[BoltInfo](

        [id] [int] IDENTITY(1,1) NOT NULL,

        [boltid] [varchar](50) NULL,

        [boltname] [varchar](50) NULL,

        [asmid] [float] NULL,

        [boltnum] [int] NULL,

        [a_stand] [int] NULL,

        [a_max] [int] NULL,

        [a_min] [int] NULL,

        [t_stand] [int] NULL,

        [t_max] [int] NULL,

        [t_min] [int] NULL,

        [qrkstation] [varchar](50) NULL,

        [techpara] [varchar](50) NULL,

     CONSTRAINT [PK_BoltInfo] PRIMARY KEY CLUSTERED

    (

        [id] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

    下面来看一下具体的导入程序及实现方法,详细的就不说了,就看主要的代码了。

    代码
    if (File_Name.Length != 0 && File_Size > 0)
            {
                
    string File_ExName = File_Name.Substring(File_Name.LastIndexOf("."+ 1);//扩展名
                if (File_ExName != "xls")
                {
                    
    return;
                }
                
    else
                {
                    
    //上传EXCEL文件到ExcelFile目录
                    DateTime now = DateTime.Now;
                    
    string NewName = now.ToShortDateString() + now.Hour.ToString() + now.Minute.ToString() + now.Second.ToString() + "." + File_ExName;
                    
    string filePath = "ExcelFile/" + NewName;
                    
    this.flpImportPath.PostedFile.SaveAs(Server.MapPath(@filePath));
                    
    //获取EXCEL文件,执行导入
                    string excelConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(filePath) + ";Extended Properties=Excel 8.0";
                    
    string excelCmdstr = string.Format("select * from [BoltData$]");

                    
    string Error = "";

                    
    try
                    {
                        OleDbConnection oleDbConnection 
    = new OleDbConnection(excelConnect);
                        oleDbConnection.Open();

                        OleDbCommand excelCmd 
    = new OleDbCommand(excelCmdstr, oleDbConnection);
                        OleDbDataAdapter excelDa 
    = new OleDbDataAdapter(excelCmd);

                        DataTable edt 
    = new DataTable();
                        excelDa.Fill(edt);
                        
    int i = 0;
                        
    //追加导入
                        BLL.BoltData b = new BLL.BoltData();
                        
    foreach (DataRow dr in edt.Rows)
                        {
                            Model.BoltData model 
    = new Model.BoltData();
                            
    try
                            {
                                model.vin 
    = dr[0].ToString();
                                model.dataid 
    = Convert.ToInt32(dr[1]);
                                model.torque 
    = dr[2].ToString();
                                model.angle 
    = dr[3].ToString();
                                model.ok 
    = Convert.ToInt16(dr[4]);
                                model.gettingtime 
    = Convert.ToDateTime(dr[5]);
                                model.logintie 
    = Convert.ToDateTime(dr[6]);
                                model.workerid 
    = dr[7].ToString();

                                b.Add(model);
                            }
                            
    catch (Exception e1)
                            {
                                Response.Write(
    "失败:" + model.vin + "_" + model.dataid + "");
                            }
                        }
                        
    this.labIsUpload.Text = "操作完成!";
                        
    //删除临时的EXCEL文件
                        oleDbConnection.Close();
                    }
                    
    catch (Exception ex)
                    {
                        Response.Write(
    "<BR>");
                        Response.Write(ex.Message);
                    }
                    
    //导入结束
                }
            }
            
    else
            {
                
    return;
            }

     在看具体的需求之前,我们先来看看MSChart的一些知识准备。

    一、 MSChart

    1.什么是MSChart:MSChart控件与一个数据网格(DataGrid对象)关联。该数据网格存放了要显示的数据。数据网格也可以包含用于图表中标识系列或类别的标签。图表应用程序设

    计者在数据网格中插入数据或从报表或矩阵中输入数据。

    2.安装MSChart:须装了Microsoft .NET Framework 3.5 SP1以后才能装MSChart

    装好后,会发现一个目录,打开vs2008或vs2010,打开某个web页面的设计页面,在工具栏中添加选项卡命名为图标工作,或者在现有的选项卡中右击选择“添加项”,导航到C:\Program Files\Microsoft Chart Controls\Assemblies,选择System.Web.DataVisualization.dll,将图标工具添加到选项卡中,方便以后拖拽使用。

    1. MSChart 图表类型

    4.一些属性

    ChartAreas:增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,用于多个图表类型在一个绘图区不兼容时。

    AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。

    AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。

    AlignWithChartArea:参照对齐的绘图区名称。

    InnerPlotPosition:图表在绘图区内的位置属性。

    Auto:是否自动对齐。

    Height:图表在绘图区内的高度(百分比,取值在0-100)

    Width:图表在绘图区内的宽度(百分比,取值在0-100)

    X,Y:图表在绘图区内左上角坐标

    Position:绘图区位置属性,同InnerPlotPosition。

    Name:绘图区名称。

    Axis:坐标轴集合

    Title:坐标轴标题

    TitleAlignment:坐标轴标题对齐方式

    Interval:轴刻度间隔大小

    IntervalOffset:轴刻度偏移量大小

    MinorGrid:次要辅助线

    MinorTickMark:次要刻度线

    MajorGrid:主要辅助线

    MajorTickMark:主要刻度线

    DataSourceID:MSChart的数据源。

    Legends:图例说明。

    Palette:图表外观定义。

    Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。

    IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值

    Label:数据点标签文本

    LabelFormat:数据点标签文本格式

    LabelAngle:标签字体角度

    Name:图表名称

    Points:数据点集合

    XValueType:横坐标轴类型

    YValueType:纵坐标轴类型

    XValueMember:横坐标绑定的数据源(如果数据源为Table,则填写横坐标要显示的字段名称)

    YValueMembers:纵坐标绑定的数据源(如果数据源为Table,则填写纵坐标要显示的字段名称,纵坐标可以有两个)

    ChartArea:图表所属的绘图区域名称

    ChartType:图表类型(柱形、饼形、线形、点形等)

    Legend:图表使用的图例名称

    Titles:标题集合。

    width:MSChart的宽度。

    height:MSChart的高度。

    二、 MSChart实际演练

    具体的实例可以参考附件的具体Demo,这个Demo还是比较完整的。

    好了,现在来看具体的需求。如下图是具体的算法,

     

     这个是关键的sql语句,如有不明白的地方可以留言或者发邮件给我

    string cmdText = "select CONVERT(varchar(12), a.gettingtime, 111) as 'myTime'," +

                    "a.dataid,(4*(b.t_max-b.t_min)-ABS(2*AVG(a.torque)-(b.t_max+b.t_min)))/(24*STDEV(a.torque)) as 'cpk' " +

                    "from boltdata a,BoltInfo b where a.dataid = b.boltid and a.dataid='" + dataid + "' and a.ok='1' and a.gettingtime BETWEEN '" + time1.Text + "' AND '" + time2.Text + "' " +

                    "group by CONVERT(varchar(12), a.gettingtime, 111), a.dataid,b.t_max,b.t_min,b.t_stand"; 

    PS:由于时间原因,文章写的比较匆忙,望见谅。

     附件:

    MsChart官方Demo、 MsChartBolt数据程序下载(DB文件在db文件下)

     

  • 相关阅读:
    9.3 寻找magic index
    编写一个函数,确定需要改变几个位,才能将整数A转成整数B。
    打印0-1之间double数字的二进制表示
    打印二叉树节点数值总和等于某个给定节点的所有路径
    判断T2是否是T1的子树
    二棵树某两个节点的公共祖先。
    4.6 找出二叉树中指定节点的下一个节点(中序后继),假定每个节点有父指针。
    队列实现max操作,要求尽量提高效率。
    用两个stack设计一个队列
    转分享一个MAC下绕开百度网盘限速下载的方法,三步操作永久生效
  • 原文地址:https://www.cnblogs.com/alexis/p/1829656.html
Copyright © 2011-2022 走看看