C# Winform水晶报表连接Access数据库 提示需要登录 Winform水晶报表 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://zhidao.baidu.com/question/238321243.html看下这个思路 @w958796636 回复1#楼: access数据库没有加密码,程序也访问数据库了,数据都取到了,也处理了。@wind_cloud2011 回复2#楼: access可以打开...我用的.xsd DataSet文件来传送数据集的... 在别的电脑上做了的,可以访问,换个电脑就不行了。 @Regan-lin 回复3#楼: 我做的思路基本跟他的差不多,我专门写了个类专门负责访问数据库,数据取到了,貌似是在执行CryView.ReportSource = myrpt;CryView.RefreshReport();这个之后才弹出登录提示的...我用的是access不是sqlserver , 也没有设置密码。 添加密码我也试过,提示用户名、密码不正确.... //用这个方式试试 // 读取mdb数据 public static c ReadAllData(string tableName, string mdbPath) { DataTable dt = new DataTable(); try { DataRow dr; //1、建立连接 string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + "; OleDbConnection odcConnection = new OleDbConnection(strConn); //2、打开连接 odcConnection.Open(); //建立SQL查询 OleDbCommand odCommand = odcConnection.CreateCommand(); //3、输入查询语句 odCommand.CommandText = "select * from " + tableName; //建立读取 OleDbDataReader odrReader = odCommand.ExecuteReader(); //查询并显示数据 int size = odrReader.FieldCount; for (int i = 0; i < size; i++) { DataColumn dc; dc = new DataColumn(odrReader.GetName(i)); dt.Columns.Add(dc); } while (odrReader.Read()) { dr = dt.NewRow(); for (int i = 0; i < size; i++) { dr[odrReader.GetName(i)] = odrReader[odrReader.GetName(i)].ToString(); } dt.Rows.Add(dr); } //关闭连接 odrReader.Close(); odcConnection.Close(); return dt; } catch { return dt; } }DataTable myrpt=ReadAllData(tableName,mdbPath); CryView.ReportSource = myrpt; 感谢@wind_cloud2011再次回复我的问题。现在问题解决了。我专门写了一个访问数据库的类,以前在别的电脑上编译过去都OK,换了个电脑,换了个VS就出问题...试了很多办法都没成功,总是要密码,可是数据我都取到了,就是报表更新数据的时候出的问题。今天又检查了一下,什么也没改动,稀里糊涂的就好了...我推测应该是我更新了一下.xsd的DataSet文件,然后就不需要我登录了... 搞不懂为什么。最后,感谢所有回复的人,谢谢你们。贴出部分代码。 class OleDbHelper { private OleDbConnection conn; private OleDbDataAdapter oda = new OleDbDataAdapter(); private OleDbCommand cmd; private DataSet ds = new DataSet(); public OleDbHelper(string FilePath, string FileName) { string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; strconn += FilePath +@"\"+ FileName; conn = new OleDbConnection(strconn); } public DataSet getData(string strSQL) { oda = new OleDbDataAdapter(strSQL, conn); oda.Fill(ds); return ds; } public bool setData(string strSQL) { conn.Open(); cmd = new OleDbCommand(strSQL, conn); cmd.ExecuteNonQuery(); conn.Close(); return true; } //批量更新数据 public bool setDs(DataTable dt) { OleDbCommandBuilder builder = new OleDbCommandBuilder(oda); oda.UpdateCommand = builder.GetUpdateCommand(); if (myds.HasChanges()) { try { oda.Update(dt); } catch (Exception ex) { throw ex; //return false; } return true; } else { return false; } } }..........前台页面加载数据及报表 //加载报表 private DataSet ds; private ReportDocument rd; private readonly string sqlTail = "SELECT * FROM Goods"; private void LoadData() { ds = dbhelper.getData(strSql); rd = new ReportDocument(); rd.Load(reportPath); rd.SetDataSource(ds); this.crystalReportViewer1.ReportSource = rd; this.crystalReportViewer1.RefreshReport(); } 一段扫描端口的代码,希望高人帮我改一个小bug c#中画图要用到什么控件 XML文件编辑问题! 关于Socket,服务器端可以采用异步接收发送端同步发送的消息或文件吗? GridView Web Form 中,Treeview的节点check被选中,如何让它下面的子节点也选中? winform组件问题 锁定对象内存地址的问题 textbox内容如何与dgv一起打印出来? 摄像头一秒钟能摄取几张图? C#的程序,里面有很多ABCDEF,求指导,求反编译方法 求和
@wind_cloud2011 回复2#楼: access可以打开...我用的.xsd DataSet文件来传送数据集的... 在别的电脑上做了的,可以访问,换个电脑就不行了。
CryView.ReportSource = myrpt;
CryView.RefreshReport();
这个之后才弹出登录提示的...
我用的是access不是sqlserver , 也没有设置密码。 添加密码我也试过,提示用户名、密码不正确....
//用这个方式试试
// 读取mdb数据
public static c ReadAllData(string tableName, string mdbPath)
{
DataTable dt = new DataTable();
try
{
DataRow dr;
//1、建立连接
string strConn
= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + "; OleDbConnection odcConnection = new OleDbConnection(strConn);
//2、打开连接
odcConnection.Open();
//建立SQL查询
OleDbCommand odCommand = odcConnection.CreateCommand();
//3、输入查询语句
odCommand.CommandText = "select * from " + tableName;
//建立读取
OleDbDataReader odrReader = odCommand.ExecuteReader();
//查询并显示数据
int size = odrReader.FieldCount;
for (int i = 0; i < size; i++)
{
DataColumn dc;
dc = new DataColumn(odrReader.GetName(i));
dt.Columns.Add(dc);
}
while (odrReader.Read())
{
dr = dt.NewRow();
for (int i = 0; i < size; i++)
{
dr[odrReader.GetName(i)] = odrReader[odrReader.GetName(i)].ToString();
}
dt.Rows.Add(dr);
}
//关闭连接
odrReader.Close();
odcConnection.Close();
return dt;
}
catch
{
return dt;
}
}
DataTable myrpt=ReadAllData(tableName,mdbPath);
CryView.ReportSource = myrpt;
现在问题解决了。我专门写了一个访问数据库的类,以前在别的电脑上编译过去都OK,换了个电脑,换了个VS就出问题...
试了很多办法都没成功,总是要密码,可是数据我都取到了,就是报表更新数据的时候出的问题。
今天又检查了一下,什么也没改动,稀里糊涂的就好了...
我推测应该是我更新了一下.xsd的DataSet文件,然后就不需要我登录了... 搞不懂为什么。最后,感谢所有回复的人,谢谢你们。贴出部分代码。 class OleDbHelper
{
private OleDbConnection conn;
private OleDbDataAdapter oda = new OleDbDataAdapter();
private OleDbCommand cmd;
private DataSet ds = new DataSet();
public OleDbHelper(string FilePath, string FileName)
{
string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; strconn += FilePath +@"\"+ FileName;
conn = new OleDbConnection(strconn);
} public DataSet getData(string strSQL)
{
oda = new OleDbDataAdapter(strSQL, conn);
oda.Fill(ds);
return ds;
} public bool setData(string strSQL)
{
conn.Open();
cmd = new OleDbCommand(strSQL, conn);
cmd.ExecuteNonQuery();
conn.Close();
return true;
} //批量更新数据
public bool setDs(DataTable dt)
{
OleDbCommandBuilder builder = new OleDbCommandBuilder(oda);
oda.UpdateCommand = builder.GetUpdateCommand(); if (myds.HasChanges())
{
try
{
oda.Update(dt);
}
catch (Exception ex)
{
throw ex;
//return false;
}
return true;
}
else
{
return false;
}
}
}....
......
前台页面加载数据及报表
//加载报表
private DataSet ds;
private ReportDocument rd;
private readonly string sqlTail = "SELECT * FROM Goods"; private void LoadData()
{
ds = dbhelper.getData(strSql);
rd = new ReportDocument();
rd.Load(reportPath);
rd.SetDataSource(ds); this.crystalReportViewer1.ReportSource = rd;
this.crystalReportViewer1.RefreshReport();
}