1

我有一份每周更新的报告,需要推送到 30 多台 PC,而且这个数字每周都在增加。我试图弄清楚如何获取 Access 数据库并将文件从我们服务器上的某个位置推送到所有这些 PC,但我无法理解如何去做。我打算使用复制命令,然后在字符串中使用 PC ID 的值并将其输入到文件路径中。这比我习惯使用的要先进一点。这是我到目前为止所拥有的:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'database1DataSet1.PCID_List' table. You can move, or remove it, as needed.
            this.pCID_ListTableAdapter.Fill(this.database1DataSet1.PCID_List);

        }

        private void button_Close_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        static void button_Run_Click(object sender, EventArgs e)
        {
            string reportLocationCopy = @"Location TBD";
            string repLoc = @"Location TBD";
            if (File.Exists(repLoc))
            {
                // If file already exists in destination, delete it
                if (File.Exists(reportLocationCopy))
                    File.Delete(reportLocationCopy);
                File.Copy(repLoc, reportLocationCopy);
            }
        }
    }
}
4

4 回答 4

1

我要做的是:

打开选择所需信息的数据库连接。然后使用 sqldata 适配器/数据表来绘制行数。然后我会编写一个使用这些 PC 并发送更新文件的 foreach 语句。所以从我的头顶上...

 //select query here and your connectionstring
 //then fill table as seen below
 SqlDataAdapter sDA = new SqlDataAdapter(query, connectionString);
 DataTable table = new DataTable();
 sDA.Fill(table);

 foreach (DataRow row in table.Rows)
 {
    string pc = (row["PCs"].ToString());
     //send files
 }
于 2012-07-18T16:02:55.307 回答
1

这将是一个选择:
随着客户端 PC 的数量每周都在增长,您为什么不尝试编写 Web 服务。它将提供便利和集中管理。
现在你有两种情况:

  • 如果您在 Intranet 上工作,请在 IIS 上本地托管您的 WCF 服务。
  • 如果您有网站然后为此创建网络服务,那么您基于互联网的远程客户端可以访问您的数据。

你可能需要三样东西:

  1. WCF 服务
  2. IIS 托管
  3. 客户端应用程序
于 2012-07-18T16:06:33.670 回答
0

蓝天的想法在这里,出于安全原因,这可能是不可能的。您可以将数据库文件推送到其他机器也引用的 Dropbox 帐户吗?这将在更新数据库文件时提供机器的快速同步。

物有所值...

于 2012-07-18T15:49:41.180 回答
0

如果这是在企业中,您的系统管理员将拥有可以推送到每台 PC 的工具。我做过类似的事情来推送应用程序版本,它们可以编写任何你需要的脚本。

在 serverfault 或everythingsysadmin 等系统管理员论坛上发布问题可能是值得的。

如果您真的不喜欢管理分发,您可以让您的应用程序调用 Web 服务或在启动时检查共享驱动器以获取文件的较新版本并下载它(ftp 或直接副本)。

让客户端进行查找以避免诸如 PC 不可用之类的问题。它还允许客户在匆忙时取消加载。没有什么比在您快速需要某些东西时强制更新更糟糕的了!

于 2012-07-18T15:56:20.753 回答