本帖最后由 jingherong 于 2009-07-28 22:57:01 编辑

解决方案 »

  1.   


    if (saveFileDialog1.FileName.EndsWith(".dbf"))
    {
    string alldir = saveFileDialog1.FileName;
    string tableName = alldir.Split(new char[]{'\\'})[alldir.Split(new char[]{'\\'}).Length-1];
    string dir = alldir.Replace("\\"+tableName,"");
    DataTable dt = ((DataSet)this.uGridInvTransline.DataSource).Tables[0];
    dt.TableName = tableName;
    DBaseConnection dBase = new DBaseConnection(dir);
    rtn = dBase.ExpToFile(dt,out errCode,out errMsg);
    if (rtn != 0)
    {
    this.SetErrorInfo(errMsg);
    return;
    }
    }
      

  2.   

    #region 自定义变量属性
    private string filePath = null;
    private string connStr=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=dBASE IV;User ID=Admin;Password=;";
    private OleDbConnection conn = null;
    private OleDbCommand cmd = null;
    #endregion
    #region 实例化入口
    /// <summary>
    /// 控制DBase文件类
    /// </summary>
    /// <param name="filePath">需要操作的Dbase文件的文件夹路径</param>
    public DBaseConnection(string directory)
    {
    filePath = directory;
    connStr = string.Format(connStr,filePath);
    conn = new OleDbConnection(connStr);
    cmd = new OleDbCommand();
    cmd.Connection = conn;
    }
    #endregion
      

  3.   


    lz 你说的这个方法我试过了是可以生成dbf文件但是这个文件无法在access2007中打开,但是在2003中看是正常的,同事我把Extended Properties参数的值都试了下,还是不行,我的写法是
            string ole_connstring =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;Extended Properties=dBASE IV;User ID=Admin;Password=";
                OleDbConnection ole_conn = new OleDbConnection(ole_connstring);
                ole_conn.Open();
                OleDbCommand cmd1 = new OleDbCommand("Create Table TestTable2 (Field1 int, Field2 char(10))", ole_conn);                      File.Delete(@"d:\TESTTABL.DBF");              
                cmd1.ExecuteNonQuery();            
                ole_conn.Close();希望老总帮看下错在那里了
      

  4.   

    #region Creat file 
    /// <summary>
    /// 创建数据文件
    /// </summary>
    /// <param name="dt">需要创建的数据</param>
    /// <param name="errMsg"></param>
    /// <returns></returns>
    private int CreatFile(DataTable dt,out string errCode,out string errMsg)
    {
    errCode = null;errMsg = null;int rtn = 0;
    try
    {
    //需创建的文件名称
    string fileName = dt.TableName+".dbf";
    //判断文件是否存在
    DirectoryInfo dir = new DirectoryInfo(filePath);
    if (dir != null)
    {
    if (dir.GetFiles(fileName).Length > 0)
    {
    //已经存在则删除原有数据
    rtn = this.ExcCommandText("drop table "+dt.TableName,out errCode,out errMsg);
    if (rtn != 0)
    {
    return rtn;
    }
    }
    }
    //构建创建文件数据结构语句
    string sqlCreat = "create table "+dt.TableName +"({0})";
    string columns = "";
    foreach (DataColumn col in dt.Columns)
    {
    columns += col.ColumnName;
    columns += " char(100),";
    }
    columns = columns.Remove(columns.Length-1,1);
    sqlCreat = string.Format(sqlCreat,columns); rtn = ExcCommandText(sqlCreat,out errCode,out errMsg);
    if (rtn != 0)
    {
    return rtn;
    }
    //导入数据
    foreach (DataRow row in dt.Rows)
    {
    string sqlInsert = "insert into "+ dt.TableName + " values({0})";
    string invalues = "";
    foreach (DataColumn col in dt.Columns)
    {
    invalues += "'"+row[col].ToString()+"',";
    }
    invalues = invalues.Remove(invalues.Length-1,1);
    sqlInsert = string.Format(sqlInsert,invalues);
    rtn = ExcCommandText(sqlInsert,out errCode,out errMsg);
    if (rtn != 0)
    {
    return rtn;
    }
    }
    return rtn;
    }
    catch (System.Exception e)
    {
    errMsg = e.Message+"|"+e.StackTrace;
    return -1;
    }
    }
    #endregion
      

  5.   

    我们还在用2003.....c#和office都是....