2013-08-16 7 views
5

में कनवर्ट करने में विफल रहा मुझे एक समस्या मिली जहां मैं केवल एक ही टेक्स्टबॉक्स पर डेटाबेस से डेटा पुनर्प्राप्त करने में सक्षम हूं। क्या मैं चाहता हूँ, मैं डेटाबेस से हर बक्सें के डेटा प्राप्त करना चाहते हैं, लेकिन जब मैं करने की कोशिश की, हो रही त्रुटि:एक स्ट्रिंग से int32

string connectionString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Archives\Projects\Program\Sell System\Sell System\App_Data\db1.accdb;Persist Security Info=False;"); 

private List<List<TextBox>> textBoxCodeContainer = new List<List<TextBox>>(); 
private List<List<TextBox>> textBoxQuantityContainer = new List<List<TextBox>>(); 
private List<List<TextBox>> textBoxDescContainer = new List<List<TextBox>>(); 
private List<List<TextBox>> textBoxSubTotalContainer = new List<List<TextBox>>(); 
private List<List<TextBox>> textBoxTotalContainer = new List<List<TextBox>>(); 

private void Form1_Load(object sender, EventArgs e) 
{ 
    UpdateTextPosition(); 

    OleDbDataReader dReader; 
    OleDbConnection conn = new OleDbConnection(connectionString); 
    conn.Open(); 
    OleDbCommand cmd = new OleDbCommand("SELECT [Code] FROM [Data]", conn); 

    dReader = cmd.ExecuteReader(); 

    AutoCompleteStringCollection codesCollection = new AutoCompleteStringCollection(); 

    while (dReader.Read()) 
    { 
     string numString = dReader[0].ToString().PadLeft(4, '0'); 
     codesCollection.Add(numString); 
    } 

    dReader.Close(); 
    conn.Close(); 
} 

private void UpdateDatas() 
{  
    OleDbDataReader dReader; 
    OleDbConnection conn = new OleDbConnection(connectionString); 
    conn.Open(); 
    OleDbCommand cmd = new OleDbCommand("SELECT DISTINCT [Description], [Price] FROM [Data] WHERE [Code][email protected]", conn); 

    cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer); 
    cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][0].Text; 

    dReader = cmd.ExecuteReader(); 

    while (dReader.Read()) 
    { 
     this.textBoxDescContainer[0][0].Text = dReader["Description"].ToString(); 
     this.textBoxSubTotalContainer[0][0].Text = dReader["Price"].ToString(); 
    } 

    dReader.Close(); 
    conn.Close(); 
} 

मैं पहले से ही ऐड करने की कोशिश की:

यहाँ कोड है

cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer); 
cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][1].Text; 

और

while (dReader.Read()) 
{ 
    this.textBoxDescContainer[0][1].Text = dReader["Description"].ToString(); 
    this.textBoxSubTotalContainer[0][1].Text = dReader["Price"].ToString(); 
} 

लेकिन मैं एक त्रुटि जो कहते है: "एक strin से पैरामीटर मान परिवर्तित करने में विफल एक int32 "

+0

खराब कोड प्रारूप। –

+0

आपको त्रुटि कहाँ मिलती है? – Default

+0

विफल होने वाले सुझावों से, ऐसा लगता है कि आपके पास डेटा समस्या है। हमें नमूना डेटा दिखाएं? यह कोड या मूल्य में गैर-पूर्णांक हो सकता है। – cjb110

उत्तर

2

को जी इस

आप स्ट्रिंगको Int32 डेटा प्रकार पार्स करने के लिए है की कोशिश करो

cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer); 
cmd.Parameters["Code"].Value =int.Parse(this.textBoxCodeContainer[0][1].Text); 

इस उपयोगकर्ता एक मान्य पूर्णांक

में प्रवेश करती है, तो उदाहरण के लिए के लिए काम करना चाहिए

int Val=int.Parse("45");//Works for me 

नोट: यह दशमलव मान

के लिए काम नहीं करता है वैकल्पिक रूप से अपने Price मूल्य दशमलव मौजूद होता है तो आप क्या कर सकते

cmd.Parameters["Code"].Value = Convert.ToInt32(Convert.ToDouble(this.textBoxCodeContainer[0][1].Text)); 

यह काम करना चाहिए

+0

में कनवर्ट करते समय cultreinfo का उपयोग करें, मैंने पहले ही कोशिश की है, लेकिन त्रुटि कहती है: इनपुट स्ट्रिंग सही प्रारूप में नहीं थी। क्या हुआ? - " – Reinhardt

+0

@Fuhans मेरे अपडेट किए गए उत्तर पर एक नज़र डालें क्या आपके इनपुट में दशमलव मान हैं ?? 45.21 या 79.45 की तरह ?? कोड के लिए – Rohit

+0

, संख्या दशमलव मान में नहीं है, लेकिन कीमत के लिए, इसमें डेटाबेस में दशमलव मान हैं, जो "10.000,00" – Reinhardt

1

बदलें है लाइन

cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][0].Text; 

cmd.Parameters["Code"].Value = Convert.ToInt32(this.textBoxCodeContainer[0][0].Text); 
+0

मैंने पहले ही कोशिश की है, लेकिन त्रुटि कहती है: इनपुट स्ट्रिंग नहीं थी सही प्रारूप में। क्या होता है? - " – Reinhardt

+0

मैं http://stackoverflow.com/a/18267369/503110 उत्तर का सुझाव दूंगा। 'टेक्स्टबॉक्सकोडकंटनर' टेक्स्ट बॉक्स में सभी टेक्स्ट int में कनवर्ट नहीं होंगे और ऐसे मामले में आपका कोड उड़ जाएगा। इसके बजाए 'int.TryParse' का प्रयोग करें। – PawanS

0
this.textBoxSubTotalContainer[0][0].Text=Convert.ToInt32(dReader["Price"].ToString()); 

ऊपर बयान आप की मदद करनी चाहिए करने के लिए ...

सादर

अनुराग

+0

मैंने पहले से ही कोशिश की है, लेकिन त्रुटि कहती है: क्या इंटिकिटी टाइप int int को स्ट्रिंग – Reinhardt

+0

में परिवर्तित नहीं कर सकता है? – Anurag

1

इस लाइन

cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][1].Text; 

जरूरतों

int codeValue; 
if(int.TryParse(this.textBoxCodeContainer[0][1].Text,out codeValue)) 
    cmd.Parameters["Code"].Value = codeValue; 
else 
    { 
    //do some error handling of invalid input 
    } 

में परिवर्तित करने के रूप में आप प्रकार ineteger के पैरामीटर के लिए एक स्ट्रिंग पारित करने के लिए कोशिश कर रहे हैं।

0

आपके कोड के अनुसार, जो आप वास्तव में उल्लेख नहीं करते हैं कि त्रुटि कहां उठाई गई है, यह आपकी समस्या का स्रोत प्रतीत होता है।

  cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer); 
      cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][0].Text; 

आप एक Integer के रूप में "Code" घोषित किया है लेकिन कोई Text मान निर्दिष्ट कर रहे हैं। इसे Int32 में कनवर्ट करें।

Int32 codeValue = 0; 
Int32.TryParse(this.textBoxCodeContainer[0][0].Text, out codeValue); 
cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer); 
cmd.Parameters["Code"].Value = codeValue; 
+0

मैंने पहले से ही इस तरह से कोशिश की है, लेकिन त्रुटि कहती है: इनपुट स्ट्रिंग सही प्रारूप में नहीं थी। क्या हुआ? - " – Reinhardt

+0

मैंने कोड संपादित किया है। – SollyM

+0

धन्यवाद, यह अब काम करता है – Reinhardt

संबंधित मुद्दे