Hey kids,
I found a cleaner way to load my data from a flatfile into a
datastructure for processing. I will then use this data structure to
validate and then process the data before inserting it into the table.
Thanks for all your help, everyone, especially Paul who really followed
up on this.
Posting code I used in case future searchers need it.
--gloria
-------------------------------------
#region Loads the PO Receipt data into OLiTE (861 Processing)
//--------------------------------------------------------------
public void LoadPOReceipt()
{
string CurrentFunction = "LoadPOReceipt";
porerrorClass.WriteLine(2,CurrentFunction,"Entering.");
//string filename = FindTheFile();
//string filename = porerrorClass.BAXdirectoryStr +
this.BAX861DfilenameStr;
//string filename = porerrorClass.BAXdirectoryStr +
"861D_NI_03082005001.txt";
string filename = porerrorClass.BAXdirectoryStr + "861D_test2.txt";
ArrayList poreceiptAL = Load861Data(filename);
ProcessThePOReceipt(poreceiptAL);
//CloseAnyOpenPOs();
porerrorClass.WriteLine(2,CurrentFunction,"Exiting.");
return;
}
#endregion
#region Class to read in the 861 Data.
//---------------------------------------------
private class DataClass861
{
public string ponumStr;
public string subinvStr;
public string partnumStr;
public string receivedqtyStr;
public string linenumStr;
public string receiveddateStr;
public string poitemidStr;
public string waybillnumStr;
public int ReadIn(StreamReader sr)
{
char [] delim = "\t".ToCharArray();
string currentlineStr = sr.ReadLine();
string[] dataArray = currentlineStr.Split(delim);
int rowcnt = dataArray.Length;
#region
if (rowcnt == 33)
{
char[] spacedelim = " ".ToCharArray();
string tempvar;
bool numbercheck;
numbercheck = false;
ponumStr = dataArray[0].Trim(spacedelim);
subinvStr = dataArray[1].Trim(spacedelim);
partnumStr = dataArray[4].Trim(spacedelim);
receivedqtyStr = dataArray[8].Trim(spacedelim);
linenumStr = dataArray[9].Trim(spacedelim);
receiveddateStr = dataArray[10].Trim(spacedelim);
poitemidStr = dataArray[11].Trim(spacedelim);
waybillnumStr = dataArray[32].Trim(spacedelim);
}
else
{
readinEC.RecordError(CurrentFunction,CurrentProcess,"Data",
"Incorrect number of rows in 861 Data.","",
"Rowcount should be 33, but it was " + rowcnt + ".");
readinEC.WriteLine(2,CurrentFunction,"Exiting");
return -1;
}
#endregion
readinEC.WriteLine(2,CurrentFunction,"Exiting");
return 0;
}
};
#endregion
#region Actually load the data into the dataset.
//--------------------------------------------------------------------
//public ArrayList Load861Data(string filenameStr)
public void Load861Data(string filenameStr)
{
string CurrentFunction = "Load861Data";
porerrorClass.WriteLine(2,CurrentFunction,"Entering.");
ArrayList load861dataAL = new ArrayList();
using(StreamReader sr = new StreamReader(filenameStr) )
{
while(sr.Peek() >=0)
{
DataClass861 line = new DataClass861();
if (line.ReadIn(sr) == 0)
load861dataAL.Add(line);
}
int rowcnt = load861dataAL.Count;
porerrorClass.WriteLine(1,CurrentFunction,"Number of rows: " +
rowcnt);
porerrorClass.WriteLine(2,CurrentFunction,"Exiting.");
return load861dataAL;
}
}
#endregion