try
{
/* QUERY TO COMPLETE PAGE 13*/
sqlCodeOther = @"SELECT
a.objectID,
LTRIM(RTRIM(a.att12)) 'LastName',
LTRIM(RTRIM(a.att32)) 'FirstName',
LTRIM(RTRIM(a.att42)) 'ID',
LTRIM(RTRIM(b.att65)) 'Car Name',
LTRIM(RTRIM(b.att45)) 'Pol Number'
FROM [db].dbo.stance1029 a LEFT OUTER JOIN [db].dbo.stance1048 b ON a.objectid = b.fk14";
}
catch (Exception ce)
{
}
using (SqlCommand command = new SqlCommand(sqlCodeOther, Conn))
{
command.CommandType = CommandType.Text;
using (reader = command.ExecuteReader())
{
if (reader.HasRows)
{
isDone = true;
if (reader.Read())
{
//fills in PDF form fields (ROW 1)
pdfFormFields.SetField("PROFLIABILITYCARRIERpg13", reader.GetValue(4).ToString()); //117
pdfFormFields.SetField("PROFLIABILITYCARRIER2pg13", reader.GetValue(4).ToString()); //191
pdfFormFields.SetField("POLICYNUMBERpg13", reader.GetValue(5).ToString()); //323
//fills in PDF form fields (ROW 2)
//HOW TO?
//pdfFormFields.SetField("PROFLIABILITYCARRIERpg14", reader.GetValue(?).ToString()); //145
//pdfFormFields.SetField("PROFLIABILITYCARRIER2pg14", reader.GetValue(?).ToString()); //356
//pdfFormFields.SetField("POLICYNUMBERpg14", reader.GetValue(?).ToString()); //512
}
}
}
reader = null;
}
以上C#代码正在查询并填充包含数据的PDF表单字段。我遇到的问题是查询可能会返回多行但是现在我只能读取第一行并填充PDF表单。然后,如何获取第二行并填充表单的另一部分,依此类推,直到我读完所有行并填充PDF表单中的相应部分?
答案 0 :(得分:3)
而不是
if (reader.Read())
使用
while(reader.Read())
为了处理不同的pdf字段,您可以尝试以下方法:
int rowNum = 13;
while(reader.Read())
{
pdfFormFields.SetField("PROFLIABILITYCARRIERpg" + rowNum.ToString(), reader.GetValue(4).ToString());
pdfFormFields.SetField("PROFLIABILITYCARRIER2pg" + rowNum.ToString(), reader.GetValue(4).ToString());
pdfFormFields.SetField("POLICYNUMBERpg" + rowNum.ToString(), reader.GetValue(5).ToString());
rowNum++;
}
以上将取决于您是否希望相同的SQL字段到相同的pdf字段,但只根据行的索引更改字段的索引...
答案 1 :(得分:3)
要读取多行,您需要迭代。将您的if
替换为while
,如:
while (reader.Read())
如果只是尝试将硬编码字符串分配给变量,则不应该在sqlCodeOther
内包含try-catch
初始化。