关于builder.appendline()的使用有个问题请教一下大神们

问题描述

foreach(DataRowdataRowinDataTableAll.Rows){if(int.Parse(dataRow[All.DAYS].ToString())>30){pilla=dataRow[All.NAME].ToString();intdays=int.Parse(dataRow[All.DAYS].ToString());builder.AppendLine(pilla+days+"天");}else{if(dataRow[All.NEW].ToString()=="N"){stringcode=dataRow[All.CODE].ToString();intdays=0;foreach(DataRownewdataRowinDataTableAll.Rows){if(code==newdataRow[All.CODE].ToString()){days+=int.Parse(newdataRow[All.DAYS].ToString());if(days>30){pilla=newdataRow[All.NAME].ToString();builder.AppendLine(pilla+days+"天");}}}}elseif(dataRow[All.NEW_ORDER].ToString()=="Y"){stringcode=dataRow[All.CODE].ToString();intdays=0;foreach(DataRownewdataRowinDataTableAll.Rows){if(code==newdataRow[All.CODE].ToString()){days+=int.Parse(newdataRow[All.DAYS].ToString());if(days>30){pilla=newdataRow[All.NAME].ToString();builder.AppendLine(pilla+days+"天");}}}}}}

现在的问题就是例如在符合条件>30的条件下a物品存入n天保存之后再输入a物品x天这样就最后显示的就会是物品an+x天物品an+x天就是说最后有多少个重复的a物品显示builder.appendline的时候就会重复多少遍应该如何解决这个问题?我只需要显示一遍

解决方案

本帖最后由 starfd 于 2016-01-25 16:12:00 编辑
解决方案二:
能解释下你的业务逻辑吗?为什么要foreach套foreach
解决方案三:
引用1楼starfd的回复:

能解释下你的业务逻辑吗?为什么要foreach套foreach

是这样的因为按照正常的逻辑思维来操作的话是不用foreach套foreach的很简单就能实现了但是因为很多使用者并不能规范操作有很多奇葩的操作方式不能禁止他们不那样操作所以只能在功能上将所有可能奇葩操作都考虑进去来实现这个不能超过30天的功能。我才做码农没多久之前写了两个版本builder.appendline显示倒是没问题但是测出来还是有部分奇葩操作导致超过30天的功能无法卡控住,我不知道还能怎么写今天突然想到了所以就试一试foreach套foreach现在功能上是完全卡住了所有可能有的奇葩操作但是builder.appendline的显示上就有问题了
解决方案四:
引用1楼starfd的回复:

能解释下你的业务逻辑吗?为什么要foreach套foreach

我是先判断首先有没有哪一个物品输入天数的时候直接就超过30天如果为否则判断一下当前输入的这物品是已经保存过的还是新加入的然后套foreach如果所有的物品中还有a物品就把天数全部加起来判断是否超过刚才想了想好像那个elseif是多余的现在直接将第一个else下的那个if(dataRow[All.NEW].ToString()=="N")和if(dataRow[All.NEW].ToString()=="Y")取消掉只留一段
解决方案五:
先去重
解决方案六:
引用4楼FoxDave的回复:

先去重

请问应该怎么先去重?因为我不知道会不会有重复输入的所以才要foreach套foreach将所有重复的物品的天数加起来判断是否会超过
解决方案七:
那你应该先对datatable进行去重。也就是sql数据库,取出数据的时候,已经distinct了。

时间: 2024-11-20 15:26:18

关于builder.appendline()的使用有个问题请教一下大神们的相关文章

报表-C++Builder中fastreport的问题,求大神指点,不胜感激!!!

问题描述 C++Builder中fastreport的问题,求大神指点,不胜感激!!! 如图所示是制作的报表,当每个Test为FAIL时,不想让这个条显示,但下面Test为PASS时,会自动移到Test为FAIL的那个条的位置,我该怎么实现?好比如图,BUS InterfaceTest为FAIL时,Flash Interface Test为PASS时,Flash Interface Test这个条移动到BUS InterfaceTest条的位置.当然这四个条都有可能为FAIL或PASS.因为是新

DOM解析XML,根节点标签内容判断

问题描述 xml文件如下:<?xml version="1.0" encoding="GB2312"?><学生花名册> <学生 性别 = "男"> <姓名>gray</姓名> <年龄>14</年龄> <电话>1234567</电话> </学生></学生花名册>我想实现的是,判断根节点的内容是否为 "学生花名

求救!c#datagridview已绑定ACCESS数据库,现在对datagridview中数据进行更改,通过保存按钮更新到数据库!

问题描述 如题.这是按钮代码privatevoidbutton2_Click(objectsender,EventArgse){if(MessageBox.Show("是否保存数据?","系统消息",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)==DialogResult.OK){dataGridView1.EndEdit();//重新用表格数据

C++ Builder 2010集合类的一个BUG

今天用C++ Builder 2010写一段小代码,用到了集合类,可集合运算结果怎么也不对,排除了其它原因,最后确定应该是集合类源代码的问题,下面是一段集合类的测试代码: enum TTest{tt0, tt15 = 15, tt16 = 16}; typedef Set<TTest, tt0, tt16> TTests; void __fastcall TForm1::Button1Click(TObject *Sender) { TTests t1 = TTests() <<

c++builder-c++ Builder解压,不覆盖已存在的文件

问题描述 c++ Builder解压,不覆盖已存在的文件 c++ Builder解压,不覆盖已存在的文件 c++builder 我现在需要解压instanll.zip压缩文件,但是有一个文件夹sysProp, 如果当前目录存在就不会覆盖该文件夹,其余正常解压! 新手求指教,望大神帮忙!!!万分感谢 最好友实现的代码,刚刚接触c++ Builder望见谅

c++builder如何将容器中的组件坐标转化为相对空间相对与窗体的坐标

问题描述 c++builder如何将容器中的组件坐标转化为相对空间相对与窗体的坐标 5C c++builder设计窗体时,用了个多页窗体PageControl,在PageControl中加了个Stringgrid1我需要在stringgrid1的第二列加上combobox,但是怎么设置坐标运行结果都错,我是拿stringgrid1的屏幕坐标减去窗体的屏幕坐标在加上单元格相对于stringgrid1的位置,但是运行的位置总是不对,拜托各位大神帮个忙,我这一直弄不出来,下面工作没法继续!刚注册的账号

c++builder-请问C++Builder从哪个版本开始支持64位?????

问题描述 请问C++Builder从哪个版本开始支持64位????? 请问一下各位大神,bcb从哪个版本开始支持64位的?还有所谓的xe版本吗? 解决方案 可以还Visual Studio了,CB已经基本淘汰了 解决方案二: VS2013 都可以用了. 解决方案三: C++Builder XE7支持.

初学者-SoundPool.Builder使用

问题描述 SoundPool.Builder使用 搜到一些SoundPool用法,但是这个好像现在用不了了,然后折腾了SoundPool.Builder报NoClassDefFound异常,网上下了一些Demo,导入eclisps都提示我没导包,有没有大神可以给我些指导,万分感谢 解决方案 SoundPool的使用SoundPool的使用

sqlserver c++builder-C++Builder连接SQL server数据库

问题描述 C++Builder连接SQL server数据库 如何用C++Builder软件对连接SQLserver数据库,并把编写数据库中表格的脚本信息读取出来出来,求大神指导!