2017年9月29日金曜日

ローカル レポートの処理中にエラーが発生しました。[MicrosoftReport]

"ローカル レポートの処理中にエラーが発生しました。"

Microsoftレポートのエラーは何でもこのエラーだから原因が分かり辛い・・・。

レポートのどの部分でエラーが発生しているか調べるために、
デザインの項目を削除しながら実行してエラー箇所を特定。

一番多い原因はレポートに設定している変数名が
流し込んでいるデータになかったり、
データ型が違ったり。

デザイン項目の一括削除は範囲選択して右クリックの削除!

2017年9月17日日曜日

SQLで最大値の行のみをJOIN [SQL]

開始日で履歴を保持している商品マスタをLEFT JOINしたい場合。

ShohinT(商品マスタ)
| ShohinCD | YYMMDD |

SELECT *
FROM UriageT
LEFT JOIN  ShohinT
ON UriageT.ShohinCD = ShohinT.ShohinCD
AND ShohinT.YYMMDD =
    (SELECT MAX(ShohinT.YYMMDD) AS F1
    FROM ShohinT AS S2
    WHERE S2.ShohinCD = UriageT.ShohinCD
    AND S2.YYMMDD <= UriageT.YYMMDD)

売上テーブルの売上日(UriageT.YYMMDD)以前で最大日の商品マスタをJOIN。ONの中でサブクエリを書けばできた。

SQLServerでもMySQLでも同じそう。

Windowsだとテーブル名が小文字になる [MySQL]

Linuxで作成したMySQLのバックアップファイルをWindowsで復元したら何故か全部小文字に・・・。

調べたら
lower_case_table_names
って設定がLinuxでは0だけどWindowsでは1らしい。

なので設定ファイルに追加。

C:\ProgramData\MySQL\MySQL Server [var]\my.ini
↑ProgramDataフォルダは隠しフォルダ

[mysqld]に

lower_case_table_names=0

を追加。

でサービスからMySQLを再起動。
"ローカルコンピューター上のMySQLサービスは起動して停止しました。・・・・"
ってエラーで起動しない。

lower_case_table_names=0
はWindowsでは設定できないらしい・・・。

しょうがないので、
lower_case_table_names=2
にしてみて再起動したら起動した。

バックアップファイルを復元したらちゃんと大文字に。
なんで初期値小文字なの・・・。