我有一个包含每月出勤率的数据库。现在,我想在一系列文本框中显示该数据。但我的问题是它不包含任何使我的任务变得困难的唯一ID。看看附件,以便你们可以了解我的问题。
http://s26.postimg.org/p8v0zhemx/image.png
提前非常感谢你。
编辑: 对于使用listview的未来研究人员,这是我的MySQL查询。
我设法从脑子里拔出来的查询。
"SELECT empno, line1, time1, line2, time2, line3, time3, line4, time4, line5, time5, line6, time6 FROM attendancelist WHERE empno = '" & ListPayroll.SelectedItems(0).Text & "' AND line1 = '" & ListPayroll.SelectedItems(0).SubItems(1).Text & "'"
答案 0 :(得分:0)
如果您需要的是更新和删除的任意唯一标识符(如注释中所示),则添加一个:
ALTER TABLE my_table
ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY;
当然,这是假设你有这种能力或者可以说服那些做过的人。这是一个非常小的变化。如果在现有INSERT
查询中指定了列名,则不需要对其进行更改。有人应该愿意这样做。
如果您可以自由修改架构,请考虑修改架构。这是非常非常糟糕的设计(具有包含多条信息的重复列和列)。如果您无法修改此模式,则创建新的,设计更好的模式并从此模式导入数据可能是您要考虑的另一个选项。 (也可以使用一组单独的表来创建“新模式”。)
另请注意,使用当前结构,您将需要极其繁重的验证代码端,以防止用户在修改无效数据时保存它们。
答案 1 :(得分:0)
在我看来,您的样本数据表包含大量的出勤数据,基本上如下所示:
employee workdate starttime endtime
00117 2014-02-03 08:15 17:30
00117 2014-02-04 09:00 17:30
00117 2014-02-05 null null
etc.
如果员工在某一天缺席,则在开始时间和结束时间由空值表示。如果员工在特定日期根本没有受雇,那么您只需将该行完全排除在表外。我认为这是样本数据第一行中员工00001的前五天意味着 - 不存在,不存在。
您的原始数据排列在一个非常不方便的报告布局中,每行放置一周的工作日。您可以编写一个简单的dotnet程序来填充您的六天周输入表,并从该表的每一行插入六行(或更少)此数据。
从该输入表加载数据后,您可以切换到在新表中维护它。这对于你在程序中处理来说会容易得多。您还可以编写一个查询程序,重新创建您的六天行报告,如果这是您的用户喜欢的。
安排我展示它的方式,你会得到一个很好的小出勤表。如果您提前知道每个员工每天最多只有一条记录,则可以使用我显示的列,并使用由(employee,workdate)组成的复合主键。
如果每个员工每个日期可能有多行,则需要添加一个id列,该列可以是自动增量的代理主键。