フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
お問い合わせありがとうございます。
最新バージョンのMZ Platform4.0は推奨環境がWindows10および11、Linuxとなっております。
HPでの記載が古く、ご面倒をお掛けいたし申し訳ございません。会員様限定のダウンロードのページから、windows64bit版または32bit版のインストーラーを選択してダウンロードをお願いいたします。
https://ssl.monozukuri.org/mzplatform/download/members_only_dl/ご不明な点がございましたら、再度ご連絡いただければ幸いです。
よろしくお願い申し上げます。- この返信は1年、 2ヶ月前にMZPlatformユーザー会が編集しました。
MZPlatformユーザー会キーマスターご連絡ありがとうございます。
[EXCELファイルアクセス]への軽微な修正は行いましたが、ver.4.0と3.6で大きな変更はありません。
手元でもver.3.6_64で確認を行いましたが、固定値で絶対パスでファイル名を指定して、ファイルを読み込むことができました。原因として考えられるのが、ファイルまでのパスにスペースや全角文字が多用されていると読み込めない場合があります。
また、[外部プログラム通信]のメソッド「標準のアプリケーションファイルを開く(File)」の引数の型が「File」型となっている一方で、[EXCELファイルアクセス]のメソッド「ファイルからブックを読み込んで選択する(String)」の引数は「String(文字列)」型となっているように、どこかで文字列型ではなくファイル型やオブジェクト型のデータを要求されている処理があり、エラーが発生していることも考えられます。
[ファイル選択ダイアログ]のデータ選択イベントの内包データとして、「イベント対象データ」はファイルオブジェクト、「選択データ」は選択したファイル名が取得されます。
ただ、「ファイルからブックを読み込んで選択する(String)」で絶対パスでのファイル名でファイルが読み込まれますので、これは少し可能性は低いです。もう一度、[外部プログラム通信]などの余分な処理を削除したサンプルファイルをお送りいたしますので、お試しいただき再度お気づきの点をご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会キーマスターお世話になっております。
お問い合わせありがとうございます。1.印刷ダイアログ画面でのプリンタの「プロパティ」が開かない
大変申し訳ございませんが、[帳票]コンポーネントの印刷プレビュー画面右上に表示される「印刷」ボタンからの印刷プロパティダイアログには、JAVA由来のものを使用しており、一部機能に制限がございます。現在のところ、全てのプリンタで「プロパティ」ボタンを押してもプロパティが表示されません。
プロパティ設定が必要な場合は、予めプリンタ側で印刷設定を行っておく必要があります。
大変ご不便をお掛けいたしますが、どうぞご了承ください。2.「Microsoft Print to PDF」「Microsoft XPS Document Writer」を使用時に、用紙を横向きに設定しても縦向きに印刷される
まず、JAVAの仕様により縦横の向きが限定されており、縦向き用紙の辺の長短に対して、帳票ページの辺の長短も一致する向きで印刷されることをご承知ください。
ご参考:FAQ -帳票&印刷 回答22-https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/paper_print/paper_print_a22.html手元のWindows10のPCで検証しました。
ポートはPORTPROMPT:(ローカルポート)を指定し、ドライバー名: Microsoft Print To PDF、ドライバーの種類: Type 4 – ユーザー モード、ドライバーのバージョン: 10.0.17763.1 を使用しています。
1)帳票編集の「用紙設定」画面で横向きを選択します。
2)印刷プレビュー画面から「印刷」ボタンを押すと、印刷プロパティ画面が表示されます。
3)[ぺージ設定(S)]タブを選択して表示すると、用紙の向きが「横」になっているのが確認できます。プリンターの基本設定は操作していません。
4)「印刷」ボタンを押して横向きにPDFが出力されました。XPS出力でも同様です。ただし、以前手元の環境のプリンタ―設定を大分いじったため、デフォルト設定ではない可能性もあります。上記ローカルポートを選ぶと、ファイルの保存先選択画面が表示されないので、ポート名を変更して絶対パスを設定(例:C:\Users\user\Desktop\test.pdfがポート名)しました。そうすると「test.pdf」名で指定フォルダに保存されます。
元々Microsoft print to PDFの印刷基本設定が用紙サイズと用紙の向きしか選べないシンプルなもののため、『PDF化』で検索した中では、サードパーティーになりますが「CubePDF」等使用している例が多いようです。
以上、ご参考になれば幸いです。
ご不明な点、ご要望等ございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターご返信ありがとうございます。
EXCELファイルアクセスのサンプルを無理に使っていただく必要はないので、「ファイルからブックを読み込んで選択する(String)」にファイル名を設定できれば、処理は可能です。
大変失礼いたしました。目的のフォルダ内のファイルを開く、簡単なサンプルファイルを作成してみました。フォルダを指定すると、その中にあるファイルの名前が[リスト]に表示されます。
フォルダやファイル名の取得には[ファイル]コンポーネントを使用します。
今回は下位フォルダは表示せずファイルのみを取得するようにしてありますが、[ファイル]コンポーネントのメソッドによっては、下位フォルダーも取得可能です。
また[テーブル]への設定は[リスト格納変数]にファイルのリストを格納しましたので、要素数と同じ行数の[テーブル]を用意し、列データとしてリストデータを設定することが可能です。[EXCELファイルアクセス]以外にもファイル名が判れば文書を開くことができるコンポーネントとして[外部ファイル通信]などもございます。
また、今回は使用していませんが、複数のEXCELファイル内に格納された同じ文書番号を持つデータを探すには[データベースアクセス]で接続して、Select文で取得することも考えられます。サンプルファイルをご確認いただき、ご不明な点ご要望等ございましたら、どうぞご連絡いただければ幸いです。よろしくお願い申し上げます。
添付ファイル:
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
[EXCELファイルアクセス]コンポーネントを使ってEXCELファイルを読み込んでいるという前提で回答いたします。
[EXCELファイルアクセス]のメソッド「ファイルからブックを読み込んで選択する(Stirng)」でファイル名を指定して、ファイルを読み込んでいます。このメソッドの引数に絶対パスあるいはビルダーの起動ファイルからの相対パスで、ファイル名を指定することができます。EXCELファイルアクセス.mzaxのサンプルファイルで言うと、例えば[ファンクション(ID:26 EXCELインポート処理(セル用))]の処理要求イベントの2番目の接続処理です。
上記メソッドの引数に直接ファイル名を指定しても動作するはずです。ただし、この処理の前に[ファイル(ID:91 EXCELインポート処理(セル用)]コンポーネントにファイル名を設定しており、これはファイル保存時の拡張子の設定に使われています。
もし例えばサンプルファイルを読み込み時ダイアログ表示無しに改修するとしたら、
1)[ファイル選択ダイアログ]のデータ選択イベントに繋がる2つの処理を[ボタン]のアクションイベントに繋ぎ変えます。
2)1番目の接続処理の[ファイル]コンポーネント「ファイル名を設定する(String)」の引数にファイル名を指定します。
3)2番目の接続処理の[ファンクション]「ファンクションの呼び出し(1引数)」でもファイル名を引数に設定しています。2)でファイル名を設定済みの[ファイル]コンポーネントから「ファイルの絶対パスでのファイル名を取得する」で取得します。あるいは再度ファイル名を直接指定してもよいです。以上、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
なお、MZ Platform4.0から[データベースアクセス]を使ってJDBC接続でエクセルファイルが読み込めるようになりました。
https://ssl.monozukuri.org/mzplatform/docs_web/mztutorialexceldispatch.html
もしご興味があればご検討ください。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターmariaDBへの接続にはお使いになるDBのバージョンに合ったJDBCドライバ(例:mariadb-java-client-3.3.2.jar)をご用意いただき、ドライバ名(org.mariadb.jdbc)とサーバ名(例: jdbc:mariadb://localhost:3306/DBName)を変更すれば、接続が可能です。
サンプルファイルAP_DATA\Sample\データベースアクセス_4(DB切替版).mzaxを使うと、接続確認が簡単にできるかと思います。ただし、各DBによりデータ型の定義やフォーマットに細かい違いがあり、使用できるSQL文の書式や関数名なども違う場合があります。MZPlatformの[データベースアクセス]で実行しているSQLについて、そのまま移行可能か1つずつ検討する必要があります。
テーブル設計依頼時に、ある程度相談可能かと存じます。以上、ご不明な点、ご要望等ございましたら、ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターご連絡ありがとうございます。
既に作成したデータベースやテーブルの文字コードは、後から文字セットを変更しても変わりません。例えば作成時にcp932で作成していたら文字コードはCp932のままです。テーブルの定義も必要に応じて変更する必要があります。
また、MZから文字コードutf8mb4のテーブルに接続する際にはcharacterEncoding=MS932の指定は不要です。以下データベースのダンプができているという前提で、ご提案いたします。
1)文字コードの整合性の問題が大きいと推測しています。MySQL8.0はデフォルト文字コードがutf8mb4なので、可能であればMySQL8.0をhttps://dev.mysql.com/downloads/windows/installer/8.0.htmlからダウンロードしてインストールします。最新バージョンはMySQL8.0.35です。同一機にインストールする場合は、ポート番号をデフォルトの「3306」から例えば「3307」等に変更しなければ、インストールに失敗することがあります。2)dumpしたバックアップファイルを開くと、テーブルの数の分「CREATE TABLE」の記述がある箇所があるかと思います。最後に文字コードを指定している部分があるので、ここを「DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;」に書き換えます。
3)MySQL8.0に変更したバックアップファイルをインポートします。システムデータベースは移行せず、必要なデータベースだけインストールするのが良いようです。
4)MZで接続できるか検証します。変更したポート番号を指定し、接続文字コードは指定しません。サーバ名の部分は例えば「jdbc:mysql://localhost:3307/」となります。
ポート番号はインストーラーのconfigrationまたはmy.iniの記述により、後から変更することが可能です。5)MySQL8.0のインストールが難しい場合は、MySQL5.7のC:\ProgramData\MySQL\MySQL Server 5.7」内にある「my.ini」に記述を追加するのが簡単かと思います。
1.[client]と[mysql]には「default-character-set=utf8mb4」
[mysqlld]には「character-set-server=utf8mb4」の記述を追加します。
2.設定を有効にするにはmysqlサーバーを再起動する必要があります。
my.iniファイルを保存するとき、ファイル権限の変更が必要になる場合があります。6)検証しているデータベースでALTER TABLE テーブル名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ciを実行します。
7)MZで接続できるか検証します。接続文字コードは指定しません。
以上、どうぞご検討ください。
ご不明な点、ご質問等ございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターご連絡ありがとうございます。
実は手元のPCのIMEでは環境依存の丸数字が2種類あり(添付の画像をご参照ください)shift-jisコードを持つNEC特殊文字はエラーは発生しませんが、utf-8のコードのみの丸数字はInsert時にエラーが発生します。
今後多くの環境依存文字に対応する必要性が考えられる場合は、前回書きましたように可能であればデータベーステーブルの文字コードを「utf8mb4」に変更することもご検討ください。
なお、MySQLではutf8はuft8mb3を指すため、utf8mb4を明示的に指定する必要があります。MySQL8.0ではデフォルトの文字セットはutf8mb4になっています。MZ3.6を使い手元で検証した結果は以下の通りです。
1)接続時にcharacterencoding=ms932を設定する
[1]shift-jisコードを持つ丸数字は、Insert時もselect時もエラーは発生しない
[2]shift-jisコードを持たない丸数字は、エラーは発生しないが、selecして見ると「?」に変わっている。2)接続時にcharacterencoding=ms932を設定し、さらに接続後、set names cp932を実行する
1)と結果は変わらない3)characterencoding=ms932を設定しない
[1]shift-jisコードを持つ丸数字は、Insert時もselect時もエラーは発生しない
[2]shift-jisコードを持たない丸数字は、エラーが発生し追加できない4)characterencoding=ms932を設定せず、set names cp932を接続後に実行する
どちらの文字もエラーが発生し、追加できない
という結果でした。文字コードの他にも、「set names cp932」が実行されている(あるいは「my.ini」の[mysqld]の項に「init-connect=’SET NAMES cp932’」がある)なども関係しているかもしれません。
テーブルの文字コードは「show create table テーブル名;」で確認できます。
以上、入力される文字のコードと接続時の文字コード設定をご確認いただいても改善されない場合は、お手数ですが再度ご連絡いただければ幸いです。「\X87@」がshit-jisコードの丸数字1を指しているのも気になります。
どうぞよろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
(1)JDBCドライバーの更新をお試しください。
コマンドラインでは環境依存文字も入力可能ということですので、まず考えられるのがJDBCドライバが適合していないということです。手元にMySQL5.7.34をインストールして試してみたところ、古いJDBCドライバでは環境依存文字をデータ追加する際エラーが発生しました。
MySQL8.0用の最新のドライバは現在「mysql-connector-j-8.0.33.jar」ですが、MySQL5.7.34にも適合しています。JDBCドライバを変更すると環境依存文字を追加できるようになりました。ドライバファイルはMZPlatform\Java\jre8_mz3.6_64\lib\ext内に設定していただいています。(2)データベースに設定されている文字コードをご確認ください。
ドライバファイルを更新しても改善されない場合は、データベースに設定されている文字コードをご確認ください。
コマンドラインから「show variables like “chara%”;」を入力して実行すると、文字コードの一覧が取得できます。MySQL5.7はデフォルトでは文字コードが「latin1」になっている箇所があります。
変更する必要があれば「C:\ProgramData\MySQL\MySQL Server 5.7」内にある「my.ini」に記述を追加します。
1.[client]と[mysql]には「default-character-set=utf8mb4」
[mysqlld]には「character-set-server=utf8mb4」の記述を追加します。
2.設定を有効にするにはmysqlサーバーを再起動する必要があります。(3)後からテーブルや列、データベースの文字コードを変更することもできます。
ALTER TABLE テーブル名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
ALTER DATABASE データベース名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
などを実行します。
ただし、実行前には必ずmysqldump等でバックアップを取り、変更しても問題が起きないか検証してから行う必要があります。まずは、JDBCドライバファイルの更新をお試しいただき、改善されない場合はお手数ですが再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターいつもお世話になっております。
不具合を改修したパッチファイルを作成しましたので、設定をお願いいたします。
以前添付した「pfppr.jar」と同名になっていますので、MZPlatform\4.0\jarsフォルダに入れ、旧ファイルの上書きをお願いいたします。
その他の設定はございません。以上、ご不明な点がございましたら、どうぞご連絡ください。
よろしくお願い申し上げます。添付ファイル:
-
投稿者投稿