2017年12月6日水曜日

エラー "debuggable program. No debugger found at:" [Genexus]

Genexusでデバッグをしたら↓のエラーが、

Warning: [PROGRAM] debuggable program. No debugger found at: [PCName]
Description: Connection refused: connect

デバッグができない・・・。

コンパイル結果を削除して全てリビルドし直したらエラーが出なくなった。

今回はjavaなので

Tomcat/webapps/ナレッジ名

のフォルダを削除。

2017年12月2日土曜日

LaravelをWindowsのApacheで動かす [PHP Laravel]

●Apacheのインストール

●PHPのインストール

●php.iniを編集
 ◯php/php.ini-developmentをコピーし、php/php.iniを作成

 ◯extension_dir を設定

 ◯使用するdllのコメントを外す
  extension=php_openssl.dll
  extension=php_pdo_mysql.dll
  など

●Laravelプロジェクトフォルダをサーバーにコピー

●Apacheのconfigフォルダのhttpd.confを編集
 ◯サーバールートやポートの設定
  ServerRoot・Listenを設定
  
 ◯PHPの有効化
  PHPIniDirなどを設定
  
 ◯LaravelProject/public/.htaccess
  をApacheに認識させる
  
  ・LoadModule rewrite_module modules/mod_rewrite.so
   のコメントを外す

  ・DocumentRoot 内の
   AllowOverride None
   ↓
   AllowOverride All

 ◯ドキュメントルートかバーチャルホストを
  Laravelプロジェクトフォルダ内のpublicに設定

   #ドキュメントルートの場合はDocumentRootを設定

   #バーチャルホストの場合は
    Apache/conf/extra/httpd-vhosts.confを↓のように設定
--------------------------------------------------------------
<VirtualHost *:80>
    DocumentRoot "C:/LaravelProject/public"
    ServerName localhost
    <Directory "C:/LaravelProject/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
--------------------------------------------------------------

ぐらいで動いた。
色々と試行錯誤した・・・。

2017年11月16日木曜日

Eloquentのインクリメントとタイムスタンプをデフォルトでなしに [PHP Laravel]

LaravelのEloquentは、
プライマリーキーは"id"のインクリメントで
"created_at"と"updated_at"のタイムスタンプを持っているテーブルになる。
テーブルがこの構成じゃない場合は下記2行をModel毎に追加する。

-----------------------------------------------------
//プライマリーキーはインクリメントではない
public $incrementing = false;
//created_atとupdated_atを使用しない
public $timestamps = false;
-----------------------------------------------------

Model毎に追加するんじゃなくてデフォルトでなしにしたい。

LaravelProject\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php

public $incrementing = true;
があるのでfalseに。

LaravelProject\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasTimestamps.php

public $timestamps = true;
があるのでfalseに。

これでModel毎に追加する必要なし。

2017年11月13日月曜日

Eloquentを使用してDBに一括INSERT [PHP Laravel]

LaravelのEloquentを使用して、DBに一括でINSERT。

//配列を宣言
$User_A = [];

for ($i = 1; $i <= 10; $i++) {
   
    $User_E = new User();

    $User_E->id = $i;
    $User_E->name = "テスト";

    //Modelを配列にし追加
    $User_A[] = $User_E->toArray();
}

//引数に配列を渡し、一括でINSERT
User::insert($User_A);

これで大量のINSERTをする時にちょっとは早くなりそう。

2017年11月9日木曜日

Validationで数値の範囲チェックが範囲内なのにエラー [PHP Laravel]

Validationで数値の範囲チェックが範囲内でもエラーになる・・・。

--------------------------------------------------------------------
        $validator = Validator::make($request->all(), [
            'item'=>'between:2000,3000',
        ]);
--------------------------------------------------------------------

数値チェックを入れたら正常に判定されるようになった。
--------------------------------------------------------------------
        $validator = Validator::make($request->all(), [
            'item'=>'integer|between:2000,3000',
        ]);
--------------------------------------------------------------------

2017年11月8日水曜日

SELECT結果のインスタンスでDBフィールドを入力補完 [PHP Laravel]

LaravelのIDE_Helperを使用し"DB(Model)のフィールドを入力補完"まで行ったら、
Modelクラスをnewした場合は、DBフィールドが入力補完されるけど、SELECT結果のインスタンスでは補完がされない・・・。

Phpstormでは補完されたけど、Eclipseでは補完されず・・・。

どうやらwhereの返り値が何か分からないぽい。
なので、IDE_Helperが生成したアノテーションに1行追加。

/**
  * App\Table
  *
  * @property int $Field1
  * @property string $Field2
  * @method static \Illuminate\Database\Eloquent\Builder|\App\Table whereField1($value)
  * @method static \Illuminate\Database\Eloquent\Builder|\App\Table whereField2($value)
  * @method static \Illuminate\Database\Eloquent\Builder|\App\Table where($value) //***追加行***
  * @mixin \Eloquent
  */

これでwhereの返り値が判定でき、補完されるように!

where以外が最後の場合はまたそのメソッドをアノテーションに追加しなきゃだけど・・・

もっといい方法あるのかな??

2017年11月5日日曜日

DB(Model)のフィールドを入力補完 [PHP Laravel]

LaravelのEloquentを使ってみたけどDBフィールドをエディターが入力補完してくれない。

ってことで、補完用の機能を追加してくれる"laravel-ide-helper"を導入。

◯プロジェクトフォルダに移動してコンポーサーでダウンロード
composer require barryvdh/laravel-ide-helper

◯phpにダウンロードしたファイルの読み込み宣言
LaravelProject/config/app.phpファイルの'providers'に
   
  Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

を追加

◯インストール
composer require --dev barryvdh/laravel-ide-helper

◯補完用のファイルの生成
php artisan ide-helper:generate

→LaravelProject\_ide_helper.php
 が出来る。

◯DB補完用ファイルの生成機能を追加
composer require doctrine/dbal

◯DB補完用ファイルの生成
php artisan ide-helper:models

→LaravelProject\app の下にあるModelファイルに補完用コメントが追加される。

/**
 * App\Table
 *
 * @property int $Field1
 * @property string $Field2
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Table whereField1($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Table whereField2($value)
 * @mixin \Eloquent
 */

このコメントを認識してくれるIDE・エディターなら補完してくれる。

2017年10月23日月曜日

aspxファイルのコピーして作成したら前のクラス名に戻る [ASP.net]

C#のaspxファイルをコピーして新しい画面を作成したときに、
ファイル名とクラス名を新しい名前に変更し保存したりすると、何故かクラス名が前の名前に戻ってしまう・・・

htmlソースの一番上の行にフォル名とクラス名持ってた。

<%@ Page Title="" Language="C#" MasterPageFile="" AutoEventWireup="true" CodeBehind="[FileName].aspx.cs" Inherits="[NameSpace].[ClassName]" %>

ここも新しい名前に修正したら戻らなくなった。

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
にしてみて再起動したら起動した。

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

2017年8月3日木曜日

Visual Studio 2017にレポートデザイナーをインストール [MicrosoftReport]

VisualStudio2017にMicrosoft Reportのレポートデザイナーをインストールする方法。

VisualStudio2017を起動して、
[ツール]→[拡張機能と更新]
を選択。


左のオンラインを選択

右上の検索に"Report rdlc"と入力

一覧に、
[Microsoft Rdlc Report Designer for Visual Studio]
が表示されるので、ダウンロードを選択


ダウンロード後、VisualStudioを閉じるとインストールが始まる。


これでやっとVisualStudio2017でMicrosoft Reportが使える!

2017年6月14日水曜日

処理が遅い [GeneXus]

Genexusでバッチ処理を作成して走らせたら、めっっっちゃ遅い!!


原因は、デバッグモードで実行しているからだった。

.netではテストの間はずっとデバッグモードだけどGenexusでは使い分けが必要そう。

バッチ処理でデバッグしたい場合はウォッチしたいデータだけを処理するように
Whereを入れたりしないと全く進まない・・・。

2017年4月7日金曜日

ASP.netで全てのコントロールの背景色・内容クリア・Enable・Visibleを変更する方法 [C#]

変更メソッド
------------------------------------------------------------------
 public static void ClearTextBox(Control controls)
{
    //コントロールがテキストボックスの場合
    if (controls is TextBox)
    {
        TextBox tb = (TextBox)controls;

        //テキストをクリアする場合
        tb.Text = "";
       
        //背景色を変更する場合
        tb.BackColor = SystemColors.Window;
       
        //Enabledを変更する場合
        tb.Enabled = true;

        //Visibleを変更する場合
        tb.Visible = true;
    }

    //自分にコントロールが含まれているか
    if (controls.HasControls())
    {
        //自分に含まれているコントロールのループ
        foreach (Control cControl in controls.Controls)
        {
            ClearTextBox(cControl);
        }
    }
}
------------------------------------------------------------------

呼び出し側
------------------------------------------------------------------
ClearTextBox(this)
------------------------------------------------------------------

画面の特定の部分だけに適用したい場合は、
画面にPanelを配置してパネルを投げればPanel内のTextBoxにだけ適用される。
------------------------------------------------------------------
EnableTextBox(Panel1)
------------------------------------------------------------------

2017年4月5日水曜日

データソースに最新の情報が反映されない [MicrosoftReport]

Microsoft Reportでデータソースのクラスの内容を変更した後、デザイナーのデータソースを"最新の情報に更新"としても反映されない・・・

ビルドをしないと反映されないようなのでビルドを行った後に試してみてもダメ・・・。




でもなぜか、VisualStadioを再起動した後に、"最新の情報に更新"を行ったら反映された。

色々作業をした後だと反映されなくなってしまうみたいだけど原因不明。
VisualStadioのバグかな?

しょうがないので内容を変更する都度、VisualStadioを再起動。

2017年3月30日木曜日

テーブルで1行おきに背景色を設定する方法 [MicrosoftReport]

流し込むデータにレコード番号の項目を設定しておく。

デザイナーでテーブルの行を選択し、プロパティの式を選択。


式に↓

 =IIf((Fields!RecordNo.Value Mod 2) = 0, "Transparent","WhiteSmoke")

のようにレコード番号が2で割り切れる場合と割り切れない場合で背景色を変える。

Transparent:背景色なし


で出来るけど・・・

印刷するのにすごく時間がかかるようになってしまう。
なんで・・・式ってそんなに遅くなるの・・・

ページ数が多くなる帳票では2行毎に出力するしかないかなぁ・・・

2017年3月29日水曜日

縦結合したテーブルをグループ化する方法 [SQLServer]

SQLServerでテーブルを縦結合し、その結果をグループ化する方法。

-------------------------------------------------------------------------
SELECT TOKCD, YMD, SUM(KINGAKU) AS KINGAKU_T FROM
(
  SELECT TOKCD, YMD, KINGAKU FROM TOK_M
  UNION ALL
  SELECT TOKCD, YMD, KINGAKU FROM TOK_U
  UNION ALL
  SELECT TOKCD, YMD, KINGAKU FROM TOK_Z
) AS UNIONTABLE
GROUP BY TOKCD, YMD
-------------------------------------------------------------------------

最初、

')' 付近に不適切な構文があります。

とエラーが出たけど、AS [テーブル名] を付け忘れてた。

2017年3月23日木曜日

レポート機能でサーバー上にPDFを作成して開く [MicrosoftReport]

ReportViewerの印刷ボタンがIE以外だと出ない問題の解決策!

サーバー上にPDFを作って、それを別タブで開く。

-------------------------------------------------------------------------------------
using Microsoft.Reporting.WebForms;
~~~~~~~~~~~~~~~~~~~

//印刷データ
List<test> Datas = new List<test>();
~~印刷データの生成~~

LocalReport localReport = new LocalReport();

//デザインファイルの指定
localReport.ReportPath = @".\Report.rdlc";

//サブレポートがある場合は設定
localReport.SubreportProcessing += new SubreportProcessingEventHandler(SubreportProcessingEventHandler);

//データをセット
ReportDataSource reportDataSource = new ReportDataSource("DataSet_Design", Datas);

localReport.DataSources.Add(reportDataSource);

localReport.Refresh();

//PDFデータをバイト配列に格納
byte[] bytes = localReport.Render("PDF");

//tempフォルダにpdfを作成
string fileName = "Report" + DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".pdf";

FileStream fs = new FileStream(@".\temp\" + fileName, FileMode.Create);

fs.Write(bytes, 0, bytes.Length);

fs.Close();

//pdfを別タブで開く
string url = @"\\temp\\" + fileName;

ClientScript.RegisterStartupScript(this.Page.GetType(), "OpenNewWindow",
    @"<script language=""javascript"">window.open('" + url + @"', 'TARGET');</script>");
-------------------------------------------------------------------------------------

ローカル環境にAcrobat ReaderなどのPDFを開く機能が必要になるけど、とても良い感じに。

これでASP.netもMicrosoftReportで十分。

2017年3月17日金曜日

'Tablix' に内部メンバーを含む詳細メンバーが含まれています。詳細メンバーには、静的な内部メンバーのみを含めることができます。 [MicrosoftReport]

MicrosoftReportで一覧の中に表を作成し、データを登録しビルドをしたら、

"tablix 'Tablix' に内部メンバーを含む詳細メンバーが含まれています。詳細メンバーには、静的な内部メンバーのみを含めることができます。"
とエラーが。

表はデフォルトでは行数がデータ数だけ表示されるようになっているので、一覧の中ではダメらしい。

データの行を右クリック→行グループ→グループの削除
でグループのみの削除


でグループを削除すれば1行しか表示しない静的なテーブルになってエラーは消えた。

2017年3月16日木曜日

ASP.netでデータソースにオブジェクトを設定できない [MicrosoftReport]

ASP.netでレポートの作成時に、オブジェクトをデータソースにしたいのに設定画面がデータベースへの接続しか出ない!

ASPだとオブジェクトをデータソースに出来ないの・・・

しょうがないので、クラスライブラリのプロジェクトを作って、ASPのプロジェクトから参照したら出来た。

 
なんで直接出来ないんだろ・・・。

2017年3月12日日曜日

Visual Studio 2017にレポート機能がない [MicrosoftReport]

Visual Studio 2017 Communityを入れてみたけどレポート機能がない!!

Visual Studio 2015で作った.rdlcファイル開いてもxml形式で開かれるだけ・・・
 コンパイルは出来るけど。

Visual Studio 2015でインストール時に
SQL Server Data Tools
を入れなきゃだったから2017でも入れてみたけどダメ・・・

SQL Server Data Toolsの最新バージョンを検索したら
まだVisual Studio 2015になってるから
https://msdn.microsoft.com/ja-jp/mt186501

2017はまだなのかなぁ・・・

早めに対応してくれると良いけど。


2017-08-03 追記
↓インストール方法発見!
https://yukamemo-ver3.blogspot.jp/2017/08/visualstudio2017-microsoftreport.html

2017年3月10日金曜日

ASP.netのレポートに独自クラスでデータをセット [MicrosoftReport]

レポートにデータを流し込むには、DataSetが一般的みたいだけど、
DeataSetだと文字列で指定しなきゃだから使い勝手が悪い・・・。
 
なのでクラスのListをデータに流し込む方法!

まずはオリジナルのクラスを作成。
----------------------------------------------------------
public class SampleDesign
{
    //Selectメソッドで流し込むデータを生成し返り値にする
    //引数は必要なものを必要なだけ定義する
    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public List<SampleDesign> Select(int test)
    {
        List<SampleDesign> datas = new List<SampleDesign>();

        SampleDesign data;

        data = new SampleDesign();
        data.TestCD = 1;
        data.TestName = "表示名称";
        datas.Add(data);
       
        data = new SampleDesign();
        data.TestCD = 2;
        data.TestName = "表示名称2つ目";
        datas.Add(data);
        return datas;
    }

    //帳票の項目
    public int TestCD { get; set; }
    public string TestName { get; set; }
}
------------------------------------------------------

デザイン画面にReportViewerとScriptManagerとObjectDataSourceを配置する。
ビルドを行い、DataSourceのデータソースの定義で作ったクラスを選択する。



データメソッドの定義画面で、
SELECTタブのメソッドの選択で、クラス内に定義したSelectを選択する。



パラメーターの定義画面で、
Selectに必要なパラメーターの設定を行う。


パラメーターはObjectDataSource1.SelectParametersにセットすればSelectで受けられる。
--------------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
    this.ObjectDataSource1.SelectParameters[0] =
           new Parameter("test", TypeCode.Int32, "4321");
}
--------------------------------------------------------------------

これでビルドして実行!!

2017年3月3日金曜日

DBテーブルのキーをUPDATE [GeneXus]

GenexusでDBテーブルのキーをUPDATEしたい場合、

------------------------------------------
For each TABLE

  Where KeyColumn = &test

  New

    KeyColumn = 値

  Endnew
 
  Delete

Endfor
------------------------------------------

これでキーチェンジ完了!!

Foreach内でNewを書くと、SELECTした内容をそのまま書いてくれるので、
全ての項目を入れ直す必要なし。

同じようにコピーしてINSERTしたい場合も、Foreach内のNewで変更したい
項目だけを入れなおせばできる。

2017年2月28日火曜日

ページ毎に明細と合計を表示 [MicrosoftReport]

Microsoftレポートでページ毎に明細と合計を表示したい場合、
単票形式のレポートで、サブレポートに明細を表示すれば出来る!

これなら一通りの帳票は出来そう。

単票形式で改ページ
https://yukamemo-ver3.blogspot.jp/2016/09/microsoft-report.html

サブレポート
https://yukamemo-ver3.blogspot.jp/2016/09/microsoft-report_19.html

ちょっとデザインしにくいけどVBReportは遅いしActiveReportは高いし、これでいいかも。

2017年2月24日金曜日

エラー: Unknown error parsing expression [GeneXus]

Genexusでコードを保存しようとしたら
"エラー: Unknown error parsing expression"
ってエラー。


アンノーンじゃ何も分からないと思っていたら、
コードの中に全角スペースが入ってたみたい・・・。

Unknown errorはほぼこれだから、
エラーが出たら、まずCtrl+Fの検索で全角スペースを検索!

2017年2月23日木曜日

IBMのASでRPGを書くときのエディタ機能のメモ [RPG]

・行操作
行番号のところに下の文字を入力し送信
I:行挿入
D:行削除
DD~DD:行範囲削除
M:行移動
MM~MM:行範囲移動
C:行コピー
CC~CC:行範囲コピー
A:M・Cの行を下に挿入
B:M・Cの行を上に挿入

・その他機能
検索:SEUに検索文字列を入力しShift+F4
画面左移動:Shift+F7
画面右移動:Shift+F8
画面分割:Shift+F3
行フォーマット入力表示:F4

普段使うのはこんなもん。

2017年2月20日月曜日

列の幅が自動調整されない [Excel]

Excelで列の幅を自動調整するために、全選択して列の境目をダブルクリックでしたけど、自動調整されない・・・



原因は"折り返して全体を表示する"になっていたからだった。

2017年2月17日金曜日

ASP.netのReportViewerにIE以外だと印刷ボタンが表示されない・・・[MicrosoftReport]

ASP.netのReportViewerを使用したらIEだと直接印刷ができるけど、
それ以外のEdgeとかChromeだと印刷ボタンが表示されない・・・

出す方法がないか調べたけどハードル高そう・・・

pdfでダウンロードボタン押すと、下にダウンロードファイルが表示されて
それ押せばそのままブラウザで表示されて印刷できるからまあいいかなぁ・・・。


2017/03/23追記
↓こちらの方法の方が良さそう
https://yukamemo-ver3.blogspot.jp/2017/03/pdf-microsoftreport.html

2017年1月20日金曜日

帳票で総ページ数を表示する方法 [GeneXus]

Genexusの帳票で総ページ数を表示する方法。

Layout画面で"テキストブロック"を配置し、Textプロパティに

{{Pages}}

と入力すると総ページ数が表示される。

こんな便利コマンドがほぼ隠しコマンド・・・

2017年1月16日月曜日

Refreshの挙動がおかしい・・・ [GeneXus]

GenexusでのWebの開発で、Webの画面を操作していると、
Visibleが効かないくなったり、Gridに行が追加されなくなる現象が・・・

検証した結果、Refreshをするとおかしくなっているぽい。

ポップアップからの返り値をGridを表示するために使用しているんだけど、
Genexusのバグのような・・・

Grid.Loadは問題ないのようなので、Refreshを使用しないように書き直し。

ポップアップからの返り値はTextBoxに表示して、次の操作時にGridに追加するように。