我正在用C#和WPF编写一个简单的应用程序来报告。我在sqlite的数据库中有以下表:
Table1:
id
name
amntOne
amntTwo
entryDate
Table2:
id
name
amntOne
amntTwo
location
entryDate
Table3:
id
name
amntOne
amntTwo
location
entryDate
首先,我想要从Table1和Table2中检索数据。 2,我想累积每个具有相同名称的列(例如Table1.amntOne + Table2 + amntOne)。 3,累积后将所有列插入表3.最后,我需要创建html表来填充Table3数据。
我不知道我应该从哪里开始用c#
答案 0 :(得分:0)
好的,所以我想我现在已经足够了。您的SQL查询将如下所示:
SELECT
ids.nameId as id,
t1.name,
IFNULL(t1.amntOne, 0) + IFNULL(t2.amntOne,0) as amntOne,
IFNULL(t1.amntTwo, 0) + IFNULL(t2.amntTwo,0) as amntTwo,
t2.location
FROM
NameIdTable as ids LEFT JOIN Table1 as t1 ON t1.Id = ids.nameId
LEFT JOIN Table2 as t2 ON t2.Id = ids.nameId
WHERE
t1.Id is not null or t2.Id is not null
这将返回表1(t1)或表2(t2)中至少有一个值的结果。它会添加金额。表2(t2)是唯一能够具有位置的表,因此从该处获取值。
结果将是你的Table3。然后,您可以使用结果生成HTML。假设您将结果放在DataTable中。这看起来像这样:
public string GetHtml(DataTable table3)
{
var sb = new StringBuilder();
sb.AppendLine("<table>");
foreach(var row in table3.Rows)
{
sb.AppendLine(" <tr>");
sb.AppendLine($" <td>{row["id"]}</td>");
sb.AppendLine($" <td>{row["name"]}</td>");
sb.AppendLine($" <td>{row["amntOne"]}</td>");
sb.AppendLine($" <td>{row["amntTwo"]}</td>");
sb.AppendLine($" <td>{row["location"]}</td>");
sb.AppendLine(" </tr>");
}
sb.AppendLine("</table>");
return sb.ToString();
}
根据您的需要进行修改。使用上述方法可能还需要为HTML转义名称和位置的值。您可能还想使用XmlDocument
对象来构建HTML。这个答案只是为了指出你正确的方向。