private void miPlanReplace_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count < 1) { return; } XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement("Rows")); foreach (ListViewItem li in listView1.SelectedItems) { XmlElement rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "age", li.SubItems[2].Text); //rw.AppendChild(doc.CreateElement("age")).AppendChild(doc.CreateTextNode(li.SubItems[2].Text)); String cn = li.SubItems[11].Text; if (cn.IndexOf('[') > -1) { cn = cn.Remove(cn.IndexOf('[')); } ReportHelper.Append(rw, doc, "address", cn); //rw.AppendChild(doc.CreateElement("address")).AppendChild(doc.CreateTextNode(cn)); cn = li.SubItems[NFIELD].Text; if (cn[0] == '[') { cn = int.Parse(cn.Substring(1, cn.Length - 2)).ToString(); } if (cn == "-") { cn = "1"; } ReportHelper.Append(rw, doc, "count", cn);//rw.AppendChild(doc.CreateElement("count")).AppendChild(doc.CreateTextNode(cn)); } new ReportViewForm(myReportType.REPLACE, doc).ShowDialog(); }
/// <summary> /// Создает строчку отчета по каждому самцу /// </summary> private XmlDocument makeRabOfDate(XmlDocument doc_in) { XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement("Rows")); XmlNodeList lst = doc_in.ChildNodes[0].ChildNodes; string name = ""; string dt = ""; int totalChildren = 0; bool okrolWas = false; int pCount = 0; foreach (XmlNode nd in lst) { if (nd.FirstChild.FirstChild.Value == name && nd.FirstChild.NextSibling.FirstChild.Value == dt) { if (nd.FirstChild.NextSibling.NextSibling.FirstChild.Value == PROH) { pCount++; } else { totalChildren += int.Parse(nd.FirstChild.NextSibling.NextSibling.FirstChild.Value); okrolWas = true; } continue; } else if (name != "" && dt != "") { XmlElement el = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(el, doc, "name", name); ReportHelper.Append(el, doc, "dt", dt); ReportHelper.Append(el, doc, "state", String.Format("{0:s}{1:s}", okrolWas ? totalChildren.ToString() : "", pCount > 0 ? PROH + pCount.ToString() : "").Trim()); } totalChildren = 0; pCount = 0; okrolWas = false; name = nd.FirstChild.FirstChild.Value; dt = nd.FirstChild.NextSibling.FirstChild.Value; if (nd.FirstChild.NextSibling.NextSibling.FirstChild.Value == PROH) { pCount++; } else { totalChildren = int.Parse(nd.FirstChild.NextSibling.NextSibling.FirstChild.Value); okrolWas = true; } } XmlElement el2 = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(el2, doc, "name", name); ReportHelper.Append(el2, doc, "dt", dt); ReportHelper.Append(el2, doc, "state", String.Format("{0:s}{1:s}", totalChildren > 0 ? totalChildren.ToString() : "", pCount > 0 ? PROH + (pCount.ToString()) : "").Trim()); return(doc); }
private void addShedRows(XmlDocument doc, String type, int ideal, int real) { XmlElement rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", type); ReportHelper.Append(rw, doc, "type", "идеал"); ReportHelper.Append(rw, doc, "value", ideal.ToString()); rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", type); ReportHelper.Append(rw, doc, "type", "реально"); ReportHelper.Append(rw, doc, "value", real.ToString()); }
private void plemMenuItem_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count < 1) { return; } try { XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement("Rows")); int cnt = 0; string brd = ""; foreach (ListViewItem li in listView1.SelectedItems) { RabNetEngRabbit r = Engine.get().getRabbit((li.Tag as AdultRabbit).ID); cnt += r.Group; if (brd == "") { brd = r.BreedName; } if (r.BreedName != brd) { brd = "none"; } ReportHelperExt.rabToXml(r, null, doc); } XmlDocument doc2 = new XmlDocument(); XmlElement rw = (XmlElement)doc2.AppendChild(doc2.CreateElement("Rows")).AppendChild(doc2.CreateElement("Row")); ReportHelper.Append(rw, doc2, "date", DateTime.Now.Date.ToShortDateString() + " " + DateTime.Now.ToLongTimeString()); ReportHelper.Append(rw, doc2, "breed", brd); ReportHelper.Append(rw, doc2, "count", cnt.ToString()); //rw.AppendChild(doc2.CreateElement("date")).AppendChild(doc2.CreateTextNode(DateTime.Now.Date.ToShortDateString()+" "+DateTime.Now.ToLongTimeString())); //rw.AppendChild(doc2.CreateElement("breed")).AppendChild(doc2.CreateTextNode(brd)); //rw.AppendChild(doc2.CreateElement("count")).AppendChild(doc2.CreateTextNode(cnt.ToString())); new ReportViewForm(myReportType.PRIDE, new XmlDocument[] { doc, doc2 }).ShowDialog(); } catch (Exception exc) { MessageBox.Show(exc.Message); _logger.Warn(exc); _rsb.Run(); } }
/// <summary> /// Окролы по пользователям - Обработка /// </summary> /// <param name="query"></param> /// <returns></returns> private XmlDocument userOkrolRpt(String query) { const string SUMM = "C", TOTAL = "итого"; XmlDocument doc = makeStdReportXml(query); XmlNodeList lst = doc.ChildNodes[0].ChildNodes; Dictionary <String, FuckerSummary> summary = new Dictionary <String, FuckerSummary>(); Dictionary <String, int> dates = new Dictionary <String, int>(); //Dictionary<String, int> cnts = new Dictionary<String, int>();//кл-во окролов //Dictionary<String, int> proh = new Dictionary<String, int>();//кл-во прохолостов //Dictionary<String, float> firt = new Dictionary<String, float>();//фиртильность ///вычисляем общие данные по каждому самцу foreach (XmlNode nd in lst) { String name = nd.FirstChild.FirstChild.Value; String date = nd.FirstChild.NextSibling.FirstChild.Value; String val = nd.FirstChild.NextSibling.NextSibling.FirstChild.Value; if (!summary.ContainsKey(name)) { summary.Add(name, new FuckerSummary()); } if (val == PROH) { summary[name].Proholosts++; continue; } else if (val != "-") { summary[name].Okrols++; summary[name].Born += int.Parse(val); } if (!dates.ContainsKey(date)) { dates.Add(date, int.Parse(val)); } else { dates[date] += int.Parse(val); } } doc = makeRabOfDate(doc); lst = doc.ChildNodes[0].ChildNodes; ///создаем стобец "Сумма рожденных крольчат" int totalBorn = 0, totalOkrols = 0, totalProholosts = 0; foreach (String k in summary.Keys) { XmlElement rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", k); ReportHelper.Append(rw, doc, "dt", SUMM);/// ReportHelper.Append(rw, doc, "state", summary[k].Born.ToString()); totalBorn += summary[k].Born; rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", k); ReportHelper.Append(rw, doc, "dt", "О"); ReportHelper.Append(rw, doc, "state", summary[k].Okrols.ToString()); totalOkrols += summary[k].Okrols; rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", k); ReportHelper.Append(rw, doc, "dt", "П"); ReportHelper.Append(rw, doc, "state", summary[k].Proholosts.ToString()); totalProholosts += summary[k].Proholosts; rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", k); ReportHelper.Append(rw, doc, "dt", "Ф"); double fert = Math.Round((double)summary[k].Okrols / (double)(summary[k].Proholosts + summary[k].Okrols), 2); ReportHelper.Append(rw, doc, "state", fert.ToString()); } ///добавляем самую нижнюю суммирующую строчку XmlElement ttlRow = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(ttlRow, doc, "name", TOTAL); ReportHelper.Append(ttlRow, doc, "dt", SUMM); ReportHelper.Append(ttlRow, doc, "state", totalBorn.ToString()); ttlRow = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(ttlRow, doc, "name", TOTAL); ReportHelper.Append(ttlRow, doc, "dt", "О"); ReportHelper.Append(ttlRow, doc, "state", totalOkrols.ToString()); ttlRow = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(ttlRow, doc, "name", TOTAL); ReportHelper.Append(ttlRow, doc, "dt", "П"); ReportHelper.Append(ttlRow, doc, "state", totalProholosts.ToString()); ttlRow = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(ttlRow, doc, "name", TOTAL); ReportHelper.Append(ttlRow, doc, "dt", "Ф"); double totalFert = Math.Round((double)totalOkrols / (double)(totalProholosts + totalOkrols), 2); ReportHelper.Append(ttlRow, doc, "state", totalFert.ToString()); foreach (String k in dates.Keys) { XmlElement rw = (XmlElement)doc.DocumentElement.AppendChild(doc.CreateElement("Row")); ReportHelper.Append(rw, doc, "name", TOTAL); ReportHelper.Append(rw, doc, "dt", k); ReportHelper.Append(rw, doc, "state", dates[k].ToString()); } return(doc); }