同じ質問2度目です、回答頂いていましたが、画像ができたので貼り付けました。
新しい質問でないと貼り付けできないものですみません
最初の回答も参考にさせていただきます。
----------------------------------
添付画像参照願います。
アクセスのフォームで入力する際、社員番号のテキストボックスから資格コードまでジャンプ
させたいと思います、
やったのはプロパティで更新後処理の埋め込みマクロでアクションをコントロールの移動を使い
引数に資格コードを使いました。
すると画像のようなエラーが出てしまいます。
以前に作ったフォームではうまく動いていたのですが今回は動きません。
WEBなど、探したのですがいい回答が見つかりませんでした、作り直しも行いましたが
同じエラーが繰り返されます。
よろしくお願いします。
会社からなので画像の添付できませんでした、持ち出しができません。
フォームでテキスとボックスにAAAAと入力したらCCCCにカーソルを移動させたいです。
ラベル テキストボックス
aaaa AAAA
bbb  BBBB
ccc CCCC

「アクセス2007 フォーム入力でフィール」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (5件)

添付画像を拡大しても見えずらいのですが、


漏れている文字があるかもしれませんが、
大体以下のように見えます。

(質問のときはエラーの内容を書き取って
文章で伝えないと画面からは読み取れません。)



コマンドまたはアクション"コントロールの移動"は無効です。

データベースが読み取り専用であるか、以前のバージョンの
式から変更されていません。

アクションの対象となっているオブジェクトで現在確認されて
いるものがないか、アクティブビューにありません。

このデータベースで現在使用可能なコマンドまたはマクロ
アクションを使うようにしてください。



以上を噛み砕くと、



マクロは実行できません。

その理由は、

(1)データベースが読み取り専用になっているか、現在の
Accessのバージョンで使える式に変更してください。

(2)指定しているコントロールの名前を間違っている
可能性があります。

(3)現在のAccessのバージョンで使えるマクロを
作成してください。



まず、上記の(1)から(3)について確認してみてください。




>最初の回答も参考にさせていただきます。

の意味はわかりませんが、どうしてもマクロでしたいのか、
あるいは、コードは分からないのでコードはご遠慮申し上げます、
ということなのか、どちらかなのでしょうが、
「社員番号」の更新後処理で「資格コード」に
移動したいというのであれば、どのバージョンの
Accessでも以下の方法で事が足ります。


Private Sub 社員番号_AfterUpdate()
Me!資格コード.SetFocus
End Sub
    • good
    • 0
この回答へのお礼

piroin654さん
何度も回答を戴き、本当にたすかりました、またわからない人の内容を理解して
戴きおお助かりです。
教えて戴いたようにイベントプロシージャーに書いてみたらすぐできました、
私のやり方は根本が間違えていました、マクロビルダでやっていました。

お礼日時:2011/04/20 13:34

コントロールの移動


http://office.microsoft.com/ja-jp/access-help/HA …

上記に使い方が書かれています。
    • good
    • 0

No2です。


なぜNo2のような質問をしたかというと、
質問の前半の、

>アクセスのフォームで入力する際、社員番号のテキストボックスから
>資格コードまでジャンプさせたいと思います、
>やったのはプロパティで更新後処理の埋め込みマクロでアクションを
>コントロールの移動を使い引数に資格コードを使いました。
(この回答としてマクロではなく、コードでの回答を
http://oshiete1.watch.impress.co.jp/qa6679587.html
でしています。AAAAからCCCCへのフォーカスの移動)


と、後半の、


>フォームでテキスとボックスにAAAAと入力したらCCCCにカーソルを移動させたいです。
>ラベル テキストボックス
>aaaa AAAA
>bbb  BBBB
>ccc CCCC

の話がつがらないからです。とくに後半の部分は
質問された方はわかっておられるのでしょうが、
こちらには、
>テキスとボックスにAAAAと入力したらCCCCにカーソルを移動
と、テキストボックスAAAAとの関連がわかりずらいのです。


もしかしたら、
>テキスとボックスにAAAAと入力したらCCCCにカーソルを移動
は、
>テキストボックスAAAAに入力したらCCCCにカーソルを移動
なのですか?
    • good
    • 0

こちらの勘違いがあるかもしれないので、


NO1は無しにして、

たとえば、

Private Sub 社員番号_AfterUpdate()
Me!CCC.SetFocus
End Sub

のように、テキストボックスの「社員番号」
の更新後処理にテキストボックス「CCCC」に移動
したい、ということなのか、あるいは、

テキストボックスの「社員番号」の更新後処理に
フォームに表示するデータをテキストボックスの
「社員番号」に入力したものにしたいということ
なのか、どちらですか。
    • good
    • 0

http://oshiete1.watch.impress.co.jp/qa6679587.html

のNo2で回答していますが、試してみました?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q乃木坂ファンです。 特に中元日芽香、星野みなみ、生田絵梨花、 齋藤飛鳥、西野七瀬、秋元真夏が大好きで

乃木坂ファンです。
特に中元日芽香、星野みなみ、生田絵梨花、
齋藤飛鳥、西野七瀬、秋元真夏が大好きです。
皆さんはどうですか?

Aベストアンサー

私も乃木坂のファンです!
私も齋藤飛鳥ちゃん好きです。2期生では渡辺みり愛ちゃんが好きです!3期生では伊藤理々杏ちゃんが気になってます!

Qアクセス2007 フォーム入力でフィールドジャンプ

添付画像参照願います。
アクセスのフォームで入力する際、社員番号のテキストボックスから資格コードまでジャンプ
させたいと思います、
やったのはプロパティで更新後処理の埋め込みマクロでアクションをコントロールの移動を使い
引数に資格コードを使いました。
すると画像のようなエラーが出てしまいます。
以前に作ったフォームではうまく動いていたのですが今回は動きません。
WEBなど、探したのですがいい回答が見つかりませんでした、作り直しも行いましたが
同じエラーが繰り返されます。
よろしくお願いします。
会社からなので画像の添付できませんでした、持ち出しができません。
フォームでテキスとボックスにAAAAと入力したらCCCCにカーソルを移動させたいです。
ラベル テキストボックス
aaaa AAAA
bbb  BBBB
ccc CCCC

説明が分かりにくく申し訳ないです、分かりましたら教えてください。
調べつくしましたが分かりませんでした、

Aベストアンサー

フォームのデザインビューで、テキストボックス「AAAA」
の上で右クリックし、プロパティシートを表示し、
更新後処理の右端をクリックし、「ビルダの選択」
のフォームを表示し、「コードビルダ」を選択し、
「OK]とします。

表示されたコード表を以下のように設定し、
保存します。



Private Sub AAAA_AfterUpdate()

Me!CCCC.SetFocus

End Sub



これで、「AAAA]の更新後に「CCCC]にフォーカスが
移動します。

Q【ActionScript】 .asファイルの表示をアクションフレームで表示できますか?

FLASH8(Win-XP)使用者です。
外部の .as スクリプトを参照する場合、なぜか通常の場所ではなく、描画をおこなう場所に表示されてしまいます。
通常ActionScriptを表示するアクションフレーム(?)
→ウインドウ>アクション で出てくるウインドウ
に表示されないもんですかね?
CS3なら可能とかいうご回答でも結構です。よろしくお願いいたします。

Aベストアンサー

「アクション」パネルのタイトルバーの右端に、”:≡”というようなマークがあります。
他のパネルでもそうですが、このマークをクリックすると該当するパネルに関するメニューが開きます。
「アクション」パネルのメニューには「スクリプトの読み込み...」という項目があり、外部 as ファイルの内容をパネル内に読み込むことができます。


「アクション」パネルに読み込まれる以上は、読み込んだスクリプトは当然ながら、現在スクリプトを書くところとして選択しているところに挿入されます。
例えばフレームを選択している状態で「アクション」パネルを開いている時は、そのフレームに読み込んだスクリプトが記述されることになります。

クラスを定義した as ファイルを読み込んだ場合、フレームなどにスクリプトが挿入されるとエラーになりますので、ご注意ください。
( ActionScript 2.0 のクラスは外部 as ファイルでしか定義できないためです)

-------------------------------------------------------------

「ファイル」→「開く」で as ファイルを開くと、編集中のドキュメントとは全く無関係の、別のファイルとして開かれます。
これは要するに違うファイルを2つ開いている状態で、他のアプリケーションで言えば編集するドキュメントのウィンドウが2つあるようなものです。
Flash 8 ではウィンドウ形式ではなくタブ形式で表示されるので、複数のファイルを開いている際に編集する対象を切り替えやすくなっています。

外部 as ファイルを参考にしながら作品を作りたい場合や、クラスを定義した as ファイルとムービーを並行して編集したい場合などは、編集中のドキュメントに外部 as ファイルのスクリプトが勝手に混ざってしまっては困ります。
こんなことにならないように、外部 as ファイルを同時に開いても別々に編集できる設計になっているのだと思います。


「新規作成」で新規の as ファイルを作成した時、および「ファイル」→「開く」で as ファイルを開いた時は、Flash は一種のコードエディタになります。
タイムラインやステージが不要になりますから、普段はこれらが表示される場所に専用のパネルが開き、広い範囲のスクリプトが見渡しやすい、画面を広く使えるレイアウトに切り替わります。

スクリプトの編集機能自体は、ターゲットパスを自動挿入する機能がないこと以外は「アクション」パネルと同じです。

「アクション」パネルのタイトルバーの右端に、”:≡”というようなマークがあります。
他のパネルでもそうですが、このマークをクリックすると該当するパネルに関するメニューが開きます。
「アクション」パネルのメニューには「スクリプトの読み込み...」という項目があり、外部 as ファイルの内容をパネル内に読み込むことができます。


「アクション」パネルに読み込まれる以上は、読み込んだスクリプトは当然ながら、現在スクリプトを書くところとして選択しているところに挿入されます。
例えばフレーム...続きを読む

Qアクセス2007 フォームでフィルタ抽出した全フィールドの書き換え

アクセス2007 フォームでフィルタ抽出した全フィールドの書き換え

アクセスメニュー(リボン?)にある「フィルタの実行」で抽出されたデータがあるフォームです。
フィールドの値を一気に変更するスベを知らなく現在下記のようにしています。

For d = 1 To Me.Recordset.RecordCount
   DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, d
   Me![目的のフィールド] = ”テスト”
Next

これでもできるのですが、いまいち納得しません。
もっと、スマートな方法はないですか?

抽出にはアクセスメニュー(リボン?)を使っています。

Aベストアンサー

動くのならそのままでも良いような気がしますが。

メニュー等をいじって抽出条件を設定した場合、
条件文は Me.Filter に設定されるようです。(使って見た感じでは)

UPDATE する際の WHERE 部分は、フォームに設定したレコードソース内の条件と
Me.Filter の条件を加味した作りにする必要があると思います。

例えば、レコードソース内の条件に 品番 = '0001'  があり、
メニュー操作等で [工場ID] が 3と5だけ、の条件を設定すると Me.Filter の中身は
"[フォーム名].[工場ID] In (3,5)"
とか

[フォーム名] のところは、レコードソースに
テーブル「TblA」と記述していれば [TblA] に
クエリ「Q_XXX」と記述して入れば [Q_XXX] に
SELECT ・・・・ と記述していれば [フォーム名] とかに置き換わるようです(?)が。
詳細はわかりません。嘘かも知れません。資料を探してみてください。

条件設定後、For のところで止めて、Me.Filter を覗いてみてください。

で、UPDATE で条件指定する時には、
品番 = '0001' AND [工場ID] In (3,5)
などに加工しないといけないような気がします。

条件の参照先にフォームのコントロールを指定していたら、ますます複雑になるのでしょうか。
表示している中での変更と思うので、表示しているレコード分回る処理の方が楽なような気がします。
(件数にもよるとは思いますが、後は処理時間との兼ね合いになると思います)

DoCmd を使わない方法は以下の様になるのでしょうか。

If (Me.Dirty = False) Then
  If (Me.Recordset.RecordCount > 0) Then
    Me.Painting = False
    With Me.Recordset
      .MoveFirst
      While (Not .EOF)
        .Edit
        .Fields("目的のフィールド") = "テスト"
        .Update
        .MoveNext
      Wend
    End With
    Me.Requery
    Me.Painting = True
  End If
End If

レコードが編集中ならやらない。
くるくる回って処理している時は画面表示を抑止する。

おかしなところはドンドン修正してください。


後は、メニュー側のフィルタを操作させないようにして、フォームにフィルタ指定/設定用のコントロールを配置すると、条件作成は若干楽になるのでしょうか。

動くのならそのままでも良いような気がしますが。

メニュー等をいじって抽出条件を設定した場合、
条件文は Me.Filter に設定されるようです。(使って見た感じでは)

UPDATE する際の WHERE 部分は、フォームに設定したレコードソース内の条件と
Me.Filter の条件を加味した作りにする必要があると思います。

例えば、レコードソース内の条件に 品番 = '0001'  があり、
メニュー操作等で [工場ID] が 3と5だけ、の条件を設定すると Me.Filter の中身は
"[フォーム名].[工場ID] In (3,5)"
とか
...続きを読む

QFlash ActionScript(アクションスクリプト)の挙動

Flash ActionScript(アクションスクリプト)の挙動が
思うようにならず困っています。

●使用ツール
 Macromedia Flash MX

●やりたいこと
 ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。
 各ムービークリップにマウスが乗っているかを毎フレーム判定し、
 乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。

●現在の処理
 ○メインタイムラインの処理
----------------------------
//最初のシーンを設定
_global.scene = SceneMcSelect

//毎フレーム、シーン関数を呼ぶ
onEnterFrame = function() {
//現在シーンを呼ぶ
eval( _global.scene )();
}
----------------------------

 ○SceneMcSelect関数の定義
----------------------------
function SceneMcSelect(){

for( count = 0 ; count < 3 ; count++ ){

//マウスが乗ったか?
eval("mc_4_" + count).onRollOver = function(){
trace(count);
eval("mc_4_" + count)._xscale = 150;
eval("mc_4_" + count)._yscale = 150;
}
//マウスが離れたか?
eval("mc_4_" + count).onRollOut = function(){
trace(count);
eval("mc_4_" + count)._xscale = 100;
eval("mc_4_" + count)._yscale = 100;
}
}
}
----------------------------

●現在の挙動
 onRollOverやonRollOutの判定は正しく行われているようですが、
 x/yscaleの変更処理が行われません。
 traceでcountの値を確認すると、なぜか【3】になっています。


難しい処理をしているわけではないと思うのですが、
思うとおりの挙動にならず困っています。
何か間違いや見落とし等ございましたら、ご指摘お願いいたします。

Flash ActionScript(アクションスクリプト)の挙動が
思うようにならず困っています。

●使用ツール
 Macromedia Flash MX

●やりたいこと
 ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。
 各ムービークリップにマウスが乗っているかを毎フレーム判定し、
 乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。

●現在の処理
 ○メインタイムラインの処理
----------------------------
//最初のシーンを設定
_global.scene = SceneMcSelect

//毎フレーム、...続きを読む

Aベストアンサー

大きな問題点が3点ありますが,
そのうちの2点はとりあえず無視します。


trace(count); の出力結果が 3 になるのは
単純に次のようなスクリプトを書けば理解できると思います。

------------------------------
for (count=0; count<3; count++) {
trace(count);
}
trace(count);
trace(count);
trace(count);
------------------------------

もし for文を動作的に理解するのが難しければ,
while文 にすればわかりやすいかもしれません。
上記 for文 使用のスクリプトと全く同値なものです↓。

------------------------------
count = 0;
while (count<3) {
trace(count);
count++;
}
trace(count);
trace(count);
trace(count);
------------------------------

for文にしても,while文 にしても,
結局 count の値は 3 になってループを抜けます。
したがって次のような出力結果になります↓。

-------
0
1
2
3
3
3
-------

たとえば,
このまま 10秒後 に trace(count); を実行したとしても結果は同じ。
count は 3 のままです。
このまま 1分後 に trace(count); を実行したとしても結果は同じ。
count は 3 のままです。

つまり,
このまま MCにロールオーバーしたときに trace(count); が実行されても結果は同じ。
count は 3 のままです。

したがって,
 eval("mc_4_" + count)._xscale = 150;
はいつ実行しても
 mc_4_3._xscale = 150;
を実行することと同じになります。

というわけで,
単純にこれで良いのではないでしょうか↓。
(#1の方と同じ)

------------------------------
// ユーザ定義関数 SceneMcSelect の定義
function SceneMcSelect() {
for (count=0; count<3; count++) {
//マウスが乗ったら実行する関数を定義
eval("mc_4_"+count).onRollOver = function() {
this._xscale = 150;
this._yscale = 150;
};
//マウスが離れたら実行する関数を定義
eval("mc_4_"+count).onRollOut = function() {
this._xscale = 100;
this._yscale = 100;
};
}
}
// ユーザ定義関数 SceneMcSelect の実行
SceneMcSelect();
------------------------------



本題ではない残りの2つの問題ですが。

> //毎フレーム、シーン関数を呼ぶ
> onEnterFrame = function() {
> //現在シーンを呼ぶ
>   eval( _global.scene )();
> }

なせ onEnterFrame で
毎フレーム毎フレーム onRollOver や onRollOut を定義しなければならないのか,
不可解で意味が理解できません。

上に書いたスクリプトのように SceneMcSelect(); は1回で良いはずです。
何度も定義しなおす必要があることがあったとしても,
その都度ごとに1回で良いはずで,
毎フレーム毎フレーム(コンマ数秒ごとに)再定義し続ける必要は普通ないと思います。

この理由を補足要求しているわけではありませんよ。
本題とは関係の無い部分なのでどうでも良いのですが,
この変な部分は一考の余地があると思いましたので書かせていただきました。



もう1つは eval関数 です。
これを色々なときに使い続けると無事に動作しない場合などが出てきますよ。
eval は主に Flash 4 までで使用されていた古い関数で,Adobe もあまり推奨していません。
完全に非推奨(使用を避ける機能)にはなっていませんが,ほぼ非推奨です。

携帯の Flash Lite 1.x 用のSWFをパブリッシュするなど特別な理由がない限り,
eval は使わずに 配列アクセス演算子 を使うのが一般的です。

Google検索 「配列アクセス演算子 eval」
http://www.google.co.jp/search?hl=ja&q=%E9%85%8D%E5%88%97%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%BC%94%E7%AE%97%E5%AD%90+eval

大きな問題点が3点ありますが,
そのうちの2点はとりあえず無視します。


trace(count); の出力結果が 3 になるのは
単純に次のようなスクリプトを書けば理解できると思います。

------------------------------
for (count=0; count<3; count++) {
trace(count);
}
trace(count);
trace(count);
trace(count);
------------------------------

もし for文を動作的に理解するのが難しければ,
while文 にすればわかりやすいかもしれません。
上記 for文 使用のスクリプトと全く同値なもの...続きを読む

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

QPHOTOSHOP CS4で作ったアクションが見つかりません。

PHOTOSHOP CS4でアクションを作ったのですが見つかりません。
拡張子は.atnだと思うのですが
C→program files→Adobe→Adobe Photoshop CS4→Presets→Actionsにはもともと入ってるアクションしかないです。(私が名前を付けたのが見当たりません)
C→Users→(私のPCの名前)→AppDate→Roaming→Adobe→Adobe Photoshop CS4→Presets→Actionsにも入っていません。

よろしくお願いします。

Aベストアンサー

アクションのセットの保存
http://help.adobe.com/ja_JP/Photoshop/11.0/WS605F6F30-F4AD-4357-8B66-BDFF57DC1558.html#WSE0603837-E7D8-4f95-B956-43A58B6BF264

Qエクセルに入力した内容がアクセスの入力フォームとリンクすることが出来ますか

会社内で使用する色々な様式をエクセルで作成しています。そのある様式の入力内容を今後データーベース化できるできるように検討しろと指示されました。
私はまだエクセルでどのようにすればよいのか分からず、その人はアクセスがデーターベース化するのは非常に検索がしやすいので検討してみたらと言っています。
アクセスは私は今まで全然やったことがないのですが、これから勉強しようかと考えています。本を読む限りではあまり多くの内容のフォームは非常に労力がかかるのでお勧めできないと書いていますが、それでも挑戦しないといけないのかなと考えています。もし出来たときには今までのエクセル様式に入力したらその内容がアクセスのフォームとリンクできたら楽だなと思っています。
まだ初心者ですがそんなことができるのでしょうか教えてください。

Aベストアンサー

VBAでADO等でMDBにリンクするようにすれば可能かと思いますが
無駄な労力を強いられそうです(^^)笑

いっそのことACCESSでフォームを作り直した方が手っ取り早いと思います
データはACCESSにコンバートできますので、思い切って乗り換えた方がいいと思います。

また、EXCEL上でもデータベースと同等の作業が出来ますので、こちらも考えてみてはどうでしょうか?

目的の様式がどんなものなのかわかりませんが、社内LANで共有して使用するにはEXCELもACCESSも
お勧めしません
できればSQLserver・ORACLEなどのデータベースサーバーを導入した方がいいと思います
MSDEといった無料のものも御座いますし・・・

Qhtml:linkでリンククリック時に画面入力値を取得してアクションへ渡す方法

Strutsを使用したログイン画面を作成しています。ID・パスワードを入力して、html:linkをクリックしてログインするという処理を行いたいです。

そこで、リンクをクリックした際にJSPに記述しているhtml:textとhtml:passwordの値を取得して、Actionへ渡し、その情報を元にDBへの問い合わせを行いたいのですが、html:linkで複数パラメータを渡す方法が分からないので教えていただきたいです。

過去質も参考にしてみましたが、今回の質問に的を得た内容がなかったので質問させていただきました。

参考にした方法
(1)JavaScriptのonclickイベントでサブミットさせる
⇒例えばdocument.form.submit();と書けそうだが,html:formにはname属性がないため、formの指定ができない?!

(2)Mapを利用してパラメータを渡す
⇒JSP内にMap設定のロジックを書く。Map(name,value)の形式で、value部分(画面入力値)はどうやって取得するのか分からない。

【struts-config】
<action-mappings>
<action path="/login_Anken"
type="action.Login_Anken_Action"
name="login_Anken_Form"
validate="true"
input="/pages/Login_Anken.jsp"
scope="request">
<forward name="success" path="/pages/MainMenu.jsp"/>
<forward name="fail" path="/pages/Login_Anken.jsp"/>
</action>
【Login_Anken.jsp】
<html:form action="/login_Anken" >
<table border="0" width="100%" >
<tr>
<td class="pname" colspan="4" >
****システム
</td>
</tr>
<tr>
<td colspan="4">
<hr size="5" width="100%" noshade>
</td>
</tr>
<tr>
<td class="gname" colspan="4" >
ログイン
</td>
</tr>
<tr>
<td colspan="4" >
<hr size="5" width="100%" noshade>
</td>
</tr>
<tr>
<td width="25%" >
</td>
<td class="login">
ユーザID
</td>
<td width="20%"">
<html:text property="userId"/>
</td>
<td width="20%">
</td>
</tr>
<tr>
<td width="25%" >
</td>
<td class="login">
パスワード
</td>
<td width="20%"">
<html:password property="password" />
</td>
<td width="20%">
</td>
</tr>
<tr>
<td width="10%" align="center" colspan="4" >
<html:link action="/login_Anken" name="map">ログイン
</html:link>
</td>
</tr>
</table>
</html:form>

【Login_Anken_Action.java】
public class Login_Anken_Action extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
ActionMessages errors = new ActionMessages();
//画面入力値を取得
Login_Anken_Form loginAnkenForm = (Login_Anken_Form) form;
boolean isSuccess = false;
Login_Anken_Business business =
new Login_Anken_Business();
String userName = null;
userName =
business.getLoginUserName (loginAnkenForm.getUserId(),
loginAnkenForm.getPassword());

//ユーザが存在すればログインOK
isSuccess = (userName != null);
if (isSuccess) {
//TODO
HttpSession session = request.getSession();
session.setAttribute("name", userName);
return mapping.findForward("success");
} else {
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("errors.login"));
saveErrors(request, errors);
return mapping.findForward("fail");
}
}
}

Strutsを使用したログイン画面を作成しています。ID・パスワードを入力して、html:linkをクリックしてログインするという処理を行いたいです。

そこで、リンクをクリックした際にJSPに記述しているhtml:textとhtml:passwordの値を取得して、Actionへ渡し、その情報を元にDBへの問い合わせを行いたいのですが、html:linkで複数パラメータを渡す方法が分からないので教えていただきたいです。

過去質も参考にしてみましたが、今回の質問に的を得た内容がなかったので質問させていただきました。

参考にした...続きを読む

Aベストアンサー

ああ
このHTML見て一目でわかったわ。
<a href="~"
のhrefにリクエストが飛んでいるだけね。
<a href="javascript:return false"
<a href="#"
とかにしないとonclickが正常に働かないわよ。

QACCESS 既存のテーブルのフィールド名をフォーム上のテキスト入力値に変更したい

いつもお世話になっております。

既存のテーブルのフィールド名を、単票フォーム上の入力値に変更
したいと思っています。
例)Aテーブル 月1 月2
  Bフォーム上のテキストA:200810 テキストB:200811
  (結果)Aテーブル 2008 200811

(テーブルデザインでの変更ではなく、コマンドボタン押下時等で行いたい)

どなたか、ご教示願います。

Aベストアンサー

フォームのボタンのイベントプロシージャの例
Private Sub コマンド_Click()
Dim TDS As DAO.Tabledefs
Dim TDF As DAO.Tabledef
Dim FLD As DAO.Field

Set TDS = CurrentDb.TableDefs
Set TDF = TDS("Aテーブル")
Set FLD = TDF.Fields("月1") '★1
FLD.Name = Me.テキストA.Value '★2
End Sub

★1定数にしておくと2回目からエラーになる。
 もし、「最初のフィールド」というなら(0)でも良い。
★2Null、空文字列、フィールド名として使えない文字のチェックを
 していないので、実際に作る時はチェックが必要


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング