(現在 過去ログ92 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13610 / inTopicNo.1)  ファイルサーバにおいた共有桐
  
□投稿者/ きりきり舞い -(2022/10/31(Mon) 18:02:36)
    こんにちは。
    久しぶりに質問致します。
    桐10sユーザーです。ネットワーク越しのファイルサーバにおいた桐表を共有モードで開くよう、一括処理を作ったのですが、なかなか上手く動いてくれません。

    変数宣言 整数{&error,&hndl}
    表 "\\server\data\data\2022名簿.tbx",モード = 共有更新,リトライ = する, 終了状態 = &error
    * 開く時のエラー処理
    if ( &error = -1 )
    メッセージボックス "共有違反","他の誰かが専有モードで表を開いているため、開けません。(エラーコード-1)     ", アイコン=!, ボタン指定=1, 制御文字展開=する
    else if ( &error = 0 )
    メッセージボックス "共有違反以外","共有違反以外で表を開けないエラーが出ています。(エラーコード0)     ", アイコン=!, ボタン指定=1, 制御文字展開=する
    else if ( &error = -2 )
    メッセージボックス "共有更新違反","他の作業者が置換、併合等により処理を実行中です。\nしばらく時間を置いてから、開いて下さい。(エラーコード-2)", アイコン=!, ボタン指定=1, 制御文字展開=する
    end

    表形式編集 更新 = 許可, 許可作業 = *, 画面消去 = する, 終了状態 = &error

    このように書いてみたのですが、開くことは開くのですが、桐ウィンドウの×をクリックすると、「一括処理の実行を中止します」のウィンドウが出てしまいます。
    共有モードなので、他の操作者も更新するので、そのまま上書き保存して何もメッセージを出さずに終了させる(つまり、表を開いた時点で一括処理は終了状態にする)ということはできるのでしょうか?
    また、開いた表を最大化することはできますか?
    よろしくお願い申し上げます。

    なお、この一括処理を作る理由は、上記サーバーのルートから権限を持たない人に桐表を編集して貰うためです。ダイアログボックスだとルートフォルダに権限がないと、共有モードで開くのが難しいのです。
    よろしくお願い申し上げます。
引用返信 [メール受信/OFF] 削除キー/
■13611 / inTopicNo.2)  Re[1]: ファイルサーバにおいた共有桐
□投稿者/ ONnoji -(2022/10/31(Mon) 22:35:28)
    2022/10/31(Mon) 23:27:57 編集(投稿者)

    > 表形式編集 更新 = 許可, 許可作業 = *, 画面消去 = する, 終了状態 = &error
    >
    > このように書いてみたのですが、開くことは開くのですが、桐ウィンドウの×をクリックすると、
    > 「一括処理の実行を中止します」のウィンドウが出てしまいます。

    私はWindowsバージョンの桐は桐ver.8から使用しています。

    そのために一括処理は一切使わずに[フォーム+イベント処理]でアプリケーションを作っています。

    添付ファイルのサンプルでは、「一括処理の実行を中止します」のウィンドウは現れません。

    だって、一括処理を実行していないのですから「当たり前田のクラッカー」です。古っ!!

    サンプルを実行するには、test.wfxを開いてください。

    その時に

     "test.kex の12行め[メッセージボックス]コマンドを実行しています"
     "このデバッグのためのメッセージは最終的に不要なので削除してください"

    というメッセージボックスが表示されます。

    これは念のためにフォームの動作を理解出来るように用意したものなので不要ですから、コメントアウトしてください。

    なお、フォームの属性の[開始時実行コマンド]ボタンにコマンドボタン:cmdStartupを指定してありますので、必ずご留意ください。
       ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    [開始時実行コマンド]ボタンに関しては以下の拙作webページを参考にしてください。

    こちら
     ↓
     18 フォームの自動処理
      フォームは、編集開始時に表の状態を整えたり、編集を開始する前に指定した処理を自動実行する機能を備えています。
     また、フォームを閉じたときに自動実行させる処理を指定することもできます。
     http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section18

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    ■test.wfx

    フォーム
    ├ ファミリ

    ├ ワークスペース
    │ └ cmdStartup ← 重要!!:[開始時実行コマンド]ボタンに指定しています
    │          ・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ├ フォームヘッダ部

    ├ フォーム明細部
    │ ├ cmd閉じる
    │ └ cmd表を開く

    └ フォームフッタ部


     オブジェクト名: cmdStartup
     標題     : cmdStartup:このボタンは[開始時実行コマンド]ボタン

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmd表を開くClick
     3 閉じる
     4 なし


     オブジェクト名: cmd表を開く
     標題     : 表を開く

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmd表を開くClick
     3 なし
     4 なし


     オブジェクト名: cmd閉じる
     標題     : 閉じる(&X)

      機能名    機能パラメータリスト
     1 表示
     2 閉じる
     3 なし
     4 なし

    ■test.kex

    名札  メイン



    手続き定義開始 cmd表を開くClick( )
     変数宣言 自動 文字列{ &title = "cmd表を開くClick( )", &msg }
     変数宣言 自動 文字列{ &tblName }
     変数宣言 自動 整数 { &hdl }
     変数宣言 自動 整数 { &error, &hndl }

     &msg = "test.kex の12行め[メッセージボックス]コマンドを実行しています"
     &msg = &msg + "\n\nこのデバッグのためのメッセージは最終的に不要なので削除してください"
     メッセージボックス  &title, &msg, アイコン = !, ボタン指定 = 1, 制御文字展開 = する

     **表 "\\server\data\data\2022名簿.tbx",モード = 共有更新,リトライ = する, 終了状態 = &error

     &tblName = #一括パス名 + "test.tbx"
     表 &tblName,モード = 共有更新, リトライ = する, 終了状態 = &error

    ┌if ( &error = 1 )

    │ ウィンドウ作成  表, ハンドル = &hdl, オプション = 最大化

    ├else

    │┌ケース開始
    │├─ケース( &error = 0 )
    ││  &msg = "共有違反以外です\n\n共有違反以外で表を開けないエラーが出ています。(エラーコード0)"
    ││
    │├─ケース( &error = -1 )
    ││  &msg = "他の誰かが専有モードで表を開いているため、開けません。(エラーコード-1)"
    ││
    │├─ケース( &error = -2 )
    ││  &msg = "共有更新違反です\n\n他の作業者が置換、併合等により処理を実行中です。\n\nしばらく時間を置いてから、開いて下さい。(エラーコード-2)"
    ││
    │└ケース終了

    │ メッセージボックス  &title, &msg, アイコン = E, ボタン指定 = 1, 制御文字展開 = する
    └end

    手続き定義終了

    p.s.

    添付ファイルは数日を目途に削除しますのでお早めにダウンロード願います。




引用返信 [メール受信/OFF] 削除キー/
■13612 / inTopicNo.3)  Re[1]: ファイルサーバにおいた共有桐
□投稿者/ ななーし -(2022/11/01(Tue) 08:12:21)
    こんにちは。若干ハテナがついてますが、質問・回答します。(老婆心ながら)
    ファイルサーバーがLinuxなのかWindowsServerなのかはわかりませんが、
    >上記サーバーのルートから権限を持たない人に桐表を編集して貰うためです

    がかなり矛盾しています。ルート権限を持たない人が、実表を編集はできないはずです。ワークグループ環境で資格情報を簡易で持たせてアクセスしてるんじゃないかなーと思いますが、非常に危険です。

    WindowsServerでやるなら、既存ディレクトリのみ権限を与え、ネットワークドライブにその既存パスのみでマウントした方が安全です。(過去事故があったので・・・、その際は退職者が覗いてデータを盗もうとしてログで発覚、事なきを得ましたが、ファイルアクセスルールが原因で私もこっぴどく怒られました)
    NASの場合は、桐専用フォルダを作成し、そこへのアクセス制限にすべきです。(弊社みたいに50台セットに回るなら厳しいですが、基本は桐のデータファイルの場所と共有情報の場所を指定しなおすだけなんですから・・・
    たまにCALの観点からユーザー数を極限に減らそうとするバカ(私)のような人が現れますが、管理の観点からすると地獄を見たのでお勧めしません。管理が複雑になればなるほどトラブル時の視認性が下がり、最後はメーカーで工事依頼(20万)がぽーんととんでいくので。。。

引用返信 [メール受信/OFF] 削除キー/
■13613 / inTopicNo.4)  Re[2]: ファイルサーバにおいた共有桐
□投稿者/ きりきり舞い -(2022/11/01(Tue) 09:25:05)
    No13612に返信(ななーしさんの記事)
    > こんにちは。若干ハテナがついてますが、質問・回答します。(老婆心ながら)
    > ファイルサーバーがLinuxなのかWindowsServerなのかはわかりませんが、
    > >上記サーバーのルートから権限を持たない人に桐表を編集して貰うためです

    ファイルサーバーはWindowsServerです。
    共有表では、環境設定に共有ファイルのためのパスを設定する必要があり、このパスは共有で開くクライアントで共通である必要があります。
    このため、ドライブのアサイン(Z:等)をしておらず(アサインすると、クライアント毎に異なることになるため)、ネットワークパス(実際は、共有したいファイルがあるフォルダーにshareフォルダーを作ってそこを指定)を指定しています。

    ネットワークの権限は、その共有したい表があるフォルダの権限に権限設定をしています。なので、ご指摘は違います。

    ただ、こうやった場合、表を開く際に出るダイアログボックスで「共有」のチェックを入れて、ネットワークドライブを開こうとしても、そのネットワークドライブのルートにはアクセス権限がないので、ダイアログボックスからは開けない、ということです。

    ご説明したように、すいませんが、ご指摘は全くの見当違いです。コメント戴きまして、ありがとうございます。


引用返信 [メール受信/OFF] 削除キー/
■13614 / inTopicNo.5)  Re[2]: ファイルサーバにおいた共有桐
□投稿者/ きりきり舞い -(2022/11/01(Tue) 09:29:11)
    非常に詳細なご説明をありがとうございます。
    正直、一括処理には慣れてきたのですが、フォームは今ひとつ理解できておりません(^^;)
    サンプルを戴きました。取りあえず、サンプルを元に、勉強してみます。
    ありがとうございました。

    ただ。一括処理で行うことはできないんでしょうか?
    桐表の共有方法が書かれてある管理工学研究所のFAQには「一括処理を使うなどして、」と書かれてあるんです。

引用返信 [メール受信/OFF] 削除キー/
■13615 / inTopicNo.6)  Re[2]: ファイルサーバにおいた共有桐
□投稿者/ きりきり舞い -(2022/11/01(Tue) 10:34:33)
    ONnoji様
    サンプル作成を含め、ありがとうございました。
    フォームの仕組みをよくわかっておりませんが、無事に解決しました。
    一番難しかったのが、名前を変えたtest.kexとtest.wfxを関連付ける作業でした。(^^;)
    ご指導、ありがとうございました。


解決済み!
引用返信 [メール受信/OFF] 削除キー/
■13616 / inTopicNo.7)  Re[3]: ファイルサーバにおいた共有桐
□投稿者/ ONnoji -(2022/11/01(Tue) 11:07:11)
    2022/11/01(Tue) 11:21:30 編集(投稿者)

    > ただ。一括処理で行うことはできないんでしょうか?
    > 桐表の共有方法が書かれてある管理工学研究所のFAQには「一括処理を使うなどして、」と書かれてあるんです。

    K3のwebページの[桐オンラインFAQ - テクニカルな質問と回答]の[表の共有]をザッと見ましたが、

    「一括処理を使うなどして、」という箇所が見つかりませんでした。

    タラレバですが、「一括処理を使うなどして、」というのはコマンドを実行してという意味なのでしょうね。

    DOS桐の頃から桐ver.7までには[一括処理(履歴を含む)]しかありませんでしたから、

    ドキュメントが古いままで、単純に「一括処理を使うなどして、」と表現しているのかもしれませんね。


    > フォームの仕組みをよくわかっておりませんが、無事に解決しました。
    >
    > 一番難しかったのが、名前を変えたtest.kexとtest.wfxを関連付ける作業でした。(^^;)

    慣れていないと戸惑いますよね。

    でもこれでもう大丈夫でしょう。(^^)ok

    拙作webページで複製の作り方を説明しているのでよろしければご覧ください。

     こちら
      ↓

     桐の釣魚大全のトップ > 新 フォームアプリケーション入門 §2
     http://silicon7565.html.xdomain.jp/primer/primer_section_02.html

     《複製の作り方1/3》 再定義中のフォームに新しい名前を付けて保存する
     《複製の作り方2/3》 再定義中のイベント処理ファイルに新しい名前を付けて書き出す
     《複製の作り方3/3》 フォームファイル(.wfx)とイベント処理ファイル(.kex)を関連付ける

    なお、一括処理に慣れた人からすると[フォーム+イベント処理]のアプローチには戸惑います。

    > これはあくまでも ONnoji の個人的な感想です。(^^ゞ
    > 当然ですが、一括処理を得意にされたこと自体には何も問題はありませんよ。
    > しかし、DOS桐時代の[プロセス(処理)中心]アプローチに慣れ親しんだ人からすると、
    > [フォーム(wfm/wfx)]というMS Windowsの[ウィンドウ]をベースにした、[フォーム+イベント処理]というアプリケーションの開発スタイルは、
    > 天と地ほどの違いがあって頭の切り替えが難しいと思います。
    > 私の場合には、大昔の MS VB5/6 を一通りかじっていたので、桐ver.8 から[フォーム+イベント処理]を始めました。
    > しかし、桐の一括処理的な思考から脱皮して、桐ver.8 から MS VB5/6 ライクな[フォーム+イベント処理]を開始するのには、
    > 頭の切り替えにそれなりの時間が必要でしたよ。
    >
    > DOS桐からの一括処理というのは[処理(プロセス)中心]のアプローチなんですよね。
    > だから、「目的のためには手段を選ばず」という感じで、ゴリゴリのコテンコテンのプログラムを書いても誰も気にしなかったのです。
    > しかし、[フォーム+イベント処理]というのは、[フォーム(データ)中心]のアプローチなんだと思いますよ。
    > なので、「目的のためには手段を選ばず」ではなく、自然なフォームの操作性(操作の流れ)を生かして、
    > 補助的に[コマンドボタン]と[イベントハンドラや一般手続き]を利用するのが良いと思います。
    > もちろん凝ればキリがありませんが、[イベントハンドラ]をたくさん使うことはまずありませんよ。
    > どちらかといえば非常に少ないと思います。
    > 一括処理からイベント処理へと切り替えるのが難しいと感じる人は多いと思います。
    > それは、[処理(プロセス)中心]から[フォーム(データ)中心]という視点の移動が難しいからだと思います。
    > [フォーム(データ)中心]で行くのであれば、フォームのタイトルバーは表示しますし、[閉じる]ボタンも表示します。
    > なので、自然と[閉じる]ボタンが押されても困らないようなデザインをするようになりますよ。

    この事を詳しく書いたツリーがあるので詳しくは以下を参照してください。

    こちら
     ↓
    13525 / 親階層)  思うところにフォーカスを移動したいのだが・
    http://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=all&namber=13525&type=0&space=0&no=0



引用返信 [メール受信/OFF] 削除キー/
■13617 / inTopicNo.8)  Re[3]: ファイルサーバにおいた共有桐
□投稿者/ ななーし -(2022/11/01(Tue) 11:40:53)
    2022/11/01(Tue) 14:18:03 編集(投稿者)

    クライアントPC側で共有フォルダはアサインを指定してマウントができます。弊社の場合は同じWindowsServer2019ですが、マウントするドライブをKドライブに指定して、各PCに設定をしてユーザーに渡しています。理由としてKドライブとなるサーバー名や、該当フォルダが変わる場合(例えば桐9s→桐10sへ移行し、過去データを残して新フォルダを作成)した場合、すべてのPCのディレクトリと共有情報フォルダを変更が必要です。ネットワークドライブの場合はK:/=\\server\桐フォルダ となるため、もし\\appriserver\桐フォルダ10 になってもKドライブをマウントし直すだけでOKになります。(記入文字数も減りますし、何かと楽になります。まあ今はSQLServer化+ローカル運営なのでやってませんが。。。)

    難点は一括処理や、イベントでの指定も同じにする必要がある点ですね。絶対パスで全部書いてあったら全部直さなきゃですし・・・

    よく読めば本件の質問とは別件になってましたね。すみません。
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -