如题!

解决方案 »

  1.   

    我个人认为,这是一个数据一致性问题,数据保存在哪,要保存几个地方,无论是什么格式,都不是大问题,最多是重复几次就行了,但根本问题是该如何保证数据的一致性,不能说在一个地方存储没有问题,但在第二个地方就出问题了,这样,二个地方的数据就不致性了.基于此,建议如下:1.把源数据放在DATASET中
    2.新建一个DATASET,它与源数据具有相同的数据结构和数据
    3.对新建DATASET按目标数据库的要求进行各种操作,并保存.若成功,则记录,若不成功,则回滚.
    4.若上一步成功,则继续下一个保存;若不成,有几个选择:
    4.1删除以往的数据:
    4.2继续下一个数据保存
    4.3中止,并记录错误此时,你有源数据的各种状态,有数据保存的成功与否,对如何保证一致性就比较容易了
      

  2.   

    :zdhsnail 
    我现在可以保存在本机上了,而且用了事务来处理数据一致性的问题.
    主要是不知道怎么保存到服务器上去?
      

  3.   

    那你不如做个CS程序。通过CS程序来发布你的信息。这样可以实现本地和服务器同时操作。
      

  4.   

    :iuhxq 
    能不能说详细点啊 
      

  5.   

    曾经写或一个WEB打印方法可以借鉴一下,DataTable 中数据可以从服务器或本地读取,但本地读取数据的需要认证或者第三方插件了
            /// <summary>
            /// 打印
            /// </summary>
            /// <param name="dt">打印表</param>
            /// <param name="sError">错误</param>
            /// <returns></returns>     
            public static string WebPrint(DataTable dt, out string sError)
            {
                StringBuilder Sbder = new StringBuilder();            sError = "";
                //"<html> <body><form id='Form1' method='post' runat='server'>"+
                string colHeaders = "<object id='WebBrowser'width=0 height=0 classid='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2' VIEWASTEXT></object>"
                    + "<table border=1 cellpadding='0' cellspacing='0' bordercolor='#000000'><tr>";
                if (dt == null)
                {
                    sError = "无法打印";
                    return sError;
                }            for (int i = 0; i < dt.Columns.Count; i++)
                {
                    colHeaders += "<td align=\"center\">" + dt.Columns[i].ColumnName + "</td>";
                }
                colHeaders += "</tr>";
                Sbder.Append(colHeaders);
                for (int r = 0; r < dt.Rows.Count; r++)
                {
                    Sbder.Append("<tr>");
                    for (int c = 0; c < dt.Columns.Count; c++)
                    {
                        Sbder.Append("<td>");
                        object obj = dt.Rows[r][c] == System.DBNull.Value ? "&nbsp;" : dt.Rows[r][c];
                        Sbder.Append(obj);
                        Sbder.Append("</td>");
                    }
                    Sbder.Append("</tr>");
                }
                Sbder.Append("</table>");
                //Sbder.Append("</form></body></html>");
                colHeaders = Sbder.ToString();
                colHeaders += "<script language='javascript'>document.all.WebBrowser.ExecWB(7,1); window.opener=null;window.close();</script>";
                return (colHeaders);
            }
      

  6.   

    c/s就模式就方便了,可以通过WEBSERVRICE传输数据,下载数据,打印本地
      

  7.   

    c/s模式以前写过下载打印模板可以借鉴一下下载数据需要改动
            public static string FilePath(string webpath,string name) 
            {            //RegistryKey pRegKey = Registry.CurrentUser;
                RegistryKey RegKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\MICROSOFT\\WINDOWS\\CURRENTVERSION\\EXPLORER\\SHELL FOLDERS");            string dirPath = RegKey.GetValue("Desktop").ToString() +@"\"+"文件夹";
                if (!Directory.Exists(dirPath))
                {
                    Directory.CreateDirectory(dirPath);
                }
                string filePath = dirPath+@"\"+name;            System.Net.WebClient client = new System.Net.WebClient();
                string webPlace = 虚拟目录名称+name;
                if (!File.Exists(filePath))
                {
                    client.DownloadFile(webpath.Replace("Service.asmx", webPlace), filePath);
                }
                else
                {
                    if (MessageBox.Show("本地已经存在打印模板,是否重新下载?",
                            "提示",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                    {
                        client.DownloadFile(webpath.Replace("Service.asmx", webPlace), filePath);
                    }            }
                return filePath;
            }