Itext: перебирать строки и получать связанные значения - PullRequest
0 голосов
/ 07 мая 2018

Моя база данных выглядит следующим образом:

лицо

  • PersonID
  • Имя

Animal

  • AnimalID
  • PersonID
  • PetName

Я пытаюсь экспортировать своих людей и связанных с ними животных в PDF.

* * 1 022 Пример: * 1 023 *

Джон Доу:

  • animal1
  • animal2

Боб:

  • Animal2
  • Animal3

(животные могут быть связаны с одним и тем же лицом).

У меня проблема с модулем экспорта iTextSharp в PDF, поскольку мне не удалось найти случаи, когда обрабатывается принцип объединения.

Теперь я могу без проблем экспортировать своих людей, извлекая их из SQL и помещая в DataTable, который я реализую следующим образом:

DataTable dt = getPersons();
iTextSharp.text.Document document = new iTextSharp.text.Document();

PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("C:\\sample.pdf", FileMode.Create));
document.Open();

table.SetWidths(widths);

table.WidthPercentage = 100;
int iCol = 0;
string colname = "";
PdfPCell cell = new PdfPCell(new Phrase("Persons:"));

cell.Colspan = dt.Columns.Count;

foreach (DataColumn c in dt.Columns)
{

    table.AddCell(new Phrase(c.ColumnName, font5));
}

foreach (DataRow r in dt.Rows)
{
    if (dt.Rows.Count > 0)
    {
        table.AddCell(new Phrase(r[0].ToString(), font5));
        table.AddCell(new Phrase(r[1].ToString(), font5));
        table.AddCell(new Phrase(r[2].ToString(), font5));
        table.AddCell(new Phrase(r[3].ToString(), font5));
    }
}


document.Add(table);
document.Close();

Это извлекает людей из моей базы данных (как в «ВЫБОР * ОТ человека»).

Однако, как мне реализовать ссылку с животными (для каждого человека) в моем PDF-файле (используя только операторы SQL, поскольку я делаю это во время выполнения только для предварительного просмотра)?

Нужно ли мне работать с двумя таблицами данных или я могу сделать это по-другому?

1 Ответ

0 голосов
/ 07 мая 2018

У вас может быть одна таблица данных, но ваш запрос объединяет две таблицы.

SELECT p.PersonID, p.Name, a.AnimalID, a.PetName 
FROM person AS p
INNER JOIN animal AS a ON p.PersonID = a.PersonID

Чтобы сделать это чисто, вам понадобится новый метод, такой как getPersonsAndAnimals (), который возвращает таблицу данных со столбцами из person и animal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...