B2017-011: Complete report, sorted by setpoint id, crashes if duplicate setpoint id
B2017-011: Complete report, don’t crash if requested ro is not in database
This commit is contained in:
parent
431503a104
commit
3e5741ef75
@ -90,15 +90,15 @@ namespace CmpRpt
|
|||||||
/// The main entry point for the application.
|
/// The main entry point for the application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
if (args.Length <= 0) return; // nothing to do
|
if (args.Length <= 0) return; // nothing to do
|
||||||
bool success;
|
bool success;
|
||||||
VlnXmlElement rootXml;
|
VlnXmlElement rootXml;
|
||||||
VlnXmlDocument myroXmlDoc;
|
VlnXmlDocument myroXmlDoc;
|
||||||
string recid=null;
|
string recid = null;
|
||||||
string tbl=null;
|
string tbl = null;
|
||||||
RODB myrodb=null;
|
RODB myrodb = null;
|
||||||
// the next two lists contain group headers for the reports.
|
// the next two lists contain group headers for the reports.
|
||||||
ArrayList headers = new ArrayList();
|
ArrayList headers = new ArrayList();
|
||||||
ArrayList reversehdrs = new ArrayList();
|
ArrayList reversehdrs = new ArrayList();
|
||||||
@ -126,7 +126,7 @@ namespace CmpRpt
|
|||||||
// recid = args[0].Substring(4, 8);
|
// recid = args[0].Substring(4, 8);
|
||||||
// // myrodb = new RODB(Directory.GetCurrentDirectory());
|
// // myrodb = new RODB(Directory.GetCurrentDirectory());
|
||||||
//}
|
//}
|
||||||
/******/
|
/******/
|
||||||
// if an RO directory path was passed in, then change the
|
// if an RO directory path was passed in, then change the
|
||||||
// current working directory to it.
|
// current working directory to it.
|
||||||
// this path will also be used to generate a connection string
|
// this path will also be used to generate a connection string
|
||||||
@ -139,12 +139,12 @@ namespace CmpRpt
|
|||||||
Directory.SetCurrentDirectory(path);
|
Directory.SetCurrentDirectory(path);
|
||||||
}
|
}
|
||||||
myrodb = new RODB(Directory.GetCurrentDirectory());
|
myrodb = new RODB(Directory.GetCurrentDirectory());
|
||||||
VlnXmlElement rptele=null;
|
VlnXmlElement rptele = null;
|
||||||
|
|
||||||
// Add the root to the tree
|
// Add the root to the tree
|
||||||
myroXmlDoc = myrodb.RODB_GetRoot();
|
myroXmlDoc = myrodb.RODB_GetRoot();
|
||||||
|
|
||||||
rootXml = (VlnXmlElement) myroXmlDoc.FirstChild;
|
rootXml = (VlnXmlElement)myroXmlDoc.FirstChild;
|
||||||
success = myrodb.RODB_GetRootGroups(rootXml);
|
success = myrodb.RODB_GetRootGroups(rootXml);
|
||||||
if (success == false) return;
|
if (success == false) return;
|
||||||
|
|
||||||
@ -171,8 +171,8 @@ namespace CmpRpt
|
|||||||
showStatBar.StatMsg = string.Format("Retrieving RO {0} of {1}", inc++, bmax);
|
showStatBar.StatMsg = string.Format("Retrieving RO {0} of {1}", inc++, bmax);
|
||||||
showStatBar.BarValue = inc;
|
showStatBar.BarValue = inc;
|
||||||
}
|
}
|
||||||
tbl = roid.Substring(0, 4);
|
tbl = roid.Substring(0, 4);
|
||||||
recid = (roid.Length > 4) ? roid.Substring(4, 8) : null;
|
recid = (roid.Length > 4) ? roid.Substring(4, 8) : null;
|
||||||
|
|
||||||
// if the table & recid = all zeros, we have a request
|
// if the table & recid = all zeros, we have a request
|
||||||
// for all ROs, otherwise it's a request for specific RO(s)
|
// for all ROs, otherwise it's a request for specific RO(s)
|
||||||
@ -191,62 +191,64 @@ namespace CmpRpt
|
|||||||
|
|
||||||
// read in this element from the table.
|
// read in this element from the table.
|
||||||
rptele = myrodb.RODB_ReadRO(tbname, recid);
|
rptele = myrodb.RODB_ReadRO(tbname, recid);
|
||||||
|
if (rptele != null)
|
||||||
VlnXmlElement parent;
|
|
||||||
string parentid;
|
|
||||||
parentid = rptele.GetAttribute("ParentID");
|
|
||||||
string rpteleParentid = parentid;
|
|
||||||
|
|
||||||
// walk up tree to get the path through the tree.
|
|
||||||
VlnXmlElement child = rptele;
|
|
||||||
while (parentid != null && parentid != "00000000")
|
|
||||||
{
|
{
|
||||||
parent = myrodb.RODB_ReadRO(tbname, parentid);
|
VlnXmlElement parent;
|
||||||
if (parent != null)
|
string parentid;
|
||||||
|
parentid = rptele.GetAttribute("ParentID");
|
||||||
|
string rpteleParentid = parentid;
|
||||||
|
|
||||||
|
// walk up tree to get the path through the tree.
|
||||||
|
VlnXmlElement child = rptele;
|
||||||
|
while (parentid != null && parentid != "00000000")
|
||||||
{
|
{
|
||||||
parentid = parent.GetAttribute("ParentID");
|
parent = myrodb.RODB_ReadRO(tbname, parentid);
|
||||||
if (parentid == "00000000")
|
if (parent != null)
|
||||||
{
|
{
|
||||||
reversehdrs.Add(parent.InnerText);
|
parentid = parent.GetAttribute("ParentID");
|
||||||
|
if (parentid == "00000000")
|
||||||
|
{
|
||||||
|
reversehdrs.Add(parent.InnerText);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
parent.AppendChild(child);
|
||||||
|
child = parent;
|
||||||
|
reversehdrs.Add(parent.GetAttribute("MenuTitle"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
parentid = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now hook this into the top part of tree by looking at the table
|
||||||
|
// names.
|
||||||
|
VlnXmlElement group = (VlnXmlElement)rootXml.FirstChild;
|
||||||
|
while (group != null)
|
||||||
|
{
|
||||||
|
string curtbname = group.GetAttribute("Table");
|
||||||
|
// hook it in here.
|
||||||
|
if (curtbname == tbname)
|
||||||
|
{
|
||||||
|
if (rpteleParentid != "00000000")
|
||||||
|
group.AppendChild(child);
|
||||||
|
else // if this is a top group, just reset rept ele
|
||||||
|
rptele = group;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
parent.AppendChild(child);
|
group = (VlnXmlElement)group.NextSibling;
|
||||||
child = parent;
|
|
||||||
reversehdrs.Add(parent.GetAttribute("MenuTitle"));
|
|
||||||
}
|
}
|
||||||
else
|
// Set up the headers array, it's in reverse order since we walked
|
||||||
parentid = null;
|
// up the tree, not down.
|
||||||
|
int cnt = reversehdrs.Count;
|
||||||
|
for (int i = cnt - 1; i >= 0; i--)
|
||||||
|
headers.Add(reversehdrs[i]);
|
||||||
|
myrodb.MyDBID = tbl;
|
||||||
|
rptele.Show(myrodb, headers, showStat);
|
||||||
|
Application.DoEvents();
|
||||||
|
headers.Clear();
|
||||||
|
reversehdrs.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now hook this into the top part of tree by looking at the table
|
|
||||||
// names.
|
|
||||||
VlnXmlElement group = (VlnXmlElement)rootXml.FirstChild;
|
|
||||||
while (group != null)
|
|
||||||
{
|
|
||||||
string curtbname = group.GetAttribute("Table");
|
|
||||||
// hook it in here.
|
|
||||||
if (curtbname == tbname)
|
|
||||||
{
|
|
||||||
if (rpteleParentid != "00000000")
|
|
||||||
group.AppendChild(child);
|
|
||||||
else // if this is a top group, just reset rept ele
|
|
||||||
rptele = group;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
group = (VlnXmlElement)group.NextSibling;
|
|
||||||
}
|
|
||||||
// Set up the headers array, it's in reverse order since we walked
|
|
||||||
// up the tree, not down.
|
|
||||||
int cnt = reversehdrs.Count;
|
|
||||||
for (int i = cnt - 1; i >= 0; i--)
|
|
||||||
headers.Add(reversehdrs[i]);
|
|
||||||
}
|
}
|
||||||
myrodb.MyDBID = tbl;
|
}// end foreach roid
|
||||||
rptele.Show(myrodb, headers, showStat);
|
|
||||||
Application.DoEvents();
|
|
||||||
headers.Clear();
|
|
||||||
reversehdrs.Clear();
|
|
||||||
}// end foreach roid
|
|
||||||
if (showStat != null)
|
if (showStat != null)
|
||||||
showStat.Dispose();
|
showStat.Dispose();
|
||||||
if (showStatBar != null)
|
if (showStatBar != null)
|
||||||
|
@ -187,6 +187,10 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
rtnstr = rodbidPrefix + string.Format("{0}", roc.roid);
|
rtnstr = rodbidPrefix + string.Format("{0}", roc.roid);
|
||||||
keystr = ((roc.appid == "") ? GetNextBlankKey() : roc.appid) + chld.roid.Substring(0, 4);
|
keystr = ((roc.appid == "") ? GetNextBlankKey() : roc.appid) + chld.roid.Substring(0, 4);
|
||||||
|
if (AccIDROIDdic.ContainsKey(keystr)) // For duplicates, append the parent title (B2017-011) so adding to dictionary doesn't crash.
|
||||||
|
{
|
||||||
|
keystr = keystr + "|" + chld.title;
|
||||||
|
}
|
||||||
AccIDROIDdic.Add(keystr, rtnstr);
|
AccIDROIDdic.Add(keystr, rtnstr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user