2016-07-18 6 views
-3

私はMS Access 2010でアプリケーションビルドを作成しました。これはジョブオーダーを作成し、サーバーとフロントにテーブルを保持できる分割データベースを使用していますワークステーションのエンド・プログラムを起動します。今、問題は、私は同じアプリケーションで6ラップトップを持っているが、ラップトップがネットワークから切断するフィールドに行くとき。ノートパソコンがオフィスに戻って再びネットワークに接続したときに、ジョブとの同期テーブルを作成する必要がありました。MS Access 2010のネットワークで6台のノートパソコンを同期する方法分割データベースを使用したアプリケーション

ファイルをサーバーにコピーするボタンを押して、テーブルをローカルに削除してから、サーバーからレコードをコピーバックしていますが、ラップトップがネットワークを見つけたときに自動的に同期する方法を見つけたいと思います。

'*************IN THIS PART AM SENDING UPDATING SERVER AND SENDING NEW RECORDS ************ 
Dim x As Integer 
Dim i As Integer 
Dim strSQL As String 

x = MsgBox("Are you Sure you want to Send to Server?????", vbOKCancel, "Are you sure?") 
If x = vbOK Then 
Dim intX, intY As Integer 
Dim intW As Integer 
Dim db As Database 
Dim LSQL, SOurce, DestinaTion, fILE As String 
Dim FSO 

Set FSO = CreateObject("Scripting.FileSystemObject") 

SOurce = "O:\fieldticket\" 
'DestinaTion = "\\rvfile03\Departments\Water\Common\FieldTickets\" 
DestinaTion = "\\rwmain01\gis\FieldTicket\" 
fILE = Dir$(SOurce & "*.one") 
' Do While Len(fILE) > 0 And FSO.FileExists(DestinaTion & fILE) = True 
Do While Len(fILE) > 0 
    If FSO.FileExists(fILE & DestinaTion) = False Then 
     FileCopy SOurce & fILE, DestinaTion & fILE 
    End If 
    fILE = Dir$() 
Loop 

fILE = Dir$(SOurce & "*.pdf") 
Do While Len(fILE) > 0 
    If FSO.FileExists(fILE & DestinaTion) = False Then 
     FileCopy SOurce & fILE, DestinaTion & fILE 
    End If 
    fILE = Dir$() 
Loop 

Set db = CurrentDb() 

' REINIT PROGRESS BAR 
ProgressBarB.WIDTH = 0 
Me.Repaint 
' FILL IN OUR SQL QUERIES COLLECTION 
    Define_SQL_Queries 

DoCmd.SetWarnings False 
Me.Refresh 
Me.Repaint 

DoCmd.SetWarnings False 
Me.Refresh 
    With CurrentDb 
     ' ******* COUNT HOW MANY NEW RECORD ARE TRANSFERING ************************************************** 
     intX = DCount("*", "RECORDS IN JobsOrder NOT IN JobsOrder1") 

     ' ********** UPDATE JOBSORDER TABLE AND COUNT HOW MANY RECORDS ARE UPDATED ****************************** 
     LSQL = "UPDATE_Jobsorder1_SERVER_WITH_Jobsorder" 
     db.Execute LSQL 

     ' **************** GIVE A MESSAGE OF HOW MANY RECORDS ARE UPDATED AND TRANSFERED ********************** 
     MsgBox CStr(db.RecordsAffected) & " RECORDS UPDATED " & intX & " NEW RECORDS WILL BE ADDED AND " 

     '************ new progress bar code using for command ************* 
     Me.ProgressBarA.Visible = True 
     Me.ProgressBarB.Visible = True 
     For i = 1 To colSQL.Count 
      strSQL = colSQL(i) 
      Debug.Print "Executing : " & strSQL 
      Call .QueryDefs(strSQL).Execute 
      ProgressBarB.WIDTH = (ProgressBarA.WIDTH/colSQL.Count) * i 
      Me.Repaint 
     Next i 
     Call Me.Requery 
     DoCmd.SetWarnings True 
    End With 

' MsgBox ("TRANSFER AND UPDATE HAS BEEN FINISHED!!!") 
Me.ProgressBarA.Visible = False 
Me.ProgressBarB.Visible = False 
' Exit Sub 
ElseIf x = vbCancel Then 
    Exit Sub 
End If 

    '*******NOW I AM SENDING BACK FROM SERVER TO HANDHELD ************************ 

Dim y As Integer 
Dim ii As Integer 
Dim strSQL1, SOurce1, DestinaTion1, fIL1E As String 

Beep 
'x = MsgBox("Are you Sure you want to UPDATE HANDHELD?????", vbOKCancel, "Are you sure?") 
'If y = vbOK Then 
'If PASSWORD = "222222" Then 
    Dim intX1, intY1 As Integer 
    Dim intW1 As Integer 

DoCmd.SetWarnings False 

ProgressBarB.WIDTH = 0 
Me.Repaint 

    'SOurce = "\\rvfile03\Departments\Water\Common\FieldTickets\" 
    'DestinaTion = "c:\mapping\" 
    'fILE = Dir$(SOurce & "*.one") 
    'Do While Len(fILE) > 0 
    ' If Dir$(fILE) & "" = "" Then 
    '  FileCopy SOurce & fILE, DestinaTion & fILE 
    ' End If 
    ' fILE = Dir$() 
    'Loop 


    ' FILL IN OUR SQL QUERIES COLLECTION 
    Define_SQL_Queries1 

    DoCmd.SetWarnings False 
    Me.Refresh 
     With CurrentDb 
      intX1 = DCount("*", "RECORD IN Jobsorder1 not Finished") 
'    MsgBox (intX1 & " RECORDS WILL BE ADDED") 


     Me.ProgressBarA.Visible = True 
     Me.ProgressBarB.Visible = True 
     For ii = 1 To colSQL1.Count 
      strSQL1 = colSQL1(ii) 
      Debug.Print "Executing : " & strSQL1 
      Call .QueryDefs(strSQL1).Execute 
      ProgressBarB.WIDTH = (ProgressBarA.WIDTH/colSQL1.Count) * ii 
      Me.Repaint 
     Next ii 
     Call Me.Requery 
     DoCmd.SetWarnings True 
    End With 
MsgBox ("HANDHELD UPDATE COMPLETED!!!"), vbInformation 
ProgressBarA.Visible = False 
ProgressBarB.Visible = False 
Exit Sub 
'ElseIf y = vbCancel Then 
' Exit Sub 
'End If 
MsgBox (intX1 & " RECORDS ADDED TO HANDHELD") 


'******** FINISHING THE HANADHEL UPDATING ******************* 

答えて

0

あなたは(バックエンドテーブルへの接続時に次のエラー再開とエラーをチェック)接続を確認してからオフラインであれば、別のローカルテーブルに接続するには、いくつかのコードを記述する必要があります。その後、オフィスに戻ってコードを通常どおりに接続し、ジョブをアップロードすることができます。結論は、これを行うためにいくつかのVBAを取ることです。私はあなたにコードで解決策を与えることはできませんが、これはその要点です。

VBAでコーディングする方法を知っていれば、ネットワークに接続している場合にはそこにあるネットワークフォルダを確認できます。それがなければ、あなたはあなたがオフラインだとみなすことができます。次に、リンクされたテーブルではなく、ローカルテーブルを扱うコードを書く必要があります。

Dim fso As FileSystemObject  
Set fso = New FileSystemObject 

If fso.FolderExists("[Path to Network Folder]") Then 
    ' I'm online 
Else 
    ' I'm offline 
End If 
+0

コードで私を助けることができるなら、私は本当に感謝します。私はアプリケーションがネットワークに接続されているかどうかを確認する方法を知る必要があります。それに加えて、ラップトップで行われたすべての変更をサーバーで更新する必要があります。 –

+0

答えを更新しました。あなたがVBAでコード化したことがないなら、あなたは何かカスタムが書かれたものを必要とするので止まってしまいます。あなたがコードすることができれば、それを把握することができます。 –

+0

デイブに感謝、私はそれを持って、はい私はVBでプログラムする方法を知っている。私はアプリケーションを作成しました。あなたのアイデアが足りなくなることもありますが、入力いただきありがとうございました。 –

関連する問題