小弟在项目里遇到两个非常棘手的问题,在这里请教大家,求大家给我点思路,当然越具体越好,最好有一小段代码,问题是1、小弟在从单片机里通过串口读出数据,这个数据是以日期和时间做记录的,经过我程序的处理(把字符串拆分开)根据日期和时间存在数据库里。小弟是这样想的,做两个表
表1
id字段(不可重复的递增字段) 日期表2
id字段(与表1的id字段相对应,以表1的id为主键) 后面是详细的数据分类值(大概有17个字段)问题是在数据库空的时候,我直接把数据写入数据库里就可以了,但是用户在第一天读一次单片机里的数据,他不把数据清空(有可能用户要保留这个数据),第二天再读一次,这样在数据表里,会有日期和时间(数据重复)重复的现象发生。我自己想:
一、是我在每次写的时候,都先到表1里去检索是不是有日期重复的记录,如果有,把id字段的主键得到,在表2里删除id号相同的字段,再删表1里日期重复的字段。这样可以办到,但问题是当我的数据非常多,我就要判断很多次,效率会非常的低,感觉不太可行。二、我在读取出来的数据里,找到日期最小的,到表1里去比较,如果有相同的或是大于这个日期的,直接删表1里的数据,表2就不管了,以后读取直接根据表1的id号进行读取。但这样会造成大量的垃圾信息,因为主要是表2占的字段和数据多。
我不知道能不能根据表2的最小日期,把大于这个最小日期的其余日期的id号给检索出来,是全部都检索出来,再根据这些id号,统一删表2里的内容,就不用一个个判断了。但不知道怎么做。
大家有没有别的好办法?2、第二个问题就是报表的显示问题,因为我要显示表2的17个字段,字段非常多,一张A4纸纵向根本显示不全,横向也要65%而且是小字体才可以显示全。有没有什么好办法可以排列这些字段?我自己以前想如果分成一组显示这17个字段是可以一组一组显示下的,但用户看着太不方便了,所以不可行。3、水晶报表横向排表怎么排?请详细点说明,我看过海波的blog里的经典问题了,可是我没实现横向显示,请详细一点帮我说一下。另:以前我们的程序打印是用Excel表格来生成报表的,打印时还要用户去自己设置纸张大小啊,横向啊什么的,太麻烦了,所以现在想用水晶报表。还有,我用的是Vs.Net 2005。谢谢大家。
表1
id字段(不可重复的递增字段) 日期表2
id字段(与表1的id字段相对应,以表1的id为主键) 后面是详细的数据分类值(大概有17个字段)问题是在数据库空的时候,我直接把数据写入数据库里就可以了,但是用户在第一天读一次单片机里的数据,他不把数据清空(有可能用户要保留这个数据),第二天再读一次,这样在数据表里,会有日期和时间(数据重复)重复的现象发生。我自己想:
一、是我在每次写的时候,都先到表1里去检索是不是有日期重复的记录,如果有,把id字段的主键得到,在表2里删除id号相同的字段,再删表1里日期重复的字段。这样可以办到,但问题是当我的数据非常多,我就要判断很多次,效率会非常的低,感觉不太可行。二、我在读取出来的数据里,找到日期最小的,到表1里去比较,如果有相同的或是大于这个日期的,直接删表1里的数据,表2就不管了,以后读取直接根据表1的id号进行读取。但这样会造成大量的垃圾信息,因为主要是表2占的字段和数据多。
我不知道能不能根据表2的最小日期,把大于这个最小日期的其余日期的id号给检索出来,是全部都检索出来,再根据这些id号,统一删表2里的内容,就不用一个个判断了。但不知道怎么做。
大家有没有别的好办法?2、第二个问题就是报表的显示问题,因为我要显示表2的17个字段,字段非常多,一张A4纸纵向根本显示不全,横向也要65%而且是小字体才可以显示全。有没有什么好办法可以排列这些字段?我自己以前想如果分成一组显示这17个字段是可以一组一组显示下的,但用户看着太不方便了,所以不可行。3、水晶报表横向排表怎么排?请详细点说明,我看过海波的blog里的经典问题了,可是我没实现横向显示,请详细一点帮我说一下。另:以前我们的程序打印是用Excel表格来生成报表的,打印时还要用户去自己设置纸张大小啊,横向啊什么的,太麻烦了,所以现在想用水晶报表。还有,我用的是Vs.Net 2005。谢谢大家。
一定要删掉的,因为读取出来的数据是单片机存储器里的,如果用户第一天读一次,不删,第二天再读一次,因为存储器里的时间和第一天读出来的时间是完全一致的(时间),所以会有冲突的
id(主键) 时间字段 字段1 字段2 字段3 字段4
自增 取存数时的系统时间 取从单片机中取出来的时间 取其他数据
我的另外两个问题也帮我看看,谢谢