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ゴシック"><フォーム設計について></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ゴシック">) -> カナ氏名用出力フォーム -> カナ氏名用出力フォーム (</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -> カナ氏名用出力フォーム</font><br>
<font face="MS Pゴシック">パターン2 .初期入力フォーム(</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -> カナ氏名用出力フォーム -> カナ氏名用出力フォーム (</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -> 個人番号用出力フォーム</font><br>
<font face="MS Pゴシック">パターン3 .初期入力フォーム(</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -> 個人番号用出力フォーム -> 個人番号用出力フォーム (</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -> 個人番号用出力フォーム</font><br>
<font face="MS Pゴシック">パターン4 .初期入力フォーム(</font><font face="MS Pゴシック">個人番号入力</font><font face="MS Pゴシック">) -> 個人番号用出力フォーム -> 個人番号用出力フォーム (</font><font face="MS Pゴシック">カナ氏名入力</font><font face="MS Pゴシック">) -> カナ氏名用出力フォーム</font><br>
<br>
<font face="MS Pゴシック"><1つのフォームで対応したい></font><br>
<font face="MS Pゴシック">当初、フォームのレコードソースプロパティと入力パラメータプロパティに「カナ氏名」用の値を設定しておいて、個人番号入力時、フォーム出力直前にプログラムでプロパティの値を入れ替えようと考えましたが、フォームがオープンできていないので変更ができませんでした。何とか1つのフォームにできないでしょうか。</font><br>
<br>
<font face="MS Pゴシック"> <うまくいかないプログラムは次の下線の部分です></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 = "人事情報照会" 初期入力用フォーム</font><br>
<font face="MS Pゴシック">Const cFormName_J = "人事情報照会_J" 出力用フォーム</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 = "str1" カナ氏名用ストアドプロシージャ</font><br>
<font face="MS Pゴシック"> Set parm = .CreateParameter("カナ氏名", 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, , "エラー", 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, , "エラー", 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 = "str2" 個人番号出力用ストアドプロシージャ</font><br>
<font face="MS Pゴシック"> Set parm = .CreateParameter("個人番号", 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 = "str2"</font></u><br>
<font face="MS Pゴシック"> </font><u><font face="MS Pゴシック">Msg = "@個人番号 int = Forms![人事情報照会]![kojinbango]"</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] = " "</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, , "エラー", 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, , "エラー", 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 技術サポート情報一覧]
|