MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[1269]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(1269番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
2つのパラメータ付ストアドプロシージャを1つのフォームで対応

Date: Tue, 6 Jul 2004 18:59:52 +0900
From: who@sub.example.jp


--0__=C6BBE45ADFBC04118f9e8a93df938690918cC6BBE45ADFBC0411
Content-type: text/plain; charset=ISO-2022-JP

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

パラメータ付ストアドプロシージャをレコードソースとして選択する連結フォーム
を作成しております。
2つのパラメータ付ストアドプロシージャを1つのフォームで対応したいのです
が、うまい方法がないでしょうか。
大変冗長となり申し訳ありませんが、以下記述いたします。

<フォーム設計について>
入力フォーム上で入力項目が「カナ氏名」と「個人番号」の2項目あります。(出力
フォーム にもカナ氏名、個人番号 入力用2項目を設定しています)
入力パラメータも「カナ氏名」と「個人番号」の2項目設定し、パラメータ付ストア
ドプロシジャもこれに対応して 2つ作ります。
1度のトランザクションの実行では「カナ氏名」か「個人番号」いずれか1つ使用
し、同時に2つはありません。
1つのフォームで選択できるレコードソースは1項目なので、単純に考えると出力
フォームは「カナ氏名対応フォーム」と「個人番号対応フォーム」の2つ必要になり
ます。
必要なフォームは初期入力画面、カナ氏名用出力画面、個人番号用出力画面の 3
フォームです。
なお、初期入力フォーム、出力フォームとも項目レイアウトは全く同じレイアウト
を作ります。
そうしますと、画面展開パターンは 次の 4とおりです。
パターン1 .初期入力フォーム(カナ氏名入力) -> カナ氏名用出力フォーム  ->
カナ氏名用出力フォーム (カナ氏名入力) -> カナ氏名用出力フォーム
パターン2 .初期入力フォーム(カナ氏名入力) -> カナ氏名用出力フォーム  ->
カナ氏名用出力フォーム (個人番号入力) -> 個人番号用出力フォーム
パターン3 .初期入力フォーム(個人番号入力) -> 個人番号用出力フォーム  ->
個人番号用出力フォーム (個人番号入力) -> 個人番号用出力フォーム
パターン4 .初期入力フォーム(個人番号入力) -> 個人番号用出力フォーム  ->
個人番号用出力フォーム (カナ氏名入力) -> カナ氏名用出力フォーム

<1つのフォームで対応したい>
当初、フォームのレコードソースプロパティと入力パラメータプロパティに「カナ
氏名」用の値を設定しておいて、個人番号入力時、フォーム出力直前にプログラム
でプロパティの値を入れ替えようと考えましたが、フォームがオープンできていな
いので変更ができませんでした。何とか1つのフォームにできないでしょうか。

 <うまくいかないプログラムは次の下線の部分です>
Option Compare Database
Option Explicit
Const cFormName_M = "人事情報照会"    初期入力用フォーム
Const cFormName_J = "人事情報照会_J"  出力用フォーム
Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim parm As ADODB.Parameter
Dim ado_err As ADODB.Error
Dim cmd1 As ADODB.Command
Dim Msg As String


Private Sub kanashimei_AfterUpdate()
  Set cn = Application.CurrentProject.Connection
  Set cmd = New ADODB.Command
  Set rs = New ADODB.Recordset
  Set parm = New ADODB.Parameter
  With cmd
      .ActiveConnection = cn
      .CommandType = adCmdStoredProc
      .CommandText = "str1"  カナ氏名用ストアドプロシージャ
      Set parm = .CreateParameter("カナ氏名", adVarWChar, adParamInput, 50,
Forms(cFormName_M)![kanashimei])
     .Parameters.Append parm
     .Execute

  End With
      Set rs = Nothing
      DoCmd.OpenForm cFormName_J
   Exit Sub
trans_set_error:
     MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
     Exit Sub
trans_error:
     MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
End Sub

Private Sub kojinbango_AfterUpdate()
  Set cn = Application.CurrentProject.Connection
  Set cmd = New ADODB.Command
  Set rs = New ADODB.Recordset
  Set parm = New ADODB.Parameter
  With cmd
      .ActiveConnection = cn
      .CommandType = adCmdStoredProc
      .CommandText = "str2"  個人番号出力用ストアドプロシージャ
      Set parm = .CreateParameter("個人番号", adVarWChar, adParamInput, 50,
Forms(cFormName_M)![kojinbango])
     .Parameters.Append parm
      .Execute
  End With
      Set rs = Nothing
      Forms(cFormName_M)![kanashimei] = Forms(cFormName_M)![kojinbango]
      Forms(cFormName_J).RecordSource = "str2"
       Msg = "@個人番号 int = Forms![人事情報照会]![kojinbango]"
       Forms(cFormName_J).InputParameters = Msg
       Forms(cFormName_J).[kojinbango] = "        "

      DoCmd.OpenForm cFormName_J

   Exit Sub

trans_set_error:
     MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
     Exit Sub
trans_error:
     MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
End Sub

SEKI
--0__=C6BBE45ADFBC04118f9e8a93df938690918cC6BBE45ADFBC0411
Content-type: text/html; charset=ISO-2022-JP
Content-Disposition: inline

<html><body><font face="MS Pゴシック">いつもお世話になっています。</font><br>
<font face="MS Pゴシック">パラメータ付ストアドプロシージャをレコードソースとして選択する連結フォームを作成しております。</font><br>
<font face="MS Pゴシック">2つのパラメータ付ストアドプロシージャを1つのフォームで対応</font><font face="MS Pゴシック">したいのですが、うまい方法がないでしょうか。</font><br>
<font face="MS Pゴシック">大変冗長となり申し訳ありませんが、以下記述いたします。</font><br>
<br>
<font face="MS Pゴシック">&lt;フォーム設計について&gt;</font><br>
<font face="MS Pゴシック">入力フォーム上で入力項目が「カナ氏名」と「個人番号」の2項目あります。(出力フォーム にもカナ氏名、個人番号 入力用2項目を設定しています)</font><br>
<font face="MS Pゴシック">入力パラメータも「カナ氏名」と「個人番号」の2項目設定し、パラメータ付ストアドプロシジャもこれに対応して 2つ作ります。</font><br>
<font face="MS Pゴシック">1度のトランザクションの実行では「カナ氏名」か「個人番号」いずれか1つ使用し、同時に2つはありません。</font><br>
<font face="MS Pゴシック">1つのフォームで選択できるレコードソースは1項目なので、単純に考えると出力フォームは「カナ氏名対応フォーム」と「個人番号対応フォーム」の2つ必要になります。</font><br>
<font face="MS Pゴシック">必要なフォームは初期入力画面、カナ氏名用出力画面、個人番号用出力画面の 3フォームです。</font><br>
<font face="MS Pゴシック">なお、初期入力フォーム、出力フォームとも項目レイアウトは全く同じレイアウトを作ります。</font><br>
<font face="MS Pゴシック">そうしますと、画面展開パターンは 次の 4とおりです。</font><br>
<font face="MS Pゴシック">パターン1 .初期入力フォーム(</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -&gt; カナ氏名用出力フォーム  -&gt;  カナ氏名用出力フォーム (</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -&gt; カナ氏名用出力フォーム</font><br>
<font face="MS Pゴシック">パターン2 .初期入力フォーム(</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -&gt; カナ氏名用出力フォーム  -&gt;  カナ氏名用出力フォーム (</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -&gt; 個人番号用出力フォーム</font><br>
<font face="MS Pゴシック">パターン3 .初期入力フォーム(</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -&gt; 個人番号用出力フォーム  -&gt;  個人番号用出力フォーム (</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -&gt; 個人番号用出力フォーム</font><br>
<font face="MS Pゴシック">パターン4 .初期入力フォーム(</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -&gt; 個人番号用出力フォーム  -&gt;  個人番号用出力フォーム (</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -&gt; カナ氏名用出力フォーム</font><br>
<br>
<font face="MS Pゴシック">&lt;1つのフォームで対応したい&gt;</font><br>
<font face="MS Pゴシック">当初、フォームのレコードソースプロパティと入力パラメータプロパティに「カナ氏名」用の値を設定しておいて、個人番号入力時、フォーム出力直前にプログラムでプロパティの値を入れ替えようと考えましたが、フォームがオープンできていないので変更ができませんでした。何とか1つのフォームにできないでしょうか。</font><br>
<br>
<font face="MS Pゴシック"> &lt;うまくいかないプログラムは次の下線の部分です&gt;</font><br>
<font face="MS Pゴシック">Option Compare Database</font><br>
<font face="MS Pゴシック">Option Explicit</font><br>
<font face="MS Pゴシック">Const cFormName_M = &quot;人事情報照会&quot;    初期入力用フォーム</font><br>
<font face="MS Pゴシック">Const cFormName_J = &quot;人事情報照会_J&quot;  出力用フォーム</font><br>
<font face="MS Pゴシック">Dim cn As ADODB.Connection</font><br>
<font face="MS Pゴシック">Dim cmd As ADODB.Command</font><br>
<font face="MS Pゴシック">Dim rs As ADODB.Recordset</font><br>
<font face="MS Pゴシック">Dim parm As ADODB.Parameter</font><br>
<font face="MS Pゴシック">Dim ado_err As ADODB.Error</font><br>
<font face="MS Pゴシック">Dim cmd1 As ADODB.Command</font><br>
<font face="MS Pゴシック">Dim Msg As String</font><br>
<br>
<br>
<font face="MS Pゴシック">Private Sub kanashimei_AfterUpdate()</font><br>
<font face="MS Pゴシック">  Set cn = Application.CurrentProject.Connection</font><br>
<font face="MS Pゴシック">  Set cmd = New ADODB.Command</font><br>
<font face="MS Pゴシック">  Set rs = New ADODB.Recordset</font><br>
<font face="MS Pゴシック">  Set parm = New ADODB.Parameter</font><br>
<font face="MS Pゴシック">  With cmd</font><br>
<font face="MS Pゴシック">      .ActiveConnection = cn</font><br>
<font face="MS Pゴシック">      .CommandType = adCmdStoredProc</font><br>
<font face="MS Pゴシック">      .CommandText = &quot;str1&quot;  カナ氏名用ストアドプロシージャ</font><br>
<font face="MS Pゴシック">      Set parm = .CreateParameter(&quot;カナ氏名&quot;, adVarWChar, adParamInput, 50, Forms(cFormName_M)![kanashimei])</font><br>
<font face="MS Pゴシック">     .Parameters.Append parm</font><br>
<font face="MS Pゴシック">     .Execute</font><br>
<font face="MS Pゴシック">  </font><br>
<font face="MS Pゴシック">  End With</font><br>
<font face="MS Pゴシック">      Set rs = Nothing</font><br>
<font face="MS Pゴシック">      DoCmd.OpenForm cFormName_J</font><br>
<font face="MS Pゴシック">   Exit Sub</font><br>
<font face="MS Pゴシック">trans_set_error:</font><br>
<font face="MS Pゴシック">     MsgBox Msg, , &quot;エラー&quot;, Err.HelpFile, Err.HelpContext</font><br>
<font face="MS Pゴシック">     Exit Sub</font><br>
<font face="MS Pゴシック">trans_error:</font><br>
<font face="MS Pゴシック">     MsgBox Msg, , &quot;エラー&quot;, Err.HelpFile, Err.HelpContext</font><br>
<font face="MS Pゴシック">End Sub</font><br>
<br>
<font face="MS Pゴシック">Private Sub kojinbango_AfterUpdate()</font><br>
<font face="MS Pゴシック">  Set cn = Application.CurrentProject.Connection</font><br>
<font face="MS Pゴシック">  Set cmd = New ADODB.Command</font><br>
<font face="MS Pゴシック">  Set rs = New ADODB.Recordset</font><br>
<font face="MS Pゴシック">  Set parm = New ADODB.Parameter</font><br>
<font face="MS Pゴシック">  With cmd</font><br>
<font face="MS Pゴシック">      .ActiveConnection = cn</font><br>
<font face="MS Pゴシック">      .CommandType = adCmdStoredProc</font><br>
<font face="MS Pゴシック">      .CommandText = &quot;str2&quot;  個人番号出力用ストアドプロシージャ</font><br>
<font face="MS Pゴシック">      Set parm = .CreateParameter(&quot;個人番号&quot;, adVarWChar, adParamInput, 50, Forms(cFormName_M)![kojinbango])</font><br>
<font face="MS Pゴシック">     .Parameters.Append parm</font><br>
<font face="MS Pゴシック">      .Execute</font><br>
<font face="MS Pゴシック">  End With</font><br>
<font face="MS Pゴシック">      Set rs = Nothing</font><br>
<font face="MS Pゴシック">      </font><u><font face="MS Pゴシック">Forms(cFormName_M)![kanashimei] = Forms(cFormName_M)![kojinbango]</font></u><br>
<font face="MS Pゴシック">      </font><u><font face="MS Pゴシック">Forms(cFormName_J).RecordSource = &quot;str2&quot;</font></u><br>
<font face="MS Pゴシック">       </font><u><font face="MS Pゴシック">Msg = &quot;@個人番号 int = Forms![人事情報照会]![kojinbango]&quot;</font></u><br>
<font face="MS Pゴシック">       </font><u><font face="MS Pゴシック">Forms(cFormName_J).InputParameters = Msg</font></u><br>
<font face="MS Pゴシック">       </font><u><font face="MS Pゴシック">Forms(cFormName_J).[kojinbango] = &quot;        &quot;</font></u><br>
<font face="MS Pゴシック">      </font><br>
<font face="MS Pゴシック">      DoCmd.OpenForm cFormName_J    </font><br>
<font face="MS Pゴシック">    </font><br>
<font face="MS Pゴシック">   Exit Sub</font><br>
<br>
<font face="MS Pゴシック">trans_set_error:</font><br>
<font face="MS Pゴシック">     MsgBox Msg, , &quot;エラー&quot;, Err.HelpFile, Err.HelpContext</font><br>
<font face="MS Pゴシック">     Exit Sub</font><br>
<font face="MS Pゴシック">trans_error:</font><br>
<font face="MS Pゴシック">     MsgBox Msg, , &quot;エラー&quot;, Err.HelpFile, Err.HelpContext</font><br>
<font face="MS Pゴシック">End Sub</font><br>
<br>
<font face="MS Pゴシック">SEKI</font></body></html>
--0__=C6BBE45ADFBC04118f9e8a93df938690918cC6BBE45ADFBC0411--



[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。