I'm trying to use a method for a federation item type that appends data into Aras, but it's only inserting one record, I'm assuming the (do while) is incorrect, any help would be appreciated
System.Data.OleDb.OleDbCommand com = new System.Data.OleDb.OleDbCommand(sqltext);
com.Connection = myConnection;
myConnection.Open();
System.Data.OleDb.OleDbDataReader myDataReader = com.ExecuteReader();
//create a MIN_Delivered_Transaction item
Item res5 = this.newItem("MIN_Delivered_Transaction");
string newid = getNewID();
res5.setID(newid);
res5 = res5.apply();
do {
int count = myDataReader.FieldCount;
while (myDataReader.Read()) {
for(int i = 0 ; i < count ; i++) {
res5.setProperty("f_dc",myDataReader.GetString(0));
res5.setProperty("f_trans_group",myDataReader.GetString(1));
res5.setProperty("f_part_number",myDataReader.GetString(2));
res5.setProperty("f_part_name",myDataReader.GetString(3));
res5.setProperty("f_serial_number",myDataReader.GetString(4));
res5.setProperty("f_trans_number",myDataReader.GetString(5));
res5.setProperty("f_trans_type",myDataReader.GetString(6));
res5.setProperty("f_trans_name",myDataReader.GetString(7));
res5.setProperty("f_created_by",myDataReader.GetString(8));
res5.setProperty("f_state",myDataReader.GetString(9));
res5.setProperty("f_call_ticket",myDataReader.GetString(10));
// res5.setProperty("f_created_on",myDataReader.GetString(11));
}
}
} while (myDataReader.NextResult());
myConnection.Close();
// return the MIN_Delivered_Transaction item to be populated in the grid.
return res5;
Question 1.
How do I retrieve the number of rows in myDataReader, is there a (int count = myDataReader.RowCount) ??
Question 2 If place a place holder for my count for testing ex. (int count = 2) it always doubles my data, If I put (int count =3) it triples my data. I'm assuming there's something wrong in my code
// Get the serial number
Item qry0 = this.newItem("MIN_Delivered_Component");
qry0.setAttribute("select","item_number");
qry0.setID(this.getProperty("source_id"));
Item res=qry0.apply("get");
if (res.isError()) return res;
// get the Serial Number (key) that we will use in the external database to search on.
string masterserial;
masterserial = res.getProperty("item_number");
// Connect to external database
System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection(@"Provider=SQLOLEDB;Data Source=000.00.000.0; Initial Catalog=ABC; User ID=admin;Password=xxxxx;");
string sqltext = "select dc, trans_group, part_number where serial_number = '" + masterserial + "';";
System.Data.OleDb.OleDbCommand com = new System.Data.OleDb.OleDbCommand(sqltext);
com.Connection = myConnection;
myConnection.Open();
System.Data.OleDb.OleDbDataReader myDataReader = com.ExecuteReader();
//create a MIN_Delivered_Transaction item
Item res5 = this.newItem("MIN_Delivered_Transaction");
string newid = getNewID();
res5.setID(newid);
res5 = res5.apply();
int count = 2;
while (myDataReader.Read()) {
for(int i = 0 ; i < count ; i++) {
Item temp = this.newItem("MIN_Delivered_Transaction");
temp.setProperty("f_dc", myDataReader.GetString(0));
temp.setProperty("f_trans_group", myDataReader.GetString(1));
temp.setProperty("f_part_number",myDataReader.GetString(2));
res5.appendItem(temp); // Add a new item for each iteration of the loop
}
}
myConnection.Close();
return res5;
Question 1.
How do I retrieve the number of rows in myDataReader, is there a (int count = myDataReader.RowCount) ??
Question 2 If place a place holder for my count for testing ex. (int count = 2) it always doubles my data, If I put (int count =3) it triples my data. I'm assuming there's something wrong in my code
// Get the serial number
Item qry0 = this.newItem("MIN_Delivered_Component");
qry0.setAttribute("select","item_number");
qry0.setID(this.getProperty("source_id"));
Item res=qry0.apply("get");
if (res.isError()) return res;
// get the Serial Number (key) that we will use in the external database to search on.
string masterserial;
masterserial = res.getProperty("item_number");
// Connect to external database
System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection(@"Provider=SQLOLEDB;Data Source=000.00.000.0; Initial Catalog=ABC; User ID=admin;Password=xxxxx;");
string sqltext = "select dc, trans_group, part_number where serial_number = '" + masterserial + "';";
System.Data.OleDb.OleDbCommand com = new System.Data.OleDb.OleDbCommand(sqltext);
com.Connection = myConnection;
myConnection.Open();
System.Data.OleDb.OleDbDataReader myDataReader = com.ExecuteReader();
//create a MIN_Delivered_Transaction item
Item res5 = this.newItem("MIN_Delivered_Transaction");
string newid = getNewID();
res5.setID(newid);
res5 = res5.apply();
int count = 2;
while (myDataReader.Read()) {
for(int i = 0 ; i < count ; i++) {
Item temp = this.newItem("MIN_Delivered_Transaction");
temp.setProperty("f_dc", myDataReader.GetString(0));
temp.setProperty("f_trans_group", myDataReader.GetString(1));
temp.setProperty("f_part_number",myDataReader.GetString(2));
res5.appendItem(temp); // Add a new item for each iteration of the loop
}
}
myConnection.Close();
return res5;