ClientFileSaveDlg
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
ClientFileSaveDlg
msg# 1
ogasawara
投稿数: 117
リッチクライアントサーバーを使用するアプリケーションの中で
作成したTEXTファイルをクライアントに保存してもらうイベントを
下の関数で書きました。
ClientFileSaveDlg('/TEXT/'&Trim (A)&'EDI.TXT','','(*.TXT)|*.TXT','','TRUE'LOG)
保存のダイアログが表示され問題なさそうに終了したのですが
保存したはずのファイルがありません。検索すると出てきますが現物がないのかクリックするとありませんとなってしまいます。
この関数はサーバーのファイルをクライアントにコピーできるのでしょうか クライアントファイルを保存してみましたが同じ結果でした。ウィルスセキュリティーを切ってみましたが同じでした。
わかる方が」いたら教えていただけますか
作成したTEXTファイルをクライアントに保存してもらうイベントを
下の関数で書きました。
ClientFileSaveDlg('/TEXT/'&Trim (A)&'EDI.TXT','','(*.TXT)|*.TXT','','TRUE'LOG)
保存のダイアログが表示され問題なさそうに終了したのですが
保存したはずのファイルがありません。検索すると出てきますが現物がないのかクリックするとありませんとなってしまいます。
この関数はサーバーのファイルをクライアントにコピーできるのでしょうか クライアントファイルを保存してみましたが同じ結果でした。ウィルスセキュリティーを切ってみましたが同じでした。
わかる方が」いたら教えていただけますか
投票数:0
平均点:0.00
Re: ClientFileSaveDlg
msg# 1.1
Jiro123
投稿数: 271
ClientFileSaveDlgのヘルプを見ると、構文は下記のようになっています。
構文:
ClientFileSaveDlg (タイトル, 初期ディレクトリ, フィルタ, デフォルト拡張子, 上書き確認)
第二引数は、ディレクトリを指定するようになっていますが、ogasawara さんの関数の記述では、(テキスト)ファイル名を指定されています。
これが関係しているということはありませんか。
こちらで、ファイル名を指定した場合の動作までの確認は行っていませんが、参考になれば幸いです。
--------------
ヘルプに、第二引数にファイル名まで指定した例が載っていましたね。すみません。
構文:
ClientFileSaveDlg (タイトル, 初期ディレクトリ, フィルタ, デフォルト拡張子, 上書き確認)
第二引数は、ディレクトリを指定するようになっていますが、ogasawara さんの関数の記述では、(テキスト)ファイル名を指定されています。
これが関係しているということはありませんか。
こちらで、ファイル名を指定した場合の動作までの確認は行っていませんが、参考になれば幸いです。
--------------
ヘルプに、第二引数にファイル名まで指定した例が載っていましたね。すみません。
投票数:0
平均点:0.00
Re: ClientFileSaveDlg
msg# 1.2
Jiro123
投稿数: 271
ClientFileSaveDlg 関数のヘルプには、次のように書かれています。
Windowsの[名前を付けて保存]ダイアログを開き、選択されたファイル名が返ります。
戻り値:文字列 …選択されたファイル名
名前にSaveという単語がありますが、「名前をつけて保存」ダイアログを表示して、ダイアログで指定したファイルのパスを返す関数です。
ファイルの保存の処理まで行ってくれる関数ではないようです。
実ファイルの保存を行ってくれる関数としては、ClientBlb2File
が挙げられます。
ClientBlb2File 関数
役割:
BLOBをクライアントのファイルに変換
BLOB項目の内容をファイルとして変換してクライアント側に保存します。
構文:
ClientBlb2File (BLOB項目, ファイル名)
戻り値:
論理値… 処理に成功した場合「True」が返ります。
例:
ClientBlb2File (BE, 'C:\bfile.blb')
BLOB項目「BE」の内容をCドライブ上のbfile.blbと名付けられたファイルに変換します。
注意事項:
この関数は、リッチクライアントタスクでのみ有効なクライアント側の関数です。サーバ側で同じ機能を利用する場合は、Blb2Fileを使用してください。
Windowsの[名前を付けて保存]ダイアログを開き、選択されたファイル名が返ります。
戻り値:文字列 …選択されたファイル名
名前にSaveという単語がありますが、「名前をつけて保存」ダイアログを表示して、ダイアログで指定したファイルのパスを返す関数です。
ファイルの保存の処理まで行ってくれる関数ではないようです。
実ファイルの保存を行ってくれる関数としては、ClientBlb2File
が挙げられます。
ClientBlb2File 関数
役割:
BLOBをクライアントのファイルに変換
BLOB項目の内容をファイルとして変換してクライアント側に保存します。
構文:
ClientBlb2File (BLOB項目, ファイル名)
戻り値:
論理値… 処理に成功した場合「True」が返ります。
例:
ClientBlb2File (BE, 'C:\bfile.blb')
BLOB項目「BE」の内容をCドライブ上のbfile.blbと名付けられたファイルに変換します。
注意事項:
この関数は、リッチクライアントタスクでのみ有効なクライアント側の関数です。サーバ側で同じ機能を利用する場合は、Blb2Fileを使用してください。
投票数:1
平均点:10.00
Re: ClientFileSaveDlg
msg# 1.3
ogasawara
投稿数: 117
返信ありがとうございます。ClientBlb2File(BE, 'C:\bfile.blb')のBEの部分はファイル名ではなく内容のようですのでうまくいきません。ファイル名にしたら
ClientBlb2File ('/TEXT/'&Trim (A)&'EDI.TXT', 'C:\'&Trim(A)&'EDI.TXT')
としたらファイルはCドライブにできましたが内容は'/TEXT/'&Trim (A)&'EDI.TXT'と書かれただけでした。
ClientBlb2File ('/TEXT/'&Trim (A)&'EDI.TXT', 'C:\'&Trim(A)&'EDI.TXT')
としたらファイルはCドライブにできましたが内容は'/TEXT/'&Trim (A)&'EDI.TXT'と書かれただけでした。
投票数:0
平均点:0.00
Re: ClientFileSaveDlg
msg# 1.4
Tanda
投稿数: 2151
ogasawara さん、こんにちは。
これは、Jiro123 さんが言われるように、サーバで作成された
テキストファイルを一旦、Blob に置き換え、クライアント側で
再び、テキストに戻してやるという処理を追加してやる必要が
ありますね。
ClientFileSaveDlg() 関数は、単にファイル名を文字列として
取得するだけの関数ですね。
参考までですが、このあたりのプログラムの作りこみは、
uniPaaS RIA のセミナーでやっています。
タンダコンピュータ/丹田 昌信
これは、Jiro123 さんが言われるように、サーバで作成された
テキストファイルを一旦、Blob に置き換え、クライアント側で
再び、テキストに戻してやるという処理を追加してやる必要が
ありますね。
ClientFileSaveDlg() 関数は、単にファイル名を文字列として
取得するだけの関数ですね。
参考までですが、このあたりのプログラムの作りこみは、
uniPaaS RIA のセミナーでやっています。
タンダコンピュータ/丹田 昌信
投票数:1
平均点:10.00
Re: ClientFileSaveDlg
msg# 1.5
ogasawara
投稿数: 117
Jiro123 さん 丹田さんありがとうございました。TEXTを書き出す時にBLOB型項目に書きClientBlb2File関数でTEXTに書き出せました。
投票数:0
平均点:0.00
Re: Re: ClientFileSaveDlg
msg# 1.5.1
ogasawara
投稿数: 117
テキストはできたのですが改行文字がわかりません。ASCIIChr(10)といれてみたのですが無視されました。BLOB項目に改行をいれるのはどうしたらいいのでしょう。できたら教えていただけますか
投票数:0
平均点:0.00
Re: Re: Re: ClientFileSaveDlg
msg# 1.5.1.1
Tanda
投稿数: 2151
ogasawara さん、こんにちは。
改行コードだけでは駄目ですね。復帰コードと組み合わせて
書いてやってみてください。
ASCIIChr(13) & ASCIIChr(10)
これで、「復帰」+「改行」となります。アメリカのタイプ
ライターの文化の名残りです。
タンダコンピュータ/丹田 昌信
改行コードだけでは駄目ですね。復帰コードと組み合わせて
書いてやってみてください。
ASCIIChr(13) & ASCIIChr(10)
これで、「復帰」+「改行」となります。アメリカのタイプ
ライターの文化の名残りです。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
Re: Re: ClientFileSaveDlg
msg# 1.5.1.2
Jiro123
投稿数: 271
以前の投稿に、
>TEXTを書き出す時にBLOB型項目に書き
とありますが、具体的にどのようにしていますか。
この情報だけでは、実際にどのようなロジックを組まれているのか解らないので、できるだけ詳しく説明して頂けるとご支援できるかもしれません。
改行文字はどのようにしてセットしているのでしょうか。
私がテキストファイルをクライアント側で保存するプログラムを作成するときは、一旦別プログラム(タスク)でテキスト出力プログラムを作成し、そのファイルを、File2Blob関数(※)を使ってテキストファイルをBLOB型に変換してBLOB変数にセットし、そのBLOB変数をClientBlb2File関数を使って、クライアント側にファイルを保存しています。
ただし、この方法だと、ファイルサイズの大きなものを扱おうとすると、実行時にメモリエラーとなる可能性があります。
ネットワークスループットやマシンのメモリ容量、同時アクセスユーザ数などを考慮して、ファイルサイズの上限を考慮されることをアドバイスしておきます。
まずは目安として1MBくらいを上限にテストされてはどうでしょうか。
--------------
※投稿時は『Blb2File関数』と記述していましたので、誤りで合った為訂正しました。
>TEXTを書き出す時にBLOB型項目に書き
とありますが、具体的にどのようにしていますか。
この情報だけでは、実際にどのようなロジックを組まれているのか解らないので、できるだけ詳しく説明して頂けるとご支援できるかもしれません。
改行文字はどのようにしてセットしているのでしょうか。
私がテキストファイルをクライアント側で保存するプログラムを作成するときは、一旦別プログラム(タスク)でテキスト出力プログラムを作成し、そのファイルを、File2Blob関数(※)を使ってテキストファイルをBLOB型に変換してBLOB変数にセットし、そのBLOB変数をClientBlb2File関数を使って、クライアント側にファイルを保存しています。
ただし、この方法だと、ファイルサイズの大きなものを扱おうとすると、実行時にメモリエラーとなる可能性があります。
ネットワークスループットやマシンのメモリ容量、同時アクセスユーザ数などを考慮して、ファイルサイズの上限を考慮されることをアドバイスしておきます。
まずは目安として1MBくらいを上限にテストされてはどうでしょうか。
--------------
※投稿時は『Blb2File関数』と記述していましたので、誤りで合った為訂正しました。
投票数:0
平均点:0.00
Re: Re: Re: ClientFileSaveDlg
msg# 1.5.1.2.1
ogasawara
投稿数: 117
jiro123さん たびたびすいません。TEXTはMAGICで書き出しています。書き出し先を項目として変数で指定したBLOB項目に書き出しています。その項目をClientBlb2File関数でクライアントのドライブにテキストファイルとして書き出しています。
ClientBlb2File (F,'C:\'&Trim(A)&'EDI.TXT') FがBLOBの変数です。
入力日,得意先コード,
20101121,098765
などのテキストファイルですが
入力日,得意先コード,20101121,098765となっていまいます。
改行ができないのでASCIIChr(10)をいれたり\x0D\x0Aを入れてみたりしましたが基本がわかっていないのでまったくだめでした。
ClientBlb2File (F,'C:\'&Trim(A)&'EDI.TXT') FがBLOBの変数です。
入力日,得意先コード,
20101121,098765
などのテキストファイルですが
入力日,得意先コード,20101121,098765となっていまいます。
改行ができないのでASCIIChr(10)をいれたり\x0D\x0Aを入れてみたりしましたが基本がわかっていないのでまったくだめでした。
投票数:0
平均点:0.00
ClientFileSaveDlg
msg# 1.5.1.2.1.1
ogasawara
投稿数: 117
ASCIIChr(13)&ASCIIChr(10)をテキスト改行に入れると改行はするのですが改行後に大量の空白が入っていまいます。テキストエディターで見ると改行マークは間違えなく入っていました。ASCII関数はそのままUNICODEで5-10文字としていれました。わかっていなくてすいません。
投票数:0
平均点:0.00
Re: ClientFileSaveDlg
msg# 1.5.1.2.1.1.1
Jiro123
投稿数: 271
BLOB変数に直接更新する方法は私は採用していません。
恐らくその方法だと改行コードなどケアが大変だと思います。
(試したことはありませんが、思い通りの内容にならないなどに見舞われる可能性があります。)
先に書きましたように、一旦テキストファイル出力のプログラムを作成して、それを実行した後に、ファイルの内容をBLOBデータに変換するFile2Blb関数を使ってBLOB変数にセットし、その変数を使って、ClientBlb2File関数で、クライアント側でファイルを保存すれば良いかと思います。
処理の順序は、
TXTファイルを作成(別タスク(プログラム)をコール)
↓
File2Blb関数でBLOB変数にファイルをセット
↓
ClientBlb2File関数で、BLOB変数をクライアント側に保存
という流れになると思います。
このBLOB変数を使ってクライアント側でファイルを保存するという、この方法は、ファイルサイズには十分な配慮が必要となります。サイズが大きいとエラーになりますので、上限値制限をプログラムレベルで設定しておくのが賢明です。
ご参考になれば幸いです。
恐らくその方法だと改行コードなどケアが大変だと思います。
(試したことはありませんが、思い通りの内容にならないなどに見舞われる可能性があります。)
先に書きましたように、一旦テキストファイル出力のプログラムを作成して、それを実行した後に、ファイルの内容をBLOBデータに変換するFile2Blb関数を使ってBLOB変数にセットし、その変数を使って、ClientBlb2File関数で、クライアント側でファイルを保存すれば良いかと思います。
処理の順序は、
TXTファイルを作成(別タスク(プログラム)をコール)
↓
File2Blb関数でBLOB変数にファイルをセット
↓
ClientBlb2File関数で、BLOB変数をクライアント側に保存
という流れになると思います。
このBLOB変数を使ってクライアント側でファイルを保存するという、この方法は、ファイルサイズには十分な配慮が必要となります。サイズが大きいとエラーになりますので、上限値制限をプログラムレベルで設定しておくのが賢明です。
ご参考になれば幸いです。
投票数:1
平均点:10.00
Re: ClientFileSaveDlg
msg# 1.6
ogasawara
投稿数: 117
File2Blb関数でBLOB変数にファイルをセット とありますが
取り込めないのか
ClientBlb2File関数で、BLOB変数をクライアント側に保存で保存できません。BLOB変数を戻り値に指定していますがBLOB変数に書き込めたのかもわかりませんがTEXTファイルはできていますしTEXT作成の際にBLOB変数に作成したときはClientBlb2File関数で保存できたのでFile2Blb関数でBLOB変数にファイルをセットの問題のようです。注意することがあるのでしょうかサイズは非常に小さなもので問題はないと思われます。
取り込めないのか
ClientBlb2File関数で、BLOB変数をクライアント側に保存で保存できません。BLOB変数を戻り値に指定していますがBLOB変数に書き込めたのかもわかりませんがTEXTファイルはできていますしTEXT作成の際にBLOB変数に作成したときはClientBlb2File関数で保存できたのでFile2Blb関数でBLOB変数にファイルをセットの問題のようです。注意することがあるのでしょうかサイズは非常に小さなもので問題はないと思われます。
投票数:0
平均点:0.00
Re: ClientFileSaveDlg
msg# 1.7
ogasawara
投稿数: 117
すいませんでした。
TXTファイルを作成(別タスク(プログラム)をコール)
File2Blb関数でBLOB変数にファイルをセット
ClientBlb2File関数で、BLOB変数をクライアント側に保存
ですべてうまくいきました。作成先を変更していたのを間違えてできていないと思ってしまってすいません。Jiro123さん丹田さんほんとうにありがとうございました。
TXTファイルを作成(別タスク(プログラム)をコール)
File2Blb関数でBLOB変数にファイルをセット
ClientBlb2File関数で、BLOB変数をクライアント側に保存
ですべてうまくいきました。作成先を変更していたのを間違えてできていないと思ってしまってすいません。Jiro123さん丹田さんほんとうにありがとうございました。
投票数:0
平均点:0.00