一个会员订单系统,会员登陆后填写订单,订单号是这样的结构:会员号+日期号+流水号!,流水号为此会员如果第一次填写订单,那么他的订单号就是001+050824+01,如果他不是第一次填写订单那么他的订单号就是在原来的基础上比方说001+050824+01上加1变成00105082402,请问这里怎么判断他不是第一次填写订单了,我的想法是判断订单号这个字段是否为空,如果为空在默认值就是001+050824+01,默认就是01,如果不为空则在此基础上加1,不过实现不知道如何实现,请帮忙!!

解决方案 »

  1.   

    简单处理
    001050824 你可以动态得到的。
    然后Select count(订单号) from tableorder where orderno like '001050824%'
    得出的结果可以作为你的流水号了不?也有人专门用Sql来生成流水号的,可能更完善。
      

  2.   

    不过目前为止,我还是以判断此订单号字段为空时流水号为01,当第二次提交时就时02.以此类推
    但不知道到底该怎么取判断和添加上1!
    string RegieID=Request.Cookies["Belong_Regie_ID"].Value;
    string MemberID=Request.Cookies["Member_ID"].Value;
    string Order_Date=DateTime.Now.ToString("yyMMdd");
    string Order_No=RegieID+MemberID+Order_Date;
    SqlConnection Conn=DB_Operate.Create_Connection();
    Conn.Open();
    SqlDataAdapter Order_Num=new SqlDataAdapter("Select * From Order_Code Where Order_Code Like '%" + RegieID+MemberID+Order_Date + "%'",Conn);
    DataSet DS=new DataSet();
    Order_Num.Fill(DS,"Order_Num");
    if(DS.Tables[0].Rows.Count==0)
    {
    Order_No=Order_No+"01";
    }
    else
    {
    Order_No=此处代码该如何写+"1";
    }
      

  3.   

    具体思路如下,需楼主用代码实现
    先取得当前最大的编号
    SELECT MAX(Num) as maxNum
    FROM 表名
    WHERE (REPLACE(CONVERT(varchar(10), GETDATE(), 120), '-', '') 
          = '20' + SUBSTRING(Num, 4, 6))
    如果编号为空,则编号为001+日期(经过处理)+01,如果不为空,则将此值转换成一个long值,然后将此long值加1,然后再转换成对应的编号格式就行了。
      

  4.   

    给你一段我的类似的代码
    long lngNumber=0;
    //证书号生成规则:(YYYY)+0001
    strSQL="select max(CertificateNumber) as CFID from CertificateInfo where year(TestDate)=year(getdate())" 
    DataTable dtTemp=ds.GetTable(strSQL,false);
    if(dtTemp !=null)
    {
      if(dtTemp.Rows[0]["CFID"] !=DBNull.Value)
      {
        lngNumber=Int64.Parse(dtTemp.Rows[0]["CFID"].ToString());
        lngNumber+=1;
      }
      else
      {
        lngNumber=Int64.Parse(DateTime.Today.Year.ToString() + "0001");
      }
    }
      

  5.   

    Order_No=此处代码该如何写+"1";
    ----------("Select count(*) From Order_Code Where Order_Code Like '%" + RegieID+MemberID+Order_Date + "%'",Conn);
    int no = Convert.Toint32(DS.tables[0].rows[0][0]) + 1;
    if (no < 10)
    {
    Order_No=Order_No+"0" + no.tostring();
    }
    else
    {
    Order_No=Order_No+no.tostring();
    }
      

  6.   

    按照 lovefootball(蟑螂) 的写法,Order_Code的值只能永远是02,第三条记录还是02,而不是03