c#开发注意事项

来源:互联网 发布:网络模式切换 编辑:程序博客网 时间:2024/05/29 18:32



一、WIN7X64位使用.accdb的数据库
  1. WIN7X64位下使用Microsoft Access JET4.0驱动,提示未注册,不能打开MDB文件,可使用Microsoft Office Access ACE 12.0驱动,打开accdb的数据库,可在Offfic access2007(2010)中新建辍为.accdb的数据库。

  2. 如果系统为WIN7 32位的,先下载AccessDatabaseEngine.exe驱动安装文件,直接安装即可。

  3. 如果WIN7X64位预装的OFFICE201032位软件,请按下面的步骤操作,下载AccessDatabaseEngine_X64.exe安装文件,然后,使用命令cmd.exe打开命令窗口,在窗口中输入:”d:\my\AccessDatabaseEngine_X64.exe” /passive,按回车,安装。进入注册表将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths下的MSO.DLL项删除。

    二、水晶报表的在c#开发中的注意事项

1、打开解决方案中的App.config文件中的内容,修改为<configuration>

 <startupuseLegacyV2RuntimeActivationPolicy="true">//这里为修改的内容,如不修改不能读取数据库

   <supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.0"/>

 </startup>

 

2、使用DataSet数据集创建连接,在报表中使用数据库专家添加到制作的RPT报表中,拖拉字段,进行布局。如果在WIN7X64位系统中不使用这个方法制表,而使用其他方式连接数据库制表,在加载时将出现“无法加载数据库信息”的错误。

3、保存信息:

 try

               {

                   stringstrCon=@" Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source= " +Application.StartupPath+"\\hjzqz.mdb;Persist Security Info=False";

                   OleDbConnectionmyConn=newOleDbConnection(strCon);

 

                   stringstrCom=Xinxi_Tiqu();//提取连接字符

                  // myDataSet = new DataSet();

                   myConn.Open();

                   OleDbCommandmyCommand=newOleDbCommand(strCom,myConn);

                   

                  // myCommand.Fill(myDataSet, "hjzqz");

                   stringjilu=myCommand.ExecuteNonQuery().ToString();

                   myConn.Close();

                   if (jilu=="1")

                   {

                       kaishihao1=kaishihao;

                       xinbh= (Convert.ToInt64(kaishihao1)+ 1).ToString();

                       if(xinbh!="")

                       {

                           conf.SetIni("section","kaishihao",xinbh,pathfile);//保存新的编号到INI

                       }

                       MessageBox.Show("保存申请信息成功,可以开始打印!","提示");

                       returntrue;

 

                   }

                   else

                   {

                       MessageBox.Show("保存申请信息失败!你将不能打印出申请表!","提示");

                       returnfalse;

 

                   }

 

 

 publicvoidPrintSQB()//打印

       {

           try

           {

               GetConnect("zqz",3);

               CryZqzcrl=newCryZqz();

               crl.SetDataSource(myDataSet.Tables[0]);

             

// crl.PrintOptions.PrinterDuplex =CrystalDecisions.Shared.PrinterDuplex.Vertical;//双面打印 Horizontal为上翻

            //  crl.PrintToPrinter(1, true, 0, 0);//直接打印

 RptViewrptw=newRptView();

 

               rptw.crystalReportViewer1.ReportSource=crl;

               rptw.Show();

}

//数据库连接

  privatevoidGetConnect(stringtablename,intfs)

 

       {

           stringstrCon=@" Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source= " +Application.StartupPath+"\\hjzqz.mdb;Persist Security Info=False";

           OleDbConnectionmyConn=newOleDbConnection(strCon);

           stringstrCom="";

           try

           {

             // string strCon =" Provider = Microsoft.Jet.OLEDB.4.0 Data Source = " + Application.StartupPath +"\\hjzqz.mdb"; 

               switch(fs)

               {

                   case 1:

                      strCom=" SELECT * FROM " +tablename;

                       break;

                   case 2:

                       strCom=" SELECT top 10 * FROM " +tablename +" order by id desc";

                      break;

                   case3:

                      strCom=" SELECT top 1 * FROM " +tablename+" order by id desc";

                      break;

                   default:

                         break;

 

               }

             

               myDataSet = newDataSet();

               myConn.Open();

 

               OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);

               myCommand.Fill(myDataSet,"pcs");

               myConn.Close();

           }

           catch

           {

               myConn.Close();

               MessageBox.Show("连接数据库失败!");

           }

         

       }

 

       privatevoidDelaye(intiInterval)

       {

           DateTimenow =DateTime.Now;

           while(now.AddMilliseconds(iInterval)>DateTime.Now)

           {

               Application.DoEvents();

 

           }

           return;

       }

0 0
原创粉丝点击