asp.netでクリスタルレポートを作成しました。私のデータベースは MS-Access 2007 です。データセットを使用してレポートをデータベースに接続します。プログラムを実行すると、「データベースへのログオンに失敗しました」というエラーが表示されます。
この問題を解決する方法...
助けてください..
よろしくアビシェーク
asp.netでクリスタルレポートを作成しました。私のデータベースは MS-Access 2007 です。データセットを使用してレポートをデータベースに接続します。プログラムを実行すると、「データベースへのログオンに失敗しました」というエラーが表示されます。
この問題を解決する方法...
助けてください..
よろしくアビシェーク
データセットにどのように接続できるかわかりません。あなたの投稿から、おそらくデータセットにデータを入力し、このデータセットを使用してレポートとのデータバインディングを行っていると思います。
その場合、データセット内のテーブルに名前を付ける必要があります。
データセット内のテーブルの名前は、レポートが設計されているテーブルまたはビューと正確に一致する必要があります。そうしないと、Crystal レポートはそれを見つけることができません。
ds.Tables[0].Name="yourTableorViewNameHere";
また、レポートにログイン情報を提供する必要があります。
private void myLogonInfo(CrystalDecisions.CrystalReports.Engine.ReportDocument myReport)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo();
string server = "MyServer";
string userID = "User1";
string passwd = "MyPw";
string DBNAME = "MyDB";
int i = 0;
for (i = 0; i <= myReport.Database.Tables.Count - 1; i++)
{
logOnInfo.ConnectionInfo.ServerName = server;
logOnInfo.ConnectionInfo.UserID = userID;
logOnInfo.ConnectionInfo.Password = passwd;
logOnInfo.ConnectionInfo.DatabaseName = DBNAME;
myReport.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
}
}
編集
レポートを初期化するコードは次のとおりです。
private void ShowRep(dataset ds)
{
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load(Server.MapPath("MyReport.rpt"));
//either assign the dataset to the report here
rptDoc.SetDataSource(ds);
//or provide the login details
//myLogonInfo(rptDoc);
//assign record filtering here
//rptDoc.RecordSelectionFormula = "{RDNewCollections.tdate}>=" + GetCrystalDate(ffdt.Text) ;
// set some report parameters
rptDoc.SetParameterValue(0, ffdt.Text);
rptDoc.SetParameterValue(1, tdt.Text);
//finally assign the report to the reportviewer
Crv.ReportSource = rptDoc;
}
これは、ページの読み込みから呼び出すことができます。
データセットを使用している場合は、logonifo を渡す必要はありません。データセットを使用していない場合は、logoninfo を呼び出す必要があります。
Accessでdbファイルを開き、オプションに移動してからクライアントに移動します。
その後、それは機能します。