public OfficeSpecificDataLabelsTDS GetData() { PDataLabelUseTable DataLabelUseDT; String LabelUse; Int32 Counter; PDataLabelValuePartnerRow DataLabelValueRow; PDataLabelUseRow DataLabelUseRow; // create the FOfficeSpecificDataLabelsTDS DataSet that will later be passed to the Client FOfficeSpecificDataLabelsTDS = new OfficeSpecificDataLabelsTDS("OfficeSpecificDataLabels"); TDBTransaction ReadTransaction = new TDBTransaction(); DBAccess.ReadTransaction( ref ReadTransaction, delegate { switch (FOfficeSpecificDataLabelUse) { case TOfficeSpecificDataLabelUseEnum.Family: case TOfficeSpecificDataLabelUseEnum.Church: case TOfficeSpecificDataLabelUseEnum.Organisation: case TOfficeSpecificDataLabelUseEnum.Unit: case TOfficeSpecificDataLabelUseEnum.Bank: case TOfficeSpecificDataLabelUseEnum.Venue: PDataLabelValuePartnerAccess.LoadViaPPartnerPartnerKey(FOfficeSpecificDataLabelsTDS, FPartnerKey, ReadTransaction); break; case TOfficeSpecificDataLabelUseEnum.Person: case TOfficeSpecificDataLabelUseEnum.Personnel: PDataLabelValuePartnerAccess.LoadViaPPartnerPartnerKey(FOfficeSpecificDataLabelsTDS, FPartnerKey, ReadTransaction); if (FOfficeSpecificDataLabelsTDS.PDataLabelValuePartner.Rows.Count > 0) { DataLabelUseDT = PDataLabelUseAccess.LoadAll(ReadTransaction); // Initialize 'use' criterium according to the enum LabelUse = Enum.GetName(typeof(TOfficeSpecificDataLabelUseEnum), FOfficeSpecificDataLabelUse); // for every value row: check if the label exists in the requested 'use' section // loop counts down, otherwise access violations when elements are deleted for (Counter = FOfficeSpecificDataLabelsTDS.PDataLabelValuePartner.Rows.Count - 1; Counter >= 0; Counter--) { DataLabelValueRow = FOfficeSpecificDataLabelsTDS.PDataLabelValuePartner[Counter]; DataLabelUseRow = (PDataLabelUseRow)DataLabelUseDT.Rows.Find(new Object[] { DataLabelValueRow.DataLabelKey, LabelUse }); if (DataLabelUseRow == null) { DataLabelValueRow.Delete(); DataLabelValueRow.AcceptChanges(); } } } break; case TOfficeSpecificDataLabelUseEnum.LongTermApp: case TOfficeSpecificDataLabelUseEnum.ShortTermApp: PDataLabelValueApplicationAccess.LoadViaPmGeneralApplication(FOfficeSpecificDataLabelsTDS, FPartnerKey, FApplicationKey, FRegistrationOffice, ReadTransaction); break; } }); return(FOfficeSpecificDataLabelsTDS); }
public OfficeSpecificDataLabelsTDS GetData(TDBTransaction AReadTransaction) { PDataLabelUseTable DataLabelUseDT; String LabelUse; Int32 Counter; PDataLabelValuePartnerRow DataLabelValueRow; PDataLabelUseRow DataLabelUseRow; // create the FOfficeSpecificDataLabelsTDS DataSet that will later be passed to the Client FOfficeSpecificDataLabelsTDS = new OfficeSpecificDataLabelsTDS("OfficeSpecificDataLabels"); switch (FOfficeSpecificDataLabelUse) { case TOfficeSpecificDataLabelUseEnum.Family: case TOfficeSpecificDataLabelUseEnum.Church: case TOfficeSpecificDataLabelUseEnum.Organisation: case TOfficeSpecificDataLabelUseEnum.Unit: case TOfficeSpecificDataLabelUseEnum.Bank: case TOfficeSpecificDataLabelUseEnum.Venue: PDataLabelValuePartnerAccess.LoadViaPPartnerPartnerKey(FOfficeSpecificDataLabelsTDS, FPartnerKey, AReadTransaction); break; case TOfficeSpecificDataLabelUseEnum.Person: case TOfficeSpecificDataLabelUseEnum.Personnel: PDataLabelValuePartnerAccess.LoadViaPPartnerPartnerKey(FOfficeSpecificDataLabelsTDS, FPartnerKey, AReadTransaction); if (FOfficeSpecificDataLabelsTDS.PDataLabelValuePartner.Rows.Count > 0) { DataLabelUseDT = PDataLabelUseAccess.LoadAll(AReadTransaction); // Initialize 'use' criterium according to the enum LabelUse = Enum.GetName(typeof(TOfficeSpecificDataLabelUseEnum), FOfficeSpecificDataLabelUse); // for every value row: check if the label exists in the requested 'use' section // loop counts down, otherwise access violations when elements are deleted for (Counter = FOfficeSpecificDataLabelsTDS.PDataLabelValuePartner.Rows.Count - 1; Counter >= 0; Counter--) { DataLabelValueRow = FOfficeSpecificDataLabelsTDS.PDataLabelValuePartner[Counter]; DataLabelUseRow = (PDataLabelUseRow)DataLabelUseDT.Rows.Find(new Object[] { DataLabelValueRow.DataLabelKey, LabelUse }); if (DataLabelUseRow == null) { DataLabelValueRow.Delete(); DataLabelValueRow.AcceptChanges(); } } } break; case TOfficeSpecificDataLabelUseEnum.LongTermApp: case TOfficeSpecificDataLabelUseEnum.ShortTermApp: PDataLabelValueApplicationAccess.LoadViaPmGeneralApplication(FOfficeSpecificDataLabelsTDS, FPartnerKey, FApplicationKey, FRegistrationOffice, AReadTransaction); break; } return FOfficeSpecificDataLabelsTDS; }
/// <summary> /// Initialises DataSets and Tables /// /// </summary> /// <returns>void</returns> private void InitialiseDataStructures(PDataLabelValuePartnerTable ADataTableValuePartner, PDataLabelValueApplicationTable ADataTableValueApplication) { FDataLabelDT = (PDataLabelTable)TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.DataLabelList); // FDataLabelDT.Tablename := 'PDataLabel'; // MessageBox.Show('FDataLabelDT.Rows[0].Key: ' + FDataLabelDT.Row[0].Key.ToString); FDataLabelUseDT = (PDataLabelUseTable)TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.DataLabelUseList); // MessageBox.Show('FDataLabelUseDT.Rows[0].Key: ' + FDataLabelUseDT.Row[0].Idx1.ToString); FDataLabelLookupDT = (PDataLabelLookupTable)TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.DataLabelLookupList); // MessageBox.Show('FDataLabelLookupDT.Row[0].CategoryCode: ' + FDataLabelLookupDT.Row[0].CategoryCode); FDataLabelLookupCategoryDT = (PDataLabelLookupCategoryTable)TDataCache.TMPartner.GetCacheablePartnerTable( TCacheablePartnerTablesEnum.DataLabelLookupCategoryList); // MessageBox.Show('FDataLabelLookupCategoryDT.Row[0].CategoryCode: ' + FDataLabelLookupCategoryDT.Row[0].CategoryCode); // Set up DataSet that holds all DataTables FLocalDataDS = new OfficeSpecificDataLabelsTDS("OfficeSpecificData"); // Merge in cached Typed DataTables (should be done differently in the future when TypedDataSet.Tables.Add works fine) FLocalDataDS.Merge(FDataLabelDT); FLocalDataDS.Merge(FDataLabelUseDT); FLocalDataDS.Merge(FDataLabelLookupDT); FLocalDataDS.Merge(FDataLabelLookupCategoryDT); FDataLabelValuePartnerDT = ADataTableValuePartner; FDataLabelValueApplicationDT = ADataTableValueApplication; }