Accessお手本データベースのホームへ戻る

得意先テーブルをCSV形式で保存してFTPサーバーにアップロードするお手本

 

7-5-1 得意先テーブルをCSV形式で保存してFTPサーバーにアップロードするサンプルデータベース

 

このサンプルデータベースは、Accessの得意先テーブルをCSV形式で保存して、FTPサイトにアップロードします。また、FTPサイトから、CSV形式のファイルをダウンロードして、Accessのテーブルにインポートすることもできます。

 

フォームから、“CSV形式で保存して送信”のボタンをクリックすると、FTPのフォームが表示されます。このフォームでは、FTPサーバー (FTP Server)、ユーザー名(Username)、パスワード(Password)を入力します。ローカルディレクトリ(Local Dir)には、CSVファイルが保存されているフォルダ(例:C:\Access\Data)を入力します。リモートディレクトリ(Remote Dir)には、FTPサイトの送信先フォルダ(例: Access/Data)を入力します。CSVファイルが保存されているフォルダは、C:\Access\Dataのようにフォルダを”\”で区切りますが、送信先は、Access/Dataのようにフォルダを”/”で区切ります。これらの情報は、事前にテーブルtblFTPServerに登録して、コンボボックスから選択することができます。

 

ファイル名(Filename)には、CSVファイルの名称を入力します。Put Fileのボタンをクリックすると、FTPサーバーに接続してCSVファイルをアップロードします。結果は、ステータス(Status)に表示されます。アップロードが完了すると自動的に切断します。

 

このサンプルデータベース(CH7-5.mdb)では、以下のノウハウを習得することができます。

 

◆ AccessのテーブルをCSV形式で保存する方法

◆ CSVファイルをFTPサイトにアップロードする方法

◆ CSVファイルをFTPサイトからダウンロードする方法

◆ ダウンロードしたCSVファイルをテーブルにインポートする方法

◆ コンボボックスに無いアイテムを入力したときにテーブルに登録する方法

 

   FTPライブラリBASP21をインストールするには

 

1 IE5.5などのブラウザを起動して、Webサイト

http://www.hi-ho.ne.jp/babaq/basp21.html からBabaさんの作成したBASP21.EXE (997KB)をダウンロードします。

 

2 ダウンロードが完了したら、BASP21.EXEを起動してインストールします。

 

3 BASP21に登録されているFTPオブジェクトには、Connect, GetFile, PutFile,Closeなど12個のメソッドがサポートされています。これらのメソッドの使い方は、http://www.hi-ho.ne.jp/babaq/basp21f.html に記載されていますので参照してください。

 

 

   サンプルデータベースで使用するテーブルを準備するには

 

1 Accessを起動したら作業フォルダに、新規データベース CH7-5.mdbを作成します。

 

2 メニューから外部データベースの取り込みインポートをクリックします。インポートのダイアログが表示されたら、Access のサンプルデータベースNorthwind.mdb(デフォルトで、“C:\Program Files\Microsoft Office\Office\Samples”にインストールされます)を選択してインポートボタンをクリックします。オブジェクトのインポートのダイアログが表示されたら、テーブルタブをクリックして得意先テーブルをクリックします。最後に、OKボタンをクリックしてインポートを完了させます。

 

3 データベースウィンドウのテーブルをクリックしたら、得意先テーブルを選択してマウスの右ボタンをクリックします。ショートカットメニューが表示されたら、名前の変更をクリックしてtblCustomerに変更します。

 

4 テーブルtblCustomerを選択したら、マウスの右ボタンをクリックしてショートカットメニューを表示させます。メニューからコピーをクリックしてtblCustomerをコピーします。データベースウィンドウ内の空きスペースをクリックしたら、マウスの右ボタンをクリックしてショートカットメニューを表示させます。メニューから貼り付けをクリックして、テーブルの貼り付けのダイアログを表示させます。ダイアログのテーブル名にtblCustomer2を入力したら、貼り付けの設定からテーブル構造のみをチェックしてOKボタンをクリックします。

 

7-5-2 テーブルの貼り付けのダイアログを表示させた例

 

5 テーブルの準備ができたらAccess を終了させます。

 

   得意先テーブルを表示するフォームを作成するには

 

1 Accessを起動したら、作業フォルダに作成したCH7-5.mdbを開きます。

 

2 データベースウィンドウからフォームをクリックしたら、新規作成のボタンをクリックします。フォームの新規作成ダイアログが表示されたら、リストボックスからオートフォーム:表形式を選択します。基になるテーブル/クエリのコンボボックスから、tblCustomerを選択したらOKボタンをクリックします。

 

7-5-3 フォームの新規作成ダイアログから、オートフォーム:表形式を選択して得意先テーブルのフォームを自動作成する

 

3 得意先テーブルを表示するフォームが表示されたら、デザインビューに切り替えてsfrCustomerの名称で保存して閉じます。このフォームは、サブフォームとして使用します。

 

7-5-4 得意先を表示するフォームを自動作成した例

 

4 データベースウィンドウの一覧からデザインビューでフォームを作成するをダブルクリックします。フォームのデザインが表示されたら、データベースウィンドウからサブフォームsfrCustomerのアイコンをドラッグして、フォーム詳細の左上に貼り付けます。

 

5 メニューからツールボックスのアイコンをクリックして、ツールボックスを表示させます。ツールボックスからコマンドボタンのアイコンをクリックしたら、サブフォームの右側に2個(上から閉じる、CSV形式で保存して送信)のコマンドボタンを作成します。

 

6 メインフォームに作成したコントロールのプロパティを、表7-5-1のように設定します。

 

7-5-1 メインフォームに作成したコントロールのプロパティ

コントロールの種類

プロパティ

サブフォーム

名前

sfrCustmer

ソースオブジェクト

sfrCustomer

リンク子フィールド

空白

リンク親フィールド

空白

コマンドボタン1

名前

cmdClose

標題

閉じる

コマンドボタン2

名前

cmdSend

標題

CSV形式で保存して送信

 

7-5-5 メインフォームfrmCustomerのレイアウト

 

7 メニューからコードのアイコンをクリックして、フォームモジュールを表示させます。CH7-5.mdbを開いて、frmCustomerのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト7-5-1を参照してください。

 

CH7-5.mdbから、標準モジュール basMyLibをコピーします。標準モジュールは、フォームモジュールから参照します。basMyLibは、Microsoft DAO 3.6 Object Libraryを参照しますので、VBEツールメニューから参照設定をクリックして登録します。

 

8 メインフォームをfrmCustomerの名称で保存したらAccess を終了させます。

 

 

cmdSend_Click()イベントの処理

このイベントは、フォームから“CSV形式で保存して送信”のボタンをクリックしたときに発生します。このイベントでは、DoCmdOpenFormメソッドでfrmFTPを開きます。引数のOpenArgsには、アップロードを意味するアクションコード”PutFile”CSVのファイル名”Customer.cvs”をセミコロン(;)で区切って指定します。

 

DoCmd.OpenForm FormName:="frmFtp", OpenArgs:="PutFile;Customer.csv"

 

CSVファイルの送信は、frmFTPからPutFileボタンをクリックしたときに行います。

 

cmdClose_Click()イベントの処理

このイベントは、フォームから閉じるのボタンをクリックしたときに発生します。このイベントでは、DoCmdCloseメソッドでフォームを閉じます。

 

リスト7-5-1 frmCustomerのソースコード

Option Compare Database

Option Explicit

 

Private Sub cmdClose_Click()

  DoCmd.Close

End Sub

 

Private Sub cmdSend_Click()

  DoCmd.OpenForm FormName:="frmFtp", _

    OpenArgs:="PutFile;Customer.csv"

End Sub

 

 

   ファイルをアップロードまたはダウンロードするフォームを作成するには

 

1 Access を起動したら、作業フォルダに作成したCH7-5.mdbを開きます。

 

2 データベースウィンドウからフォームをクリックしたら、一覧からデザインビューでフォームを作成するをダブルクリックします。フォームのデザインビューが表示されたら、メニューからツールボックスのアイコンをクリックします。

 

3 ツールボックスからコンボボックスのアイコンをクリックしたら、フォーム詳細の左上に配置します。このコンボボックスは、テーブルtblFTPServerServerName, UserName, Password, LocalFolder, RemoteFolderから構成されますが、列幅をServerNameのみ表示されるように調整します。ツールボックスからラベルのアイコンをクリックしたら、コンボボックスの右に配置します。ラベルの標題には、?を入力します。このラベルは、図7-5-6に示すようなヘルプ情報を表示するのに使用します。ヘルプのフォームfrmHelpの作り方は、紙面の都合上省略しますので、事前に作成しておいてください。

 

7-5-6 フォームfrmHELPのレイアウト

 

4 ツールボックスからテキストボックスのアイコンをクリックしたら、コンボボックスの下にUsername, Password, Local Dir, Remote Dir, Filename, Statusのテキストボックスを作成します。

 

5 ツールボックスからコマンドボタンのアイコンをクリックしたら、フォーム詳細の右上から3個(上からExit, Get File, Put File)のコマンドボタンを作成します。

 

6 フォームに作成したコントロールのプロパティを、表7-5-2のように設定します。

 

7-5-2 フォームに作成したコントロールのプロパティ

コントロールの種類

プロパティ

コンボボックス

名前

cboFTPServer

値集合タイプ

テーブル/クエリ

値集合ソース

SELECT tblFTPServer.ID, tblFTPServer.ServerName, tblFTPServer.UserName, tblFTPServer.Password, tblFTPServer.LocalFolder, tblFTPServer.RemoteFolder

FROM tblFTPServer

ORDER BY tblFTPServer.ID;

連結列

2

列数

6

列幅

0cm;3.6cm;0cm;0cm;0cm;0cm

ラベル

名前

lblHelp

標題

ハイパーリンクサブアドレス

Form frmHelp

背景色

65535

立体表示

浮き出し

テキストボックス1

名前

txtUsername

テキストボックス2

名前

txtPassword

テキストボックス3

名前

txtLocalDir

テキストボックス4

名前

txtRemoteDir

テキストボックス5

名前

txtFilename

テキストボックス6

名前

txtStatus

背景色

16777177

編集ロック

はい

コマンドボタン1

名前

cmdExit

標題

Exit

コマンドボタン2

名前

cmdGetFile

標題

Get File

コマンドボタン3

名前

cmdPutFile

標題

Put File

 

7-5-7 フォームfrmFtpのレイアウト

 

7 メニューからコードのアイコンをクリックして、フォームモジュールを表示させます。CH7-5.mdbを開いて、frmFtpのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト7-5-2を参照してください。

 

8 フォームをfrmFtpの名称で保存したらAccess を終了させます。

 

 

Form_Load()イベント処理

このイベントは、フォームが開かれてデータをロードするときに発生します。このイベントでは、コンボボックスから先頭アイテムItemData(0)FTP Serverを選択して、Username, Password, Local Dir, Remote Dir情報を表示します。

 

Me.cboFTPServer = Me.cboFTPServer.ItemData(0)

 

フォームのOpenArgsプロパティを調べて、アクションコード(PutFile/GetFile)CSVファイル名を取得します。CSVファイル名は、フォームのFilenameに表示させます。アクションコードが”PutFile”なら、Get Fileのコマンドボタンを使用不可にします。アクションコードが”GetFile”なら、Put Fileのコマンドボタンを使用不可にします。

 

  If Len(Me.OpenArgs) Then

    strAction = Left(Me.OpenArgs, 7)

    Me.txtFilename = Mid(Me.OpenArgs, 9)

    If strAction = "PutFile" Then

      Me.cmdGetFile.Enabled = False

    Else  ' GetFile

      Me.cmdPutFile.Enabled = False

    End If

  End If

 

 

cboFTPServer_AfterUpdate()イベント処理

このイベントは、FTP ServerのコンボボックスからFTPサイトを選択したときに発生します。このイベントでは、コンボボックスから、Username, Password, Local Dir, Remote Dir情報を取得してテキストボックスに表示させます。Local Dir情報が空白のときは、デフォルトとしてカレントデータベースのパス名を表示します。

 

    Me.txtUsername = .Column(2)

    Me.txtPassword = .Column(3)

    Me.txtLocalDir = .Column(4)

    Me.txtRemoteDir = .Column(5)

    If Len(Me.txtLocalDir) = 0 Then

      Me.txtLocalDir = CurrentProject.Path

    End If

 

 

cboFTPServer_NotInList()イベント処理

このイベントは、FTP Serverのコンボボックスから一覧に無いアイテムを入力したときに発生します。このイベントでは、コンボボックスから入力したFTP Serverを新規登録します。“XXXXFTP serverに登録されていません! 登録しますか?”のメッセージに対して”Yes”を選択したときは、DoCmdOpenFormメソッドでfrmAddFtpSiteをダイアログモードで開きます。(ダイアログモードでフォームを開くと、DoCmd.OpenFormは、frmAddFtpSiteが非可視状態になるか、閉じられるまで待たされます。)DoCmd.OpenFormの待ち状態が解除されたら、IsLoaded()関数でfrmAddFtpSiteがロードされているか調べます。ロードされているときは、OKボタンをクリックしたことを意味しますので、引数ResponseacDataErrAddedを設定してフォームを閉じます。

 

   DoCmd.OpenForm conFormname, _

      DataMode:=acFormAdd, _

      WindowMode:=acDialog, _

      OpenArgs:=NewData

    If IsLoaded(conFormname) Then

      Response = acDataErrAdded

      DoCmd.Close acForm, conFormname

    Else

      Response = acDataErrContinue

    End If

 

“・・・・登録しますか?”のメッセージに対して”No”を選択したときは、引数ResponseacDataErrContinueを設定します。この場合、Accessからエラーメッセージが表示されます。

 

 

cmdExit_Click()イベント処理

このイベントは、フォームからExitボタンをクリックしたときに発生します。このイベントでは、DoCmdCloseメソッドでフォームを閉じます。

 

 

cmdPutFile_Click()イベント処理

このイベントは、フォームからPut Fileボタンをクリックしたときに発生します。このイベントでは、得意先テーブルをCSV形式で保存してFTPサイトにアップロードします。

 

DoCmdTransferTextメソッドでテーブルtblCustomerCSV形式で保存します。引数SpecificationNameで指定しているファイル定義情報(defCustomer)は、事前に登録しておきます。

 

  DoCmd.TransferText TransferType:=acExportDelim, _

    SpecificationName:="defCustomer", _

    TableName:="tblCustomer", _

    FileName:=strFilename, _

    HasFieldNames:=True

 

CSVファイルを作成したら、Connect_ftp()関数でFTPサーバーに接続します。FTPサーバーに接続したら、FTPオブジェクトのPutFileメソッドでCSVファイルをアップロードします。PutFileメソッドの引数には、ローカルのファイル名、リモートサイトのフォルダ、タイプ(0-Ascii, 1-Binary)を指定します。

 

例:  mobjFTP.PutFile("C:\Access\Data\Customer.csv", "Access/Data", 0)

 

PutFileメソッドの戻り値を取得したら、AddStatusを呼び出して結果を表示します。

 

    mlngRC = mobjFTP.PutFile(strLocal, strRemote, 0)

    If mlngRC = 0 Then

      AddStatus "Transfer Error!"

    Else

      AddStatus "Transfer Complete."

    End If

 

最後に、Disconect_ftpを呼び出して切断します。

 

 

cmdGetFile_Click()イベント処理

このイベントは、フォームからGet Fileボタンをクリックしたときに発生します。このイベントでは、FTPサイトからファイルをダウンロードします。Connect_ftp()関数で、FTPサイトに接続したら、FTPオブジェクトのGetFileメソッドでファイルをダウンロードします。GetFileメソッドの引数には、リモートサイトのファイル名、ローカルのフォルダ、タイプ(0-Ascii, 1-Binary)を指定します。

 

    例: mobjFTP.GetFile("Access/Data/customer.csv", "C:\Access\Data”, 0)

 

GetFileメソッドの戻り値を取得したら、AddStatusを呼び出して結果を表示します。ダウンロードしたCSVファイルは、ImportTableを呼び出してテーブルtblCustomer2にインポートします。

 

    mlngRC = mobjFTP.GetFile(strRemote, strLocal, 0)

    If mlngRC = 0 Then

      AddStatus "Transfer Error!"

    Else

      AddStatus "Transfer Complete."

      AddStatus "Importing "  & Me.txtLocalDir & "\" & Nz(Me.txtFilename, "")

      ImportTable Me.txtLocalDir & "\" & Nz(Me.txtFilename, "")

    End If

 

最後に、Disconnect_ftpを呼び出して切断します。

 

 

Connect_ftp()

この関数は、コンボボックスで選択したFTPサイトに接続します。CreateObjectで、BASP21.FTPのインスタンスを生成したら、オブジェクト変数mobjFTPにポンタを設定します。

 

Set mobjFTP = CreateObject("basp21.FTP")

 

FTPオブジェクトのConnectメソッドでFTPサイトに接続します。Connectメソッドには、引数としてFTP Server, Username, Passwordを指定します。例えば、マイクロソフト社のFTPサイトに接続するには、

 

mobjFTP.Connect("ftp.microsoft.com","anonymous","")

 

のように指定します。

 

  mlngRC = mobjFTP.Connect( _

    Me.cboFTPServer, _

    Nz(Me.txtUsername, "anonymous"), _

    Nz(Me.txtPassword, ""))

 

Connectメソッドの戻り値を取得したら、AddStatusを呼び出して結果を表示します。

 

  If mlngRC <> 0 Then

    AddStatus "Connection Failed!"

    Connect_ftp = False

  Else

    AddStatus "Connected."

    Connect_ftp = True

  End If

 

最後に、戻り値としてTrue/Falseを設定して終了します。

 

 

Disconnect_ftp()

このプロシージャは、FTPサイトを切断します。FTPサイトを切断するには、FTPオブジェクトのCloseメソッドを使用します。

 

  mobjFTP.Close

 

 

AddStatus()

このプロシージャは、引数で指定されたメッセージをステータスのテキストボックスに表示させます。

 

 

IsLoaded()

この関数は、引数で指定されたフォームがロードされているか調べてTrue/Falseを返します。

 

 

ImportTable()

このプロシージャは、引数で指定されたCSVファイルをインポートして表示させます。

DoCmdSelectObjectメソッドでtblCustomer2を選択したら、DeleteObjectメソッドで削除します。

 

  DoCmd.SelectObject acTable, conTablename

  DoCmd.DeleteObject acTable, conTablename

 

DoCmdTransferTextメソッドでCSVファイルをtblCustomer2にインポートします。

 

  DoCmd.TransferText TransferType:=acImportDelim, _

    SpecificationName:="defCustomer", _

    TableName:=conTablename, _

    FileName:=strFilename, _

    HasFieldNames:=True

 

最後に、DoCmdOpenTableメソッドでインポートしたtblCustomer2を表示させます。

 

 

リスト 7-5-2 frmFtpのフォームモジュール

Option Compare Database

Option Explicit

 

#Const LOG = True

 

Private mobjFTP As Object

Private mlngRC As Long

 

Private Sub cboFTPServer_AfterUpdate()

  With Me.cboFTPServer

    Me.txtUsername = .Column(2)

    Me.txtPassword = .Column(3)

    Me.txtLocalDir = .Column(4)

    Me.txtRemoteDir = .Column(5)

    If Len(Me.txtLocalDir) = 0 Then

      Me.txtLocalDir = CurrentProject.Path

    End If

  End With

End Sub

 

Private Sub cboFTPServer_NotInList( _

  NewData As String, Response As Integer)

  Dim strMsg As String

  Const conFormname = "frmAddFtpSite"

  strMsg = NewData _

     & " FTPServerテーブルに存在しません!" _

     & vbCrLf & "登録しますか?"

  If MsgBox(strMsg, vbYesNo + vbQuestion, "FTP Server") _

    = vbYes Then

    DoCmd.OpenForm conFormname, _

      DataMode:=acFormAdd, _

      WindowMode:=acDialog, _

      OpenArgs:=NewData

    If IsLoaded(conFormname) Then

      Response = acDataErrAdded

      DoCmd.Close acForm, conFormname

    Else

      Response = acDataErrContinue

    End If

  Else

    Response = acDataErrContinue

  End If

 

End Sub

 

Private Sub cmdExit_Click()

  DoCmd.Close

End Sub

 

Private Sub cmdGetFile_Click()

  Dim strRemote As String

  Dim strLocal As String

 

  Me.txtStatus = vbNullString

  If Connect_ftp() Then

    strRemote = Me.txtRemoteDir _

      & IIf(Len(Me.txtRemoteDir), "/", "") _

      & Nz(Me.txtFilename, "*")

    strLocal = Me.txtLocalDir

    AddStatus "Receiving " & strRemote & " -> " & strLocal

    mlngRC = mobjFTP.GetFile(strRemote, strLocal, 0)

    If mlngRC = 0 Then

      AddStatus "Transfer Error!"

    Else

      AddStatus "Transfer Complete."

      AddStatus "Importing " _

        & Me.txtLocalDir & "\" & Nz(Me.txtFilename, "")

      ImportTable Me.txtLocalDir & "\" & Nz(Me.txtFilename, "")

    End If

    Disconnect_ftp

  End If

 

 

End Sub

 

Private Sub cmdPutFile_Click()

  Dim strLocal As String

  Dim strRemote As String

  Dim strFilename As String

 

  Const conFilename = "Customer.csv"

 

  strFilename = Me.txtLocalDir _

    & "\" & Nz(Me.txtFilename, conFilename)

 

  ' 得意先マスタをCSV形式で保存します

  DoCmd.TransferText TransferType:=acExportDelim, _

    SpecificationName:="defCustomer", _

    TableName:="tblCustomer", FileName:=strFilename, HasFieldNames:=True

 

  Me.txtStatus = vbNullString

  If Connect_ftp() Then

    strLocal = Me.txtLocalDir _

      & "\" & Nz(Me.txtFilename, "*")

    strRemote = Me.txtRemoteDir

    AddStatus "Sending " & strLocal & " -> " & strRemote

    mlngRC = mobjFTP.PutFile(strLocal, strRemote, 0)

    If mlngRC = 0 Then

      AddStatus "Transfer Error!"

    Else

      AddStatus "Transfer Complete."

    End If

    Disconnect_ftp

  End If

 

End Sub

 

Private Sub Form_Load()

  Dim strAction As String

  Me.cboFTPServer = Me.cboFTPServer.ItemData(0)

  cboFTPServer_AfterUpdate

  If Len(Me.OpenArgs) Then

    strAction = Left(Me.OpenArgs, 7)

    Me.txtFilename = Mid(Me.OpenArgs, 9)

    If strAction = "PutFile" Then

      Me.cmdGetFile.Enabled = False

    Else  ' GetFile

      Me.cmdPutFile.Enabled = False

    End If

  End If

End Sub

 

Private Function Connect_ftp() As Boolean

 

  AddStatus "Connecting to " & Me.cboFTPServer

  Set mobjFTP = CreateObject("basp21.FTP")

  #If LOG Then

    mobjFTP.OpenLog CurrentProject.Path & "\log.txt"

  #End If

  mlngRC = mobjFTP.Connect( _

    Me.cboFTPServer, _

    Nz(Me.txtUsername, "anonymous"), _

    Nz(Me.txtPassword, ""))

  If mlngRC <> 0 Then

    AddStatus "Connection Failed!"

    Connect_ftp = False

  Else

    AddStatus "Connected."

    Connect_ftp = True

  End If

 

End Function

 

Private Sub Disconnect_ftp()

  If mobjFTP Is Nothing Then

    Exit Sub

  End If

  #If LOG Then

    mlngRC = mobjFTP.CloseLog()

  #End If

  mobjFTP.Close

  Set mobjFTP = Nothing

  AddStatus "Disconnected."

End Sub

 

Private Sub ImportTable(strFilename As String)

  Const conTablename = "tblCustomer2"

 

  If Len(strFilename) = 0 Then

    Exit Sub

  End If

 

  On Error Resume Next

  DoCmd.SelectObject acTable, conTablename

  DoCmd.DeleteObject acTable, conTablename

  On Error GoTo 0

 

  ' CSV形式の得意先マスタをインポートして表示します

  DoCmd.TransferText TransferType:=acImportDelim, _

    SpecificationName:="defCustomer", _

    TableName:=conTablename, _

    FileName:=strFilename, _

    HasFieldNames:=True

   

  DoCmd.OpenTable conTablename

 

End Sub

 

Private Sub AddStatus(strMsg As String)

  Me.txtStatus = Me.txtStatus & vbCrLf & strMsg

End Sub

 

Private Function IsLoaded(strName As String) _

  As Boolean

  IsLoaded = _

    (SysCmd(acSysCmdGetObjectState, acForm, strName) <> 0)

End Function

 

 

 

   FTPサイトを登録するフォームを作成するには

 

1 Access を起動したら、作業フォルダに作成したCH7-5.mdbを開きます。

 

2 データベースウィンドウからフォームをクリックしたら、新規作成のボタンをクリックします。フォームの新規作成ダイアログが表示されたら、リストボックスからオートフォーム:単票形式を選択します。基になるテーブル/クエリのコンボボックスからtblFTPServerを選択したら、OKボタンをクリックします。

 

7-5-8 フォームの新規作成ダイアログからオートフォーム:単票形式を選択して自動作成する

 

3 フォームが自動作成されて表示されたら、デザインモードに切り替えます。フォームからIDAddDateのテキストボックスを削除します。

 

7-5-9  オートフォームで自動作成されたフォームからIDAddDateのテキストボックスを削除する

 

4 ツールボックスからコマンドボタンのアイコンをクリックしたら、フォーム右上に2個(上からOKCancel)のコマンドボタンを作成します。

 

5 フォームに作成したコントロールのプロパティを、表7-5-3のように設定します。

 

7-5-3 frmAddFtpSiteに作成したコントロールのプロパティ

コントロールの種類

プロパティ

テキストボックス1

名前

txtFTPServer

テキストボックス2

名前

txtUsername

テキストボックス3

名前

txtPassword

テキストボックス4

名前

txtLocalDir

テキストボックス5

名前

txtRemoteDir

コマンドボタン1

名前

cmdOK

標題

OK

コマンドボタン2

名前

cmdCancel

標題

Cancel

 

 

7-5-10 フォームfrmAddFtpSiteのレイアウト

 

6 メニューからコードのアイコンをクリックして、フォームモジュールを表示させます。CH7-5.mdbを開いて、frmAddFtpSiteのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト7-5-3を参照してください。

 

7 フォームをfrmAddFtpSiteの名称で保存したら、Access 2000を終了します。

 

 

Form_Load()

このイベントは、フォームが開かれてデータをロードするときに発生します。このイベントでは、引数OpenArgsで指定されたFTPサーバー名(例: frp.friendlyswcom)をテキストボックスに表示させます。

 

 

cmdOK_Click()

このイベントは、フォームからOKボタンをクリックしたときに発生します。このイベントでは、フォームの可視(Visible)プロパティをFalseに設定します。フォームの可視プロパティをFalseに設定すると、このフォームを開いたDoCmd.OpenFormの待ち状態が解除されて、後続するVBAコードが実行されます。

 

 

cmdCancel_Click()

このイベントは、フォームからCancelボタンをクリックしたときに発生します。このイベントでは、フォームのUnDoメソッドでレコードを復元して、DoCmdCloseメソッドでフォームを閉じます。フォームが閉じられると、このフォームを開いた、DoCmd.OpenFormの待ち状態が解除されて、後続するVBAコードが実行されます。

 

 

リスト7-5-3 frmAddFtpSiteのフォームモジュール

Option Compare Database

Option Explicit

 

' ***************************

Private Sub cmdCancel_Click()

  Me.Undo

  DoCmd.Close acForm, Me.Name

End Sub

 

' ***********************

Private Sub cmdOK_Click()

  Me.Visible = False

End Sub

 

' *********************

Private Sub Form_Load()

  If Len(Me.OpenArgs) > 0 Then

    Me.txtFTPServer = Me.OpenArgs

  End If

End Sub

 

 

   得意先テーブルをテキストファイルにエクスポートするための定義ファイルを作成するには

 

1 Access を起動したら、作業フォルダに作成したCH7-5.mdbを開きます。

 

2 データベースウィンドウからテーブルをクリックしたら、tblCustomerを選択します。ファイルメニューからエクスポートをクリックしてダイアログを表示させたら、ファイルにCustomerを入力します。ファイルの種類のコンボボックスからは、テキストファイルを選択して、保存ボタンをクリックします。

 

3 保存ボタンをクリックすると、テキストのエクスポートウィザードが起動されますので、フィールドの区切り記号としてカンマを選択します。設定ボタンをクリックするとダイアログが表示されますので、保存ボタンをクリックします。定義名を入力するダイアログが表示されますので、defCustomerを入力してOKボタンをクリックします。

 

7-5-11 tblCustomerCSV形式でエクスポートするための定義ファイルを作成


 

 

   得意先マスタをアップロード/ダウンロードするメニューフォームを作成するには

 

1 Access を起動したら、作業フォルダに作成したCH7-5.mdbを開きます。

 

2 データベースウィンドウからフォームをクリックしたら、一覧からデザインビューでフォームを作成するをダブルクリックします。

 

3 フォームのデザインビューが表示されたら、ツールボックスからコマンドボタンのアイコンをクリックして、フォーム中央に2個のコマンドボタンを作成します。

 

4 フォームに作成したコントロールのプロパティを、表7-5-4のように設定します。

 

7-5-4 frmMainに作成したコントロールのプロパティ

コントロールの種類

プロパティ

コマンドボタン1

名前

cmdUpload

標題

得意先マスタをメンテしてCSVファイル形式でWe Serverにアップロードする

コマンドボタン2

名前

cmdDownload

標題

得意先マスタのCSVファイルをWeb Serverからダウンロードして表示する

 

7-5-12  フォームfrmMainのレイアウト

 

5 メニューからコードのアイコンをクリックしてフォームモジュールを表示させます。CH7-5.mdbを開いて、frmMainのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト7-5-4を参照してください。

 

6 フォームをビューモードに切り替えたら、“得意先マスタをメンテしてCSVファイル形式でWeb Serverにアップロードする”のコマンドボタンをクリックします。フォームfrmCustomerが表示されて、得意先マスタの内容がデータシート上に表示されます。得意先マスタをメンテしたら、“CSV形式で保存して送信”のボタンをクリックします。フォームfrmFTPが表示されたら、FTP Serverのコンボボックスから、FTPサイトを選択します。FTPサイトを選択すると、Username, Password, Local Dir, Remote Dirが表示されます。FilenameのテキストボックスにCSVファイルの名称Customer.csvを入力したら、Put Fileのコマンドボタンをクリックします。FTPサイトに接続されて、ファイルがアップロードされます。アップロードが完了すると切断されます。

 

7-5-13 得意先マスタをCSV形式で保存してアップロードする例

 

7 FTPサイトにアップロードしたCSVファイルをダウンロードして表示するには、フォームfrmMainから“得意先マスタのCSVファイルをWeb Serverからダウンロードして表示する”をクリックします。フォームfrmFTPが表示されたら、FTP Server, Username, Passwordを入力します。Local Dirには、ダウンロードしたファイルを保存するフォルダを入力します。Remote Dirには、ダウンロードするファイルのFTPサイトのフォルダを入力します。Filenameには、ダウンロードするファイル名を入力します。Get Fileボタンをクリックすると、FTPサイトに接続して指定したファイルをダウンロードします。結果は、Statusに表示されます。ダウンロードされたCSVファイルは、tblCustomer2にインポートされて表示されます。

 

7-5-14 FTPサイトからCSVファイルCustomer.csvをダウンロードした例

 

7-5-15 ダウンロードしたCSVファイルをtblCustomer2にインポートして表示させた例

 

 

8 フォームをfrmMainの名称で保存したらAccess を終了させます。

 

 

cmdUpload_Click()イベント処理

このイベントは、フォームからアップロードのボタンをクリックしたときに発生します。このイベントでは、DoCmdOpenFormメソッドでフォームfrmCustomerを開きます。

 

 

cmdDownload_Click()イベント処理

このイベントは、フォームからダウンロードのボタンをクリックしたときに発生します。このイベントでは、DoCmdOpenFormメソッドでフォームfrmFTPを開きます。引数のOpenArgsには、アクションコードとCSVファイル名(”GetFile;Customer.csv”)をセミコロン(;)区切りで指定します。”GetFile”は、ダウンロードすることを意味します。”Cusomer.csv”は、ダウンロードするファイル名です。

 

DoCmd.OpenForm FormName:="frmFtp", OpenArgs:="GetFile;Customer.csv"

 

 

リスト 7-5-4  frmMainのフォームモジュール

Option Compare Database

Option Explicit

 

Private Sub cmdDownload_Click()

  DoCmd.OpenForm FormName:="frmFtp", _

    OpenArgs:="GetFile;Customer.csv"

End Sub

 

Private Sub cmdUpload_Click()

  DoCmd.OpenForm "frmCustomer"

End Sub

 

 

ダウンロード (CH7-5.lzh)
Accessお手本データベースのホームへ戻る