我的销售发票的字母数字

时间:2014-08-08 17:28:12

标签: c# sql

我想在C#中使用字母数字作为销售发票,并将其存储到SQL数据库中。

例如,LG / slae / 1000,LG / sales / 1001等

这是我目前的代码。它仅适用于int值。如何修改它以使用字母数字值?

     public class SALESINVOICE
{
    public string Sales_Invoice {get; set;}
    public string Customer_Name {get; set;}
     public string   Mobile_No {get; set;}
       public string Address {get; set;}
      public string  Item_Name {get; set;}
      public string  Item_Code {get; set;}
      public string  Dept {get; set;}
      public string  Date {get; set;}
       public int Qty {get; set;}
       public int Rate {get; set;}
       public int Vat_tax {get; set;}
       public int Amount {get; set;}
       public int Payment_Type {get; set;}
       public int Purchase_ID { get; set; }

       string myConnection = ("user id=username;" +
                                   "password=password;server="";" +
                                   "Trusted_Connection=yes;" +
                                   "database=""; " +
                                   "connection timeout=30");

    # region
    public void retriveData()
    {
        string selQuery="select sales_invoice from sales";
        try
        {
            SqlConnection conn= new SqlConnection (myConnection);
            conn.Open();
            SqlCommand cmd = new SqlCommand (selQuery, conn);
            Sales_Invoice=(string)cmd.ExecuteScalar()+1;
            conn.Close();
        }
        catch
        {
            Sales_Invoice=LG/SALES/1000;

1 个答案:

答案 0 :(得分:0)

据推测,您的ExecuteScalar会返回类似“LG / SALES / 1000”的字符串。您正在尝试向其添加整数值(1),这将无效。您可能希望解析(即Split()方法)将字符串分成3部分,将最后一部分转换为整数,然后将1添加到该整数。然后,您可以将更新的整数强制转换回String,使用Join()方法将部件重新组合在一起(由“/”分隔),以便您可以使用/存储新值。

此外,在catch块中,您指定的值明显是字母数字(字符串),但您没有围绕值的双引号。这将永远不会奏效。

至少修正这两件事,如果你还有一个问题,也许澄清你的问题。

编辑,OP发表评论后

好的,所以这里是一个简单的WinForms应用程序的代码(1个表单,5个texbox和一个按钮,当你看到下面的代码时,所有这些都是自我解释的:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Increment();
    }

    private void Increment() 
    { 
        //Split the original string
        //NOTE: textBox1 already contains the text "LG/SALES/1000" in this example
        string[] tempArray = textBox1.Text.Split('/');

        //Display resulting array just for verification
        textBox2.Text = tempArray[0];
        textBox3.Text = tempArray[1];
        textBox4.Text = tempArray[2];

        //Convert last part to an int and add 1
        string tempId = tempArray[2]; 
        int id = Convert.ToInt32(tempId);
        id = id + 1; 

        //Make new alpha-numeric value with incremented id
        string autoId = "LG/SALES/" + String.Format("{0:0000000}", id); 
        textBox5.Text = autoId;
    }

}

请注意,我在评论中发布的代码与您的代码非常相似。换句话说,它起作用。我不确定你为什么要像你那样格式化“递增”数字(你使原来的“1000”增加并用前导零格式化,所以结果变成“00001001” - 你可能只想使用“G” “对于通用格式,或者只是int的.ToString()方法,但这是您的选择。

希望这有帮助!