投稿

4月, 2011の投稿を表示しています

VBAでIEを操作する

Sub ie_test() 'IEテストする。 'IEの起動 Dim objIE As Object '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://www.google.co.jp/" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 DoEvents '重いので嫌いな人居るけど。 Wend 'google検索項目(name=q)にセットする。 objIE.Document.getElementsByName("q")(0).Value = "三流" End Sub ' Private Sub OpenWebPage22(ByVal url As String) Dim objIE Dim objShell As Object Dim n As Integer Dim low As String Dim col As String Dim i As Long ' low = ActiveCell.Row ' col = ActiveCell.Range ' Set objShell = CreateObject("Shell.Application") '後ろから消してく。.Windowsでエクスプローラーとインターネットエクスプ...

ActionFormのresetメソッド

ActionFormはstruts設定ファイルの中で設定したスコープに登録されます。したがって session に登録された場合には、同一セッション中の同じHTMLフォームにおいては同じActionFormインスタンスが使用される事になります。またHTMLフォームの内、チェックボックスは選択されていない状態でパラメータが送信されません。したがって以下のような不具合が発生してしまいます。 (※ scope=request であれば問題ない) あるHTMLフォームのチェックボックスを選択し、HTTPリクエストをサーバへ送る。 チェックボックスに該当するActionFormのプロパティ(boolean型)にtrueが設定される。 再び1と同じHTMLフォームにおいて、今度はチェックボックスの選択を外して、HTTPリクエストをサーバへ送る。 ActionFormはセッションに登録されているため、2と同じインスタンスが使用される。またチェックボックスに該当するパラメータは送信されないため、該当するプロパティのsetterメソッドは呼ばれず、2で設定した値(true)がそのまま残る。 チェックボックスを使用する場合には上記のような不具合が生じるため、ActionFormにはプロパティを初期化するためのメソッド「reset」が用意されています。resetメソッドはHTTPリクエストからパラメータ値を読み取って設定する前に必ず呼ばれるものです。ActionFormで何らかの初期化をそのタイミングで行いたい場合には、resetメソッドをオーバーライドします。以下はその例です。メソッドの引数ActionMappingとHttpServletRequestは、Actionクラスのexecuteメソッドの引数と同じものです。 public class ProductForm extends ActionForm{   private boolean discount;   ...   public void reset(ActionMapping mapping, HttpServletRequest request){     discount=false;  ...

INDEX データが1件の時だけ、JavaScriptの必須チェックが誤動作する

原因 JavaScript上でフォーム部品は、同名の要素が複数あるときのみ配列として扱われます。従って、今回のバグのようにチェックボックスが1個の時は、配列の長さを表すlengthプロパティが未定義(undefined)となり、for文の中に制御が移りません。 for (var i=0; i<sentakuChk.length; i++) { ←ここでsentakuChk.lengthが取得できない 結果、表示データが1件のみの時は選択状態にかかわらず、エラーメッセージが表示されてしまいます。 対策 動的に数が変わる同名のフォーム部品をJavaScriptで扱うときは、数が1個の時と複数の時で分けて処理を書きます。 プログラム修正例 チェックボックスが1個か複数かは、JavaScriptでのチェックボックスを表すプロパティが配列になっているかどうか(=lengthプロパティがあるかどうか)で判断できます。 チェックボックス1個の場合に対応したソース function check() {   var sentakuChk = document.form1.sentakuChk;   // チェックボックスが複数の時   if (sentakuChk.length) {     for (var i=0; i<sentakuChk.length; i++) {       if (sentakuChk[i].checked) {         return true;       }     }   // チェックボックスが1個の時   } else if (sentakuChk.checked) {     return true;   }   alert("1件も選択されていません。");   return false;...

タグ のfileterについて

<bean:write>タグは、プロパティの出力時にHTMLエンコード処理を実行して、HTML特殊文字をエスケープさせます。 filter=trueの場合は、エスケープされた状態で出力されます。省略時はtrueです。 Strutsを使ってサニタイジングをした文字列を画面に表示したい場合、 bean:writeタグのfilter属性をfalseにする。 エスケープ文字一覧 HTML 特殊文字 エスケープ後 < &lt; > &gt; " &amp; & &quot; \ &#39;

ORCLE SQL '_' アンダースコアについて

ORCLE SQL '_' アンダースコアについて パターンマッチング: '%' は0文字以上の任意文字にマッチする(※)。 '_' 文字は1文字の任意文字にマッチする。 (※) LIKE では パーセント('%' または 全角 '%') 、アンダースコア('_' または '_') の特殊記号を使用して前方一致(%~)、後方一致(~%)、部分一致(~%~)を記述することができる。