Federation Method

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;
Parents
  • 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;
Reply
  • 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;
Children
No Data