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

これはオプションです:
クライアント PC の数が毎週増えているので、Web サービスを作成してみませんか。使いやすさと集中管理を提供します。
これで、次の 2 つのケースができました。

  • イントラネットで作業している場合は、IIS で WCF サービスをローカルにホストします。
  • Web サイトがある場合は、その Web サービスを作成すると、インターネット ベースのリモート クライアントがデータにアクセスできます。

次の 3 つのものが必要になる場合があります。

  1. WCF サービス
  2. IIS ホスティング
  3. クライアント アプリケーション
于 2012-07-18T16:06:33.670 に答える
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 に答える
0

ここでは青空のアイデアですが、これはセキュリティ上の理由から不可能な場合があります。他のマシンも参照する Dropbox アカウントにデータベース ファイルをプッシュできますか? これにより、データベース ファイルが更新されたときにマシンの同期が迅速に行われます。

その価値のために...

于 2012-07-18T15:49:41.180 に答える
0

これがエンタープライズの場合、システム管理者は各 PC にプッシュできるツールを持っています。私はアプリケーション リリースをプッシュするために同様のことを行ってきました。必要なものは何でもスクリプト化できます。

serverfault や everythingsysadmin などのシステム管理フォーラムに質問を投稿する価値があるかもしれません。

ディストリビューションの管理に本当に夢中になっている場合は、アプリケーションで Web サービスを呼び出すか、起動時に共有ドライブで新しいバージョンのファイルをチェックしてダウンロード (ftp または直接コピー) することができます。

PC が使用できないなどの問題を回避するために、クライアントにルックアップを行わせます。また、クライアントが急いでいる場合は、ロードをキャンセルすることもできます。すぐに何かが必要なときに更新を強制されることほど悪いことはありません。

于 2012-07-18T15:56:20.753 に答える