簡體   English   中英

將數據類型varchar轉換為數字時出錯。 2014年1月17日

[英]Error converting data type varchar to numeric. 1-17-2014

我在插入記錄時遇到問題,錯誤說:“將數據類型varchar轉換為數字時出錯。”

這是我的一組代碼:

private void btnSearchCustomer_Click(object sender, EventArgs e)
{
        //Get Customer Records
        DataSet dsCustomer = new DataSet();
        dsCustomer = GetRecords("Customers");

        frmBasicSearch newSearch = new frmBasicSearch();

        newSearch.myDataSet = dsCustomer;
        newSearch.ShowDialog();

        int myRowPosition = newSearch.myRowPosition;

        if (myRowPosition != -1) //will display the value inside the textboxes
        {
            //concuntinated values
            this.txtCustomerNo.Text = dsCustomer.Tables["Customers"].Rows[myRowPosition]["CustomerNo"].ToString();

            this.txtCustomerName.Text = dsCustomer.Tables["Customers"].Rows[myRowPosition]["CustomerName"].ToString();

            this.txtCustomerAddress.Text = dsCustomer.Tables["Customers"].Rows[myRowPosition]["CustomerAddress"].ToString();

            groupProduct(true); //this will activate the buttons from the Product Section
        }

        cn.Close();

        cn.Open();           

        SqlCommand cmdInsert = new SqlCommand();           

        cmdInsert.Connection = cn;
        cmdInsert.Transaction = trnOrder;
        cmdInsert.CommandType = CommandType.Text;
        cmdInsert.CommandText =
            "INSERT INTO ShoppingCart " +
            "(OrderDate, CustomerNo, CustomerName, CustomerAddress, PurchaseOrderNo, AgentNo, AgentName, InvoiceNo, TotalAmount, OrderStatus) " +
            "VALUES ('" +
            dtpOrderDate.Value.Date.ToString() + "', '" +
            txtCustomerNo.Text + "', '" +
            txtCustomerName.Text + "', '" +
            txtCustomerAddress.Text + "', '" +
            txtPONo.Text + "', '0', 'Agent', '" +
            txtInvoiceNo.Text + "', '" +
            lblTotal.Text + "', 'Void'); " +
            "SELECT TOP 1 ShoppingCartNo FROM ShoppingCart " +
            "ORDER BY ShoppingCartNo DESC;";

        int nShoppingCart = Convert.ToInt16(cmdInsert.ExecuteScalar().ToString());

        txtOrderNo.Text = nShoppingCart.ToString();

        cmdInsert.ExecuteNonQuery();

        cn.Close();
}

突出顯示的部分是

int nShoppingCart = Convert.ToInt16(cmdInsert.ExecuteScalar().ToString());

我似乎無法知道問題出在哪里? 謝謝您的幫助。

我認為你已經在數據庫數字字段中取了“CustomerNo”字段,並且你試圖在該字段中插入varchar或字符串值,因為我能夠看到你在其中放入將包含字符串值的“txtCustomerNo.Text”的代碼。 您應該在int或您的數據庫字段中轉換您的值fisrt。

希望這對你有所幫助。

可以在沒有Convert方法的情況下運行腳本。 替換為:

string nShoppingCart = cmdInsert.ExecuteScalar()。ToString();

然后看看nShoppingCart值是什么,看看是否會轉換為整數。

嘗試添加以下部分

Convert.ToInt16(lblTotal.Text)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM