আইটেম সংখ্যার জন্য ইউপিসি গণনা করার জন্য আমি উইন্ডোজ ফর্মটিতে কাজ করছি।
আমি সফলভাবে একটি তৈরি করেছি যা একবারে একটি আইটেম নম্বর / ইউপিসি পরিচালনা করবে, এখন আমি একাধিক আইটেম নম্বর / ইউপিসির জন্য এটি প্রসারিত এবং করতে চাই।
আমি একটি তালিকা ব্যবহার এবং শুরু করার চেষ্টা করেছি, কিন্তু আমি আটকে থাকি। আমি একটি সহায়ক শ্রেণি তৈরি করেছি:
public class Codes
{
private string incrementedNumber;
private string checkDigit;
private string wholeNumber;
private string wholeCodeNumber;
private string itemNumber;
public Codes(string itemNumber, string incrementedNumber, string checkDigit, string wholeNumber, string wholeCodeNumber)
{
this.incrementedNumber = incrementedNumber;
this.checkDigit = checkDigit;
this.wholeNumber = wholeNumber;
this.wholeCodeNumber = wholeCodeNumber;
this.itemNumber = itemNumber;
}
public string ItemNumber
{
get { return itemNumber; }
set { itemNumber = value; }
}
public string IncrementedNumber
{
get { return incrementedNumber; }
set { incrementedNumber = value; }
}
public string CheckDigit
{
get { return checkDigit; }
set { checkDigit = value; }
}
public string WholeNumber
{
get { return wholeNumber; }
set { wholeNumber = value; }
}
public string WholeCodeNumber
{
get { return wholeCodeNumber; }
set { wholeCodeNumber = value; }
}
}
তারপরে আমি আমার কোডটি শুরু করেছি, তবে বিষয়টি হ'ল প্রক্রিয়াটি বর্ধমান, অর্থাত্ আমি চেকবক্সগুলির মাধ্যমে গ্রিডভিউ থেকে আইটেম নম্বরটি পেয়েছি এবং সেগুলি তালিকায় রেখেছি। তারপরে আমি ডাটাবেস থেকে সর্বশেষ ইউপিসি পেয়েছি, চেকডিজিটটি স্ট্রিপ করব, তারপরে একটি করে সংখ্যা বাড়িয়ে তালিকায় রাখি। তারপরে আমি নতুন নম্বরটির জন্য চেকডিজিট গণনা করে তা তালিকায় রাখি। এবং এখানে আমি ইতিমধ্যে একটি আউট অফ মেমরি ব্যতিক্রম পেয়েছি। আমার এখন পর্যন্ত কোডটি এখানে:
List<Codes> ItemNumberList = new List<Codes>();
private void buttonSearch2_Click(object sender, EventArgs e)
{
//Fill the datasets
this.immasterTableAdapter.FillByWildcard(this.alereDataSet.immaster, (textBox5.Text));
this.upccodeTableAdapter.FillByWildcard(this.hangtagDataSet.upccode, (textBox5.Text));
this.uPCTableAdapter.Fill(this.uPCDataSet.UPC);
string searchFor = textBox5.Text;
int results = 0;
DataRow[] returnedRows;
returnedRows = uPCDataSet.Tables["UPC"].Select("ItemNumber = '" + searchFor + "2'");
results = returnedRows.Length;
if (results > 0)
{
MessageBox.Show("This item number already exists!");
textBox5.Clear();
//clearGrids();
}
else
{
//textBox4.Text = dataGridView1.Rows[0].Cells[1].Value.ToString();
MessageBox.Show("Item number is unique.");
}
}
public void checkMarks()
{
for (int i = 0; i < dataGridView7.Rows.Count; i++)
{
if ((bool)dataGridView7.Rows[i].Cells[3].FormattedValue)
{
{
ItemNumberList.Add(new Codes(dataGridView7.Rows[i].Cells[0].Value.ToString(), "", "", "", ""));
}
}
}
}
public void multiValue1()
{
_value = uPCDataSet.UPC.Rows[uPCDataSet.UPC.Rows.Count - 1]["UPCNumber"].ToString();//get last UPC from database
_UPCNumber = _value.Substring(0, 11);//strip out the check-digit
_UPCNumberInc = Convert.ToInt64(_UPCNumber);//convert the value to a number
for (int i = 0; i < ItemNumberList.Count; i++)
{
_UPCNumberInc = _UPCNumberInc + 1;
_UPCNumberIncrement = Convert.ToString(_UPCNumberInc);//assign the incremented value to a new variable
ItemNumberList.Add(new Codes("", _UPCNumberIncrement, "", "", ""));//**here I get the OutOfMemoreyException**
}
for (int i = 0; i < ItemNumberList.Count; i++)
{
long chkDigitOdd;
long chkDigitEven;
long chkDigitSubtotal;
chkDigitOdd = Convert.ToInt64(_UPCNumberIncrement.Substring(0, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(2, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(4, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(6, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(8, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(10, 1));
chkDigitOdd = (3 * chkDigitOdd);
chkDigitEven = Convert.ToInt64(_UPCNumberIncrement.Substring(1, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(3, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(5, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(7, 1)) + Convert.ToInt64(_UPCNumberIncrement.Substring(9, 1));
chkDigitSubtotal = (300 - (chkDigitEven + chkDigitOdd));
_chkDigit = chkDigitSubtotal.ToString();
_chkDigit = _chkDigit.Substring(_chkDigit.Length - 1, 1);
ItemNumberList.Add(new Codes("", "",_chkDigit, "", ""));
}
এটি কি তালিকার সাহায্যে এটিকে ঘুরে দেখার সঠিক উপায়, না আমার অন্য কোনও উপায়ে তাকানো উচিত?
Code
শ্রেণিতে) অপ্রয়োজনীয় এবং সত্যই গোলমাল ছাড়া কিছুই { get; private set; }
যথেষ্ট নয়।