Rakuten

  • 楽天ダウンロード

おすすめ本

天気予報

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

カウンタ

VC

admax

2017年10月26日 (木)

VB.NET:While文を使って一連の処理を中断する方法

VB.NETでは繰り返し処理を行う為に、While 文、Do…While 文、For 文などを使います。
While 文であれば以下の様な感じで、While の判定式で判定結果がFalseになった時点でループを抜けます。 While の判定式を True にすると、無限ループになってしまうので、 ループ内から抜け出すためには以下の様に Exit While 文を使います。 ところで、この無限ループを使うことで一連の処理を下方向に向かって順次記述することができます。
私がよくやる方法なのですが、データのエラー処理などで、いくつかのエラーチェック処理を連続で行い、 全てのチェックが正常で在った場合にOKとする場合などに無限ループを使います。 上記のソースではエラーチェック関数の中身は記述しませんが、CheckProc1()~CheckProc3() が存在する前提です。
この様にすれば、If 文の入れ子をしなくても、エラーチェック処理を上から下に向かって連続して記述できます。 ソースを見た時に各チェック処理の頭が揃い、見やすくするために行っています。何かのご参考になれば幸いです。

基礎Visual Basic 2015 基礎シリーズ

デル株式会社

2017年10月19日 (木)

【Oracle SQL】テーブルから1行のみのデータを取得する方法

テーブルのデータ取得で、何かの条件で先頭のデータのみ必要な時があります。 こんな時、MySQLであればLIMIT句で LIMIT 1 とSELECT文の最後に記述すれば可能ですが、 Oracleの場合ではこの様な機能はありません。

OracleではSELECTの結果の行番号を返す ROWNUM という擬似列があります。 この擬似列を利用することで、LIMITと似た感じにできます。先ずは以下の例で、ROWNUM の値を表示してみます。 内側のUNIONで連結されたSELECT文の羅列は、'0010', '0001', '0020', '0030'の CODE を出力し、 その結果をソートする様になっています。 通常この部分は、実際のテーブルを検索するSELECT文を記述します。
検索結果は CODE と ROWNUM が表示されますが、ROWNUM1からの連番となります。

そこでこの ROWNUM を外側のSELECT文のWHERE句の条件に使えば、目的とする結果が得られます。 上のSQL文から分かるように ROWNUM = 1 の条件を付けることで、 先頭のデータを取得することができます。

■関連ページ
SELECT文に関する基礎的なこと
SELECT文に関する基礎的なこと2
副問い合わせを含むSELECT文について
集合演算子を使ったSELECT文について
CASE式を使ったSELECT文について

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

楽天市場

【jQuery】ラベルで囲まれたチェックボックスで、ラベルのclickイベントが2回実行される

以下の様なソースで、チェックボックスもしくはラベルをクリックしたときにclickイベントが発生することを期待してHTMLに書いたのですが、 ラベル部分をclickしたとき2回clickイベントが実行されてしまいます。 但し、チェックボックスの四角の部分をclickだと1回しかclickイベントが発生しません。

ラベル部分をclickした時に1回目のイベントが発生し、それと共にチェックボックスがclickされたとされ、 その後、親要素に対してラベルのclickが伝搬し2回目のイベントが発生する様です。 2回目の親要素のイベントを発生させない様にするには、親要素への伝播をキャンセルする【stopPropagation】を用います。 上のソースの様に、チェックボックスのclickイベントで【stopPropagation】をコールしてやれば、 親へのイベントは発生しなくなります。

JavaScriptの理解を深めた人がさらにもう一歩先に進むための本

楽天市場

2017年10月18日 (水)

VB.NET:2017/10/11のWindows Updateで「外部データベース ドライバー」エラー

今月の12日にソフトを提供している客先から、「外部データベースドライバー(1)で予期しないエラーが発生しました」 のエラーが表示されて、正常動作しないとの連絡が在りました。
前日までは問題無く動作はしていたが、急に今回のエラーが発生したとのことでした。

原因特定のため、取り敢えずこちらでも同じ動作をさせてみたところ、やはり同じエラーが発生しました。
ソースを確認すると、エラーが発生した部分は「Provider=Microsoft.Jet.OLEDB.4.0;Data Source=...」を利用して エクセルからデータをアクセスに登録する処理で起きていました。

ちょっと焦ってしまい、頭がパニックになったのですが、昨日までは正常だったことと 私のPCでも同じ現象になるので、Windows Updateが問題なのではと疑いました。

ネットで調べてみると、今回の「OLEDB」の件だけではなく、いろんな不具合が報告されていました。 それで、Windows Updateを戻してソフトを起動みると、問題無く動作する様になりました。 (対象となるのは【KB4041681】の様です。)

Microsoftには、今回の不具合の修正を行ってほしいものです。

デル株式会社

2017年9月27日 (水)

VB.NET:ActiveReports.NET 9.0J で複数のセクションレポートを統合する印刷処理

GrapeCityの「ActiveReports.NET 9.0J」を使っているのですが、 1個の印刷処理内で、どうしても複数のセクションレポートを統合する必要が発生しました。

昔の「ActiveReports」だと空の印刷オブジェクトを作っておいて、 それに各印刷オブジェクトを追加してやる方法が在った様に覚えていたのですが、 ネットで探してもそのような例は見つかりませんでした。

1個のセクションレポートに対して後から発生する他のセクションレポートを 追加していく方法しかネットには載っていませんでしたので、 何とか改良して複合的に行える様にしたのが、以下の例です。

この例の前提として、「rptEven」「rptOdd」というセクションレポートの クラスが作成済みであることとします。

最初に印刷オブジェクトを統合するセクションレポートオブジェクトとして「rptMain」を 宣言します。
その後、10回のループで偶数と奇数の回数の時にそれぞれ「rptEven」「rptOdd」 のオブジェクトを生成して、「rptMain」の印刷オブジェクトに追加しています。

偶数回と奇数回での処理で、「rptMain」が「Nothing」であるかを確認し、 初回の処理を行っています。
実際には奇数回の「rptMain」が「Nothing」であるかの確認は必要はありませんが、 ループ処理において、どちらが先に来てもいいように考えました。

もっと簡単な方法があるかもしれませんが、何かの参考になればと思います。

ゼロから分かるActiveReports帳票開発入門 (CodeZine BOOKS)


デル株式会社