我如何循环遍历 sql 结果以使用 itextsharp 填充 pdf
how do i loop through sql results to populate a pdf using itextsharp
我正在尝试使用 iTextSharp 从多个 SQL 查询中填充 PDF。
要填写表格的第 1 部分,即查询 returns 1 name,对于第二部分,我需要遍历我的结果,这是我遇到了一些麻烦的地方。
using (var connection2 = new SqlConnection("Data Source=PUMA; Initial Catalog=CACTUS; User ID=somethinguser; Password=digital; Connection Timeout=50"))
{
using (var command2 = connection2.CreateCommand())
{
command2.CommandText = "SELECT * from MikeACATest WHERE SSN = " + SSN + "and RELATIONCODE <> '01'";
connection2.Open();
using (var reader2 = command2.ExecuteReader())
{
while (reader2.Read())
{
var dNAME = reader2.GetValue(reader2.GetOrdinal("NAME"));
var dDOB = reader2.GetValue(reader2.GetOrdinal("DOB"));
var dP2_16_ALL = reader2.GetValue(reader2.GetOrdinal("P2_16_ALL"));
var dP2_16_1 = reader2.GetValue(reader2.GetOrdinal("P2_16_1"));
var dP2_16_2 = reader2.GetValue(reader2.GetOrdinal("P2_16_2"));
var dP2_16_3 = reader2.GetValue(reader2.GetOrdinal("P2_16_3"));
var dP2_16_4 = reader2.GetValue(reader2.GetOrdinal("P2_16_4"));
var dP2_16_5 = reader2.GetValue(reader2.GetOrdinal("P2_16_5"));
var dP2_16_6 = reader2.GetValue(reader2.GetOrdinal("P2_16_6"));
var dP2_16_7 = reader2.GetValue(reader2.GetOrdinal("P2_16_7"));
var dP2_16_8 = reader2.GetValue(reader2.GetOrdinal("P2_16_8"));
var dP2_16_9 = reader2.GetValue(reader2.GetOrdinal("P2_16_9"));
var dP2_16_10 = reader2.GetValue(reader2.GetOrdinal("P2_16_10"));
var dP2_16_11 = reader2.GetValue(reader2.GetOrdinal("P2_16_11"));
var dP2_16_12 = reader2.GetValue(reader2.GetOrdinal("P2_16_12"));
for (int i = 17; i < Convert.ToInt32(3) + 17; i++)
{ //pdfFormFields declared earlier
pdfFormFields.SetField("Part[3]." + i + "a.CoveredUserName", dNAME.ToString());
pdfFormFields.SetField("Part[3]." + i + "c.CoveredUserDOB", dDOB.ToString());
pdfFormFields.SetField("Part[3]." + i + "d.cb.CoveredMonths[All]", dP2_16_ALL.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Jan]", dP2_16_1.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Feb]", dP2_16_2.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Mar]", dP2_16_3.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Apr]", dP2_16_4.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[May]", dP2_16_5.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[June]", dP2_16_6.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[July]", dP2_16_7.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Aug]", dP2_16_8.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Sept]", dP2_16_9.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Oct]", dP2_16_10.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Nov]", dP2_16_11.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Dec]", dP2_16_12.ToString());
reader2.NextResult();
}
}
}
connection2.Close();
}
}
pdfStamper.FormFlattening = false;
pdfStamper.Close();
}
此代码的问题是命令查询 "SELECT * from MikeACATest WHERE SSN = " + SSN + "and RELATIONCODE <> '01'";
returns 3 个名字:Debra、Parker 和 Sarah。
我需要做的是计算显示的名称数量并遍历每个名称,填充 PDF。我知道如何填充 PDF,但我的问题是循环查询。
在我的 for 循环中(顺便说一句,这不起作用),我硬编码了数字 3,所有 3 个名字都是妻子的名字 (http://imgur.com/f4diZk4)。
成功了
reader2.NextResult();
导致了这个问题,因为这意味着同时进行多个搜索查询,例如 select * from groupA; select....
我正在尝试使用 iTextSharp 从多个 SQL 查询中填充 PDF。 要填写表格的第 1 部分,即查询 returns 1 name,对于第二部分,我需要遍历我的结果,这是我遇到了一些麻烦的地方。
using (var connection2 = new SqlConnection("Data Source=PUMA; Initial Catalog=CACTUS; User ID=somethinguser; Password=digital; Connection Timeout=50"))
{
using (var command2 = connection2.CreateCommand())
{
command2.CommandText = "SELECT * from MikeACATest WHERE SSN = " + SSN + "and RELATIONCODE <> '01'";
connection2.Open();
using (var reader2 = command2.ExecuteReader())
{
while (reader2.Read())
{
var dNAME = reader2.GetValue(reader2.GetOrdinal("NAME"));
var dDOB = reader2.GetValue(reader2.GetOrdinal("DOB"));
var dP2_16_ALL = reader2.GetValue(reader2.GetOrdinal("P2_16_ALL"));
var dP2_16_1 = reader2.GetValue(reader2.GetOrdinal("P2_16_1"));
var dP2_16_2 = reader2.GetValue(reader2.GetOrdinal("P2_16_2"));
var dP2_16_3 = reader2.GetValue(reader2.GetOrdinal("P2_16_3"));
var dP2_16_4 = reader2.GetValue(reader2.GetOrdinal("P2_16_4"));
var dP2_16_5 = reader2.GetValue(reader2.GetOrdinal("P2_16_5"));
var dP2_16_6 = reader2.GetValue(reader2.GetOrdinal("P2_16_6"));
var dP2_16_7 = reader2.GetValue(reader2.GetOrdinal("P2_16_7"));
var dP2_16_8 = reader2.GetValue(reader2.GetOrdinal("P2_16_8"));
var dP2_16_9 = reader2.GetValue(reader2.GetOrdinal("P2_16_9"));
var dP2_16_10 = reader2.GetValue(reader2.GetOrdinal("P2_16_10"));
var dP2_16_11 = reader2.GetValue(reader2.GetOrdinal("P2_16_11"));
var dP2_16_12 = reader2.GetValue(reader2.GetOrdinal("P2_16_12"));
for (int i = 17; i < Convert.ToInt32(3) + 17; i++)
{ //pdfFormFields declared earlier
pdfFormFields.SetField("Part[3]." + i + "a.CoveredUserName", dNAME.ToString());
pdfFormFields.SetField("Part[3]." + i + "c.CoveredUserDOB", dDOB.ToString());
pdfFormFields.SetField("Part[3]." + i + "d.cb.CoveredMonths[All]", dP2_16_ALL.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Jan]", dP2_16_1.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Feb]", dP2_16_2.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Mar]", dP2_16_3.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Apr]", dP2_16_4.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[May]", dP2_16_5.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[June]", dP2_16_6.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[July]", dP2_16_7.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Aug]", dP2_16_8.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Sept]", dP2_16_9.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Oct]", dP2_16_10.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Nov]", dP2_16_11.ToString());
pdfFormFields.SetField("Part[3]." + i + "e.cb.CoveredMonths[Dec]", dP2_16_12.ToString());
reader2.NextResult();
}
}
}
connection2.Close();
}
}
pdfStamper.FormFlattening = false;
pdfStamper.Close();
}
此代码的问题是命令查询 "SELECT * from MikeACATest WHERE SSN = " + SSN + "and RELATIONCODE <> '01'";
returns 3 个名字:Debra、Parker 和 Sarah。
我需要做的是计算显示的名称数量并遍历每个名称,填充 PDF。我知道如何填充 PDF,但我的问题是循环查询。
在我的 for 循环中(顺便说一句,这不起作用),我硬编码了数字 3,所有 3 个名字都是妻子的名字 (http://imgur.com/f4diZk4)。
成功了
reader2.NextResult();
导致了这个问题,因为这意味着同时进行多个搜索查询,例如 select * from groupA; select....