FJサーバー V0.2のダウンロード Access2.0用 Access95用 Access97用   
下記は添え付けの説明書です。
FJサーバー V0.2 説明書
このソフトは、ACCESS2.0同士で、SQLサーバーを実現するためのソフトです。
ACCESS95、ACCESS97用は、2.0用が出来あがってから開発します。
著作権について。
このソフトは、著作権をFJT(藤田幸也)が保持しています。
現在のバージョン0.2は、開発中のため、制限付きで配布しています。
この説明文書、REMORT.MDB、REMORTC.MDBの一部または全部を無断で転載、配布、改造する
ことを禁止します。
※サーバー用ソフトREMORT.MDBはファイル名が変わりました。
 Access2.0用は remort02.mdb Access95用は rem9502.mdb Access97用は rem9702.mdb です。
この機能を利用したい方は、FJT(fjt@y.email.ne.jp)までご連絡ください。
V0.2の説明 97/9/9 14:00 
V0.1の追加 97/8/28 16:00
V0.1の説明 97/8/28 11:00

97/9/9 14:00 
このソフトの名称をFJサーバーとすることにしました。
8/28現在のバージョンをV0.1とします。 現在V0.2ができていますが、パフォーマンス試験などを
行いたいと思っています。

V0.2の仕様
 SQLの発行に際し、ID番号を付加します。 ID番号は、複数のユーザーの同時接続や、
一人のユーザーの複数のSQLの発行を制御するためのものです。
テーブル名は固定だったものを自由にしました。SQL発行時に、SQL文と別に、
使用するテーブル名を指定します。 テーブル名は無指定でもかまいません。
更新クエリーなどは、レコードセットの結果を要求しませんので、テーブル名無しで使います。 

FLGについて。 
0 初期状態。
1 SQL文設定済み 
2 SQL実行中 
3 実行済み(実行結果をクライアントに転送中)
4 SQL文のエラー。 
5 テーブル名のエラー 

使用方法
サーバーにREMORT02.MDBを置きます。
クライアントにREMORTC.MDBを置きます。
サーバーと、クライアントを接続します。
REMORT02.MDBを起動します。データベースウィンドウを表示して、サンプルデータのテーブルBOOKが
ある事を確認してください。
実行フォームをアクティブにして、実行ボタンを押します。以後フォームの切替はしないでください。
邪魔なら、ACCESSを最小化してください。実行中のフォームを最小化すると、エラーになりますので、
ご注意ください。
クライアントのREMORTC.MDBを起動します。
データベースウィンドウでCONTRLテーブルをサーバーのREMORT02.MDBにあわせて、アタッチし直します。
EXECフォームは実行状況を監視します。レコードを移動して、自分の実行するIDにあらかじめ合わせて
おいてください。
f_SETフォームは、実行のためのフォームです。
実行したいSQL文とテーブル名とIDを書込んだ後、実行ボタンを押します。
通常はクエリーで実行を押します。テーブル作成クエリーの場合は、実行終了後、そのテーブルにアタッチして、
テーブルを自動で表示してくれます。
フォームで実行ボタンはサンプルです。クエリーで実行と同じように実行は出来ますが、テーブルが出来ても、
自動で表示はしません。
SQL文の内容と、テーブル名は記憶していますので、レコードを移動して、再実行させる事も出来ます。
実際は、このようなフォームは作らず、VBAでSQL文を作成して、自動的に実行できるように、アプリに
組み込む事になります。

使用上の注意 

【IDの管理】
 IDはSQL毎に個別に指定する番号です。クライアントが別の場合、このIDが重ならないように
注意してください。 
通常はユーザー側で取り決めをする事をお勧めします。複数クライアントの場合は、各クライアントに
ID番号を割り振り、重複しないようにします。 また、同時接続するクライアントが一人の場合は、
ID番号をSQL毎に割り振る事により、複数のSQLを一度に発行できます。ただし、複数のSQLは
同時に実行されるわけではありませんので、余り意味はないかもしれません。
ユーザー数が多い場合など、高度なシステムを組む場合は、IDは動的に割り当てる方が良いでしょう。

下記はIDを動的に割り当てる方法です。
FLGについては、マイナス値の定義はありませんが、マイナス値を予約と定義します。
これにより、以下の流れが出来ます。 
SQL文を発行したいクライアントは、FLGが0の物を探し、
まずID予約のため、自分のクライアント番号のマイナス値をそのIDのFLGに書込みます。 
規定時間たってから、もう一度そのFLGを見て、自分の予約が変わっていなかったら、SQL文を書込み、
結果を得る場合は、テーブル名を書込み、FLGを1にセットします。 
自分の予約番号が変わっていたら、別のFLGが0のIDを探し、もう一度予約からやり直します。
この処理は、アタッチテーブルを経由して設定を読み書きしますので、十分な規定時間を設けておく
必要があります。当然、パフォーマンスが落ちますので、クライアント数が少ない場合は、特定
クライアントに特定IDを割り当てると良いでしょう。競合がおきないようにしておきます。
ですが、そのために、あらかじめ用意するIDの数が余り増えるようですと、それでもパフォーマンス
劣化の原因になります。 同時アクセス可能なクライアント数と、同時発行を予定しているSQL数を
計算して、どちらが良いか、決めてください。 
IDを管理しているCONTRLテーブルも普通のテーブルですので、後で説明するアクションクエリーの
追加クエリーでIDを増やす事も、削除クエリーで減らす事も出来ます。 

【テーブル名の管理】
 結果を出力するSQLでは、テーブルを作成しますが、そのテーブル名は、他のSQLと重なら
ないように管理する必要があります。 複数のクライアントが、クライアント毎に個別の番号を設け、
それをテーブル名の頭に付加すると良いでしょう。
クライアント番号が02の場合は、02kekkaというテーブル名にするわけです。 

【クライアントの基本手順】
REMORTC.MDBの中で実際に行っていますが、SQL文の発行は、以下の手順で行います。
1)SQL文をCONTRLテーブルの希望するIDのレコードのSQLBUNフィールドに書込みます。
2)SQL文が、テーブル作成クエリーの場合、使用するテーブル名を同じくTABLEフィールドに書込みます。
3)FLGを1にセットします。 
4)ホストが実行を始めると、FLGが2になり、正常終了すると3になります。4以上はエラーです。
5)テーブル作成クエリーの場合は、実行結果がテーブルに出来ていますので、アタッチして見てください。
6)実行結果のテーブルが不要になったら、アタッチを解除して、FLGを0に戻します。
7)ホストのMDB内にテーブルが残っていますので、テーブル削除SQLで、削除しておきます。

【アクションクエリー】
 アクションクエリーの場合は、選択クエリーのように、実行結果がレコードセットにならないので、
テーブル名はセットしません。 SQL文が問題無く作成されていれば、実行結果は正常に更新されて
いるはずです。
アクションクエリー内で、データの追加や更新をする場合は、あらかじめホスト内に、
クエリーに必要なデータテーブルが存在する必要があります。その場合は、クエリーを実行する前に、
クライアントのデータテーブルをエクスポートでホストのREMORT.MDBに書き出しておいてください。
アクションクエリー実行後は、そのデータテーブルは不要になりますので、テーブル削除SQLで、
ホスト内のそのテーブルを削除しておきます。 

【関数を使ったクエリー】
クエリー内で関数を使用する場合は、その関数を含むモジュールをホストのREMORT.MDBにエクスポート
してから利用してください。ただし、現在の仕様では、一旦エクスポートしたモジュールを削除する方法は
ありません。ただし、次回使用する時に、同じ名前でモジュールをエクスポートすれば、前のモジュールは
削除されますので、同じ関数名を別の機能に置き換えて利用する事も可能ではあります。

今後の予定 

クライアントの基本手順が、スムーズに進むように、また、各自のMDBに組み込みがしやすいように、
手順をすべて関数化する。
 更新クエリ、追加クエリ、削除クエリ、テーブル削除SQL等のサンプルを用意し、
ユーザーが使いやすいようにする。
初期設定のアタッチし直しを自動化する。
利用がおわったホスト内の結果テーブルの削除を自動化する。

------------------------------------------------------------------------------

97/8/28 16:00 

今後の予定 

更新クエリーに対応。 テーブル名や元データのMDBを可変に。
クライアントを複数に拡張。 なお、このソフトは、汎用性を高めて、サーバー側をシェアウェアに出来るように、
機能を高めて開発したいと思います。 これからが難しくなるところですので、時間が掛かるかもしれませんが、
応援してください。
なお、お金を出しても早く使いたい、とか、自社のシステムに組み込みたい、とかお考えの方は、
マクロ屋経由で発注をお願いします。納期や価格についてはご相談させていただきます。
http://www.com-net.or.jp/macro/ 
あるいは、開発は自分でやるから相談だけのってくれというお申し出でもかまいません。
というのは、実は私は開発しても使う当てが無いのです。出来る事がわかったので、
知識欲はすでに満たされてしまった感じです。 というわけで、有償無償にかかわらず、応援が無いと頓挫しそうです。
よろしくお願いします。
ちなみに私のホームページはhttp://www.asahi-net.or.jp/~wp8y-fjt/ 

※マクロ屋とは
インターネットにホームページを掲載し、SOHO業者などが共同で受注活動をしている団体です。
お客様の所へ打ち合わせや納品に出向く事を基本的に行わないため、低価格でのアプリ開発をはじめ、
入力代行やマクロ作成などをしています。 

------------------------------------------------------------------------------

97/8/28 11:00 

現在の仕様(制限) 

クライアントは一人のみ。 一度に1クエリーのみ実行可能。
クエリーはテーブル作成クエリーのみ。 元データのテーブル名などは手動で変更する必要があります。
作成するテーブル名も固定。 REMORT.MDBがサーバー用、REMORTC.MDBがクライアント用。
データは、現在の設定では、 サーバーの、C:\ACCESS2\BOOK.MDB の BOOKテーブルに存在する事になっています。
クライアントから見ると、 L:\ACCESS2\BOOK.MDBにデータが存在しますが、これは無視して良いです。
直にアタッチした時の速度比較をする場合は、アタッチし直してください。 重要なのは、
L:\ACCESS2\REMORT.MDBです。これがサーバーのSQLサーバーアプリになります。
サーバーでは、execフォームを開いておく。 クライアントでは、execフォームと、f_setフォームを開いておく。
f_setフォームに、SQL文を記入します。記録が取れるように、テーブルに連結してあります。
SQL文は、テーブル作成である事。作成テーブル名は「kekka」 SQL文を記入し、実行ボタンを押すと、SQL文を送信します。

FLGについて。 
0 初期状態。 
1 未定義。 
2 SQL文設定済み(クエリー実行中) 
3 実行済み(kekkaをクライアントに転送中) 
4 SQL文のエラー。 4エラーになったら、SQL文を修正して、再度実行ボタンを押してください。
取込ボタンは、execフォームのSQL文を直接修正した場合に、記録に取り込むための
ボタンです。