Rakuten

  • 楽天市場

天気予報

最近のトラックバック

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

カウンタ

Amazon

Powered by Six Apart

VC2

  • デル株式会社

2017年11月18日 (土)

VB.NET:FTPサーバへのアクセスでエラー発生(慌てたが、ログインユーザのパスワード期限切れ)について・覚え書き

FTPサーバへファイルをアップするプログラムを作成したのですが、 久々に動作させてみたら、エラーが発生してしまいました。
ついこの間、1か月前ぐらいまでは動作していたので少し慌ててしまって、 ちょっと青ざめてしまいました。

プログラムでのTry...Catchでエラーの内容をログで確認すると以下の様な感じでした。 (最後のソースの場所については割愛した部分があります) 原因としては、FTPのユーザのログインでエラーが発生しているようです。
このときのプログラムは抜粋ですが以下の様な感じです。

そこでログインエラーの原因を探るために、Windowsのコマンドプロンプトを起動し、 FTPサーバーに接続してみようと思いました。 (ユーザのIDは伏せてありますが、FTPユーザは「ftpuser」という名前です) 上記のエラーメッセージを見ると「The password for this account has expired.」が 返ってきていて、パスワードが期限切れでした。
「ftpuser」のパスワードを再設定し、事無きを得ました。 (パスワードを無制限にしておけばいいのですが)

楽天市場

2017年11月 2日 (木)

VB.NET:Oracleファンクションを呼出す時の方法について・覚え書き

Oracleファンクションを呼出す時の方法ですが、最近使ったので覚え書きとして一般的な例を記します。

ファンクションの例として入力及び戻り値が同じで、 各データ型(Number型、Varchar2型、日付型)の3個のファンクションを定義します。
ファンクションのソースは以下の通りです。 ソースをご覧になれば分かりますが、これらのファンクションは特に複雑な処理は行わず、 入力値に1を加算したり、文字列を付加して値を返す簡単なものです。

これらのファンクションのみを使う場合は DUAL 表を使えば通常のSELECT文でテストできます。 例えば、以下の様なSQL文を実行してみます。 ここでは、TEST_FNC3の出力のカラム幅が80桁になって表示が乱れるので あえてカラム幅を20桁に設定する COLUMN 命令を使っています。

SELECT文の出力を見れば、入力値に対して処理された値が返ってきているのが分かると思います。

この処理をVB.NETから操作する例は以下の通りです。 (フォーム上のボタンクリックイベントの中に処理を記述してあります)

楽天市場

2017年11月 1日 (水)

VB.NET:Oracleプロシージャを呼出す時の方法について・覚え書き

Oracleプロシージャを呼出す時の方法ですが、最近使ったので覚え書きとして一般的な例を記します。

プロシージャの引数は、入力がNumber型、Varchar2型、日付型の3個で、 出力は入力の値を更新して結果を返す、Number型、Varchar2型、日付型の3個で定義します。
プロシージャのソースは以下の通りです。 ソースをご覧になれば分かりますが、このプロシージャは特に複雑な処理は行わず、 入力値に1を加算したり、文字列を付加する簡単なものです。

このプロシージャをVB.NETから操作する関数の例は以下の通りです。 先ず、オラクルに接続後、プロシージャ名を指定してでOracleCommand生成します。 その後、OracleCommandParameters オブジェクトに入力及び、出力の引数を追加してやります。 各 OracleParameter の生成で注意する点は、データがVarchar2型で、データ長を設定する必要があります。 データ型のサイズが分かっているNumber、Date等は必要無いようです。

楽天市場

2017年10月26日 (木)

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

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

デル株式会社

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 の条件を付けることで、 先頭のデータを取得することができます。

楽天市場