解决方案 »

  1.   

    http://zhidao.baidu.com/question/238321243.html看下这个思路
      

  2.   

    @w958796636   回复1#楼:  access数据库没有加密码,程序也访问数据库了,数据都取到了,也处理了。
    @wind_cloud2011  回复2#楼:  access可以打开...我用的.xsd DataSet文件来传送数据集的...   在别的电脑上做了的,可以访问,换个电脑就不行了。
      

  3.   

    @Regan-lin  回复3#楼:  我做的思路基本跟他的差不多,我专门写了个类专门负责访问数据库,数据取到了,貌似是在执行
    CryView.ReportSource = myrpt;
    CryView.RefreshReport();
    这个之后才弹出登录提示的...
    我用的是access不是sqlserver , 也没有设置密码。 添加密码我也试过,提示用户名、密码不正确....   
      

  4.   


    //用这个方式试试
            // 读取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;
      

  5.   

    感谢@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();
        }