私のレポートは、従業員フィールドからの名前のレポートに生データであると私が信じているものを示し続けています。SQLテーブルには正しいデータがありますが、レポートに正しい名前が付いていることはありません。参加した従業員ではなく、常にpkがゼロの従業員が表示されます。expenseHdr
レポートに正しく表示されるため、sフィールドとsフィールドから正しいデータを表示していると思いexpenseDtl
ますが、デバッグ時にクエリにカーソルを合わせると、経費の詳細(レポートのラインアイテム)だけが表示されますが、VisualStudioは初めてです。 。
基本的に、クエリとデータソースの間に接続が切断されているか、結合に問題があるようです。これがデータソースから取得したSQLSELECTで、以下がクエリです。どんな助けでも大歓迎です。
SELECT DISTINCT expenseHdr.rptNo,expenseHdr.description,expenseHdr.purpose,
expenseHdr.reimbursement, expenseHdr.department, expenseHdr.period,
expenseDtl.expDesc, expenseDtl.expType, expenseDtl.expCost,
expenseDtl.expDate, employees.name, expenseDtl.expNo,
expenseDtl.location
FROM (Intranet.dbo.expenseHdr expenseHdr INNER JOIN
Intranet.dbo.expenseDtl expenseDtl ON
expenseHdr.rptNo=expenseDtl.rptNo) INNER JOIN Intranet.dbo.employees
employees ON expenseHdr.empPk=employees.pk
ORDER BY expenseDtl.expNo
private void launchReport(int pKReport)
{
using (DataClasses1DataContext db = new DataClasses1DataContext())
{
var query = (from s in db.expenseHdrs
join d in db.expenseDtls on s.rptNo equals d.rptNo
where s.rptNo == pKReport
join g in db.employees on s.empPk equals g.pk
select new
{
s.period,
s.description,
s.department,
s.rptNo,
s.reimbursement,
s.purpose,
g.name,
d.expDate,
d.expType,
d.expDesc
});
expenseReportMain cr1 = new expenseReportMain();
cr1.FileName = @"\\SRV-NAS\Intranet\Reports\expenseReportMain.rpt";
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "svr-sql";
connectionInfo.DatabaseName = "intranet";
connectionInfo.UserID = "sa";
connectionInfo.Password = "******";
SetDBLogonForReport(connectionInfo, cr1);
cr1.SetDataSource(query);
crystalReportViewer1.ReportSource = cr1;
}
}
private void SetDBLogonForReport(ConnectionInfo connectionInfo,
expenseReportMain reportDocument)
{
Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
また、リクエストごとにいくつかのサンプルデータを編集しました。
expenseHdr expenseDtl employees
rptNo empPk expNo rptNo pK name userid
1 333 3 1 333 Tom tom.b
2 240 4 1 240 Kelly kelly.c
3 542 5 2 542 Jean jean.g
6 3
そのため、employeesテーブルの情報はレポートに正しく表示されません。他の2つのテーブルのデータは正常に表示されます。