作成した返信
-
著者投稿
-
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フォルダに入れ、旧ファイルの上書きをお願いいたします。
その他の設定はございません。以上、ご不明な点がございましたら、どうぞご連絡ください。
よろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
データを設定していない空の[テーブル格納変数]を帳票の[テーブル格納変数]のデータ取得元とし、帳票編集画面を表示すると、描画に時間が掛かり画面表示が白くなってしまう現象をこちらでも確認いたしました。
これは修正パッチとは関係なく起っている現象かと存じます。
ご報告いただき大変助かります。誠にありがとうございます。手元で確認した限りでは[テーブル格納変数]に一旦データを設定すれば、その後変数に「空のテーブルを設定」されても帳票編集画面の描画に時間が掛かることはありません。
変数のデータはビルダー終了後は保持されません。
大変お手数ですが、アプリケーションビルダー起動後[テーブル格納変数]にまだ一度もデータが設定されていない状態での帳票編集画面表示を避けるように、処理設定をお願いいたします。この現象が発生しないように修正を検討いたしますが、少々お時間をいただければ幸いです。
修正ファイルができましたら、ご返信申し上げます。ご面倒をお掛けいたしますが、どうぞよろしくお願い申し上げます。
MZPlatformユーザー会サイト管理者お問い合わせありがとうございます。
返信が遅くなり申し訳ございません。[帳票]コンポーネントについてご指摘のように、現在のところ行高さが不定の場合に「繰り返し印刷」の表示行数を固定で決めると、表示しきれない行が出てくる可能性があります。
テーブル高さが表示領域よりはみ出してしまった場合、指定表示行数に関わらず最適な行で区切るように修正いたしましたので、ご確認ください。お手数ですが、以下の手順をお試しください。
——————————-
1)添付の「pfppr.jar」をMZPlatform\4.0\jarsフォルダに入れます。
2)MZPlatform\4.0\etcフォルダ内の『PlatformClassPath.ini』をメモ帳などで開き、先頭にパスを記述し、保存します。
例えば以下のような内容になります。
——————————
# MZ Platform ClassPath
jars/pfppr.jar
jars/mzextension.jar
jars/mzplatform.jar
・・・・
——————————
3)アプリケーションビルダーを再び立ち上げてください。以上設定していただいても改善されない場合は、どうぞ再度ご連絡ください。
いつも貴重なご意見をありがとうございます。
どうぞよろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会サイト管理者お問い合わせありがとうございます。
日付型列を含む[テーブル]をそのまま[CSV出力]コンポーネントでCSVファイルとして出力すると、ご指摘の通り空欄にはNULL値が、また値が入っているセルは時間部分まで出力されます。これを防ぐためには一旦列型を文字列型に変換し、日付の値は[カレンダー]コンポーネントで書式を整える必要がありますが、これを簡単に行う複合コンポーネントがありますのでお試しください。
1)アプリケーションビルダー編集画面上で右クリック>[複合コンポーネント追加]>[テーブル]>[テーブル日付データ文字列変換.mzcx]を選択して追加します。2)[CSV出力]の出力のメソッド(例「指定のファイル名でCSVデータを書込む(String, PF
ObjectTable)」の前に[テーブル日付データ文字列変換]の接続処理を追加します。
メソッド「テーブルの日付データを書式指定文字列へ変換(Object, Object)」を設定します。
引数0はテーブルのデータ、引数1は日付書式(例:yyyy/MM/dd)です。
yが年、Mが月、dが日を表します。3)[CSV出力]の引数1に上記2)でのメソッド処理結果を指定します。
文字列型に変換済みのテーブルデータをCSV出力することになります。処理の設定は例えば以下のようになります。
——●——[テーブル日付データ文字列変換]
| テーブルの日付データを書式指定文字列へ変換
| 引数0:メソッド戻り値 テーブル テーブルデータを取得する
| 引数1:固定値 yyyy/MM/dd
|
|——[CSV出力]
指定のファイル名でCSVデータを書込む
引数0:固定値 あるいは ファイル選択ダイアログ等で指定
引数1:メソッド処理結果 テーブルの日付データを書式指定文字列へ変換以上お試しいただき、ご不明な点、ご要望等ございましたら、再度ご連絡ください。
よろしくお願い申し上げます。
- この返信は、 MZPlatformユーザー会 により、 1 年 前 に編集されました。
MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
以下の設定をお試しください。
MZ Platform 4.0_32\etcフォルダ内の文書「Platform.ini」の下から三番目の項にJavaInvoke=Java/jre8_mz4.0_32となっているところがあります。
これをJavaInvoke=Java/jre8_mz3.6に変更してみてください。
MZ4.0_32で使用するJavaのバージョンが3.6で使用していたものになります。以上お試しいただき改善されない場合は再度ご連絡いただければ幸いです。
お手数をお掛けいたしますが、どうぞよろしくお願い申し上げます。MZPlatformユーザー会サイト管理者ご連絡ありがとうございます。
大変申し訳ございませんが、WindowsXPは推奨される動作環境には含まれません。
動作環境については詳しくは『インストールガイド』をご覧ください。
MZ Platform4.0の32ビット版は今回はMZ Platform 4.0_32 という名前でインストールされているので、併せてご確認ください。もし、EXCELファイルアクセス関連のMZ4.0の機能が必要な場合、Apache POIのJARファイルをMZ3.6に設定することで使用できる可能性があります。
現在WindowsXPをインストールしているPCは手元になく確認ができないため、不確実ではありますが、もしご希望がございましたらご連絡いただければ幸いです。以上、解決に結びつかず申し訳ございませんが、どうぞよろしくお願い申し上げます。
MZPlatformユーザー会サイト管理者掲示板のシステムエラーのため、対応が大変遅れまして誠に申し訳ございません。
大変ご迷惑をお掛けいたしました。まず、確認させて頂きたいのですが、現在お使いのMZプラットフォームのバージョンは幾つでしょうか。
新しくバージョン4.0を今夏にリリースしております。[EXCELファイルアクセス]関連のEXCELPOIファイルも更新しているため、エラーが回避できる可能性があります。
ダウンロードページから宜しければお試しください。
(複数バージョンを共存させても問題ありません。新しいバージョンをインストール後、旧バージョンをアンインストールしたときに、ファイルアイコンが変わってしまうことがありますが、ファイルの関連付けを確認するか、再度インストーラーを動かすと解決されるかと思います)また、書き込み後のEXCELファイル起動時にどのようなエラーメッセージが表示されるか、お手数ですがお知らせいただけないでしょうか。
実を申しますと、お送りいただいたアプリケーションとファイルをMZver3.6、ver.4.0 にて試してみましたが、手元の環境ではエラーが再現できませんでした。
MZのバージョンアップで改善されない場合は、エラーの内容をお知らせいただくと大変助かります。ご返信が遅くなりましたこと、重ねてお詫び申し上げます。
以上、どうぞよろしくお願い申し上げます。 -
著者投稿