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

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

Date: Fri, 9 Jul 2004 15:25:17 +0900
From: who@sub.example.jp


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

前回はご容赦下さい。
ご指摘いただき、質問文書を訂正いたしました。

やりたいことは
・当初、照会結果フォームのレコードソースプロパティと入力パラメータプロパ
ティに「カナ氏名」用の値を設定しておいて、個人番号入力時、フォーム出力直前
にプログラムでプロパティの値を入れ替えたい。

うまく行かない点
・個人番号入力時、フォームがオープンできていないので変更ができません。(下線
の部分)


フォームに乗せているコントロール(表のつもり)

    [コントロール]                       F[初期フォーム]         F[照会結
果フォーム]

レコードソース                          ダミーレコード          str1

入力パラメータ                          ブランク                @カナ氏名
TEXT  FORMS("初期フォーム")![カナ氏名]

イベントP  Sub カナ氏名_AfterUpdate()   別途記載                別途記載

イベントP  Sub_個人番号_AfterUpdate()   別途記載                別途記載



ストアドプロシージャ
CREATE PROCEDURE str1
@カナ氏名 nvarchar(50)
AS
select 住所 from 属性
where カナ氏名=@カナ氏名

CREATE PROCEDURE str2
@個人番号 int
AS
select 住所 from 属性
where 個人番号 = @個人番号

イベント P
パラメータ項目およびVBAの構成に関わる箇所を抜き出しました。

「初期フォーム」のイベントプロシージャVBA
Private Sub カナ氏名_AfterUpdate()
〜
.CommandText = "str1"
Set  parm  =  .CreateParameter("カナ氏名",  adVarWChar,  adParamInput,  50,
Forms(初期フォーム)![カナ氏名])
〜
Set rs = Nothing
DoCmd.OpenForm 照会結果フォーム
End Sub

Private Sub 個人番号_AfterUpdate()
〜
..CommandText = "str2"
Set  parm  =  .CreateParameter("個人番号",  adVarWChar,  adParamInput,  50,
Forms(初期フォーム)![個人番号])
.Parameters.Append parm
.Execute
End With
Set rs = Nothing
Forms(照会結果フォーム).RecordSource = "str2"
Msg = "@個人番号 int = Forms![照会結果フォーム]![個人番号]"
Forms(照会結果フォーム.InputParameters = Msg
Forms(照会結果フォーム).[個人番号] = " "
DoCmd.OpenForm 照会結果フォーム
Exit Sub

「照会結果フォーム」のイベントプロシージャVBA
Private Sub カナ氏名_AfterUpdate()
〜
.CommandText = "str1"
Set  parm  =  .CreateParameter("カナ氏名",  adVarWChar,  adParamInput,  50,
Forms(初期フォーム)![カナ氏名])
〜
Set rs = Nothing
Forms(初期フォーム)![カナ氏名])=Forms(照会結果フォーム)![カナ氏名])

DoCmd.OpenForm 照会結果フォーム
End Sub

Private Sub 個人番号_AfterUpdate()
〜
..CommandText = "str2"
Set  parm  =  .CreateParameter("個人番号",  adVarWChar,  adParamInput,  50,
Forms(初期フォーム)![個人番号])
.Parameters.Append parm
.Execute
End With
Set rs = Nothing
Forms(初期フォーム)![個人番号])=Forms(照会結果フォーム)![個人番号])
Forms(照会結果フォーム).RecordSource = "str2"
Msg = "@個人番号 int = Forms![照会結果フォーム]![個人番号]"
Forms(照会結果フォーム.InputParameters = Msg
Forms(照会結果フォーム).[個人番号] = " "
DoCmd.OpenForm 照会結果フォーム
Exit Sub

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

<html><body><font size="2" face="MS ゴシック">前回はご容赦下さい。</font><br>
<font size="2" face="MS ゴシック">ご指摘いただき、質問文書を訂正いたしました。</font><br>
<br>
<font size="2" face="MS ゴシック">やりたいことは</font><br>
<font size="2" face="MS ゴシック">・当初、照会結果フォームのレコードソースプロパティと入力パラメータプロパティに「カナ氏名」用の値を設定しておいて、個人番号入力時、フォーム出力直前にプログラムでプロパティの値を入れ替えたい。</font><br>
<br>
<font size="2" face="MS ゴシック">うまく行かない点</font><br>
<font size="2" face="MS ゴシック">・個人番号入力時、フォームがオープンできていないので変更ができません。(下線の部分)</font><br>
<br>
<br>
<font face="MS ゴシック">フォームに乗せているコントロール(表のつもり)</font><br>
<br>
<font face="MS ゴシック">    [コントロール]                       F[初期フォーム]         F[照会結果フォーム]</font><br>
<br>
<font face="MS ゴシック">レコードソース                          ダミーレコード          str1</font><br>
<br>
<font face="MS ゴシック">入力パラメータ                          ブランク                @カナ氏名 TEXT  FORMS(&quot;初期フォーム&quot;)![カナ氏名]</font><br>
<br>
<font face="MS ゴシック">イベントP  Sub カナ氏名_AfterUpdate()   別途記載                別途記載</font><br>
<br>
<font face="MS ゴシック">イベントP  Sub_個人番号_AfterUpdate()   別途記載                別途記載</font><br>
<br>
<br>
<br>
<font face="MS ゴシック">ストアドプロシージャ</font><br>
<font size="2" face="MS ゴシック">CREATE PROCEDURE str1</font><br>
<font size="2" face="MS ゴシック">@カナ氏名 nvarchar(50)</font><br>
<font size="2" face="MS ゴシック">AS</font><br>
<font size="2" face="MS ゴシック">select 住所 from 属性</font><br>
<font size="2" face="MS ゴシック">where カナ氏名=@カナ氏名</font><br>
<br>
<font size="2" face="MS ゴシック">CREATE PROCEDURE str2 </font><br>
<font size="2" face="MS ゴシック">@個人番号 int</font><br>
<font size="2" face="MS ゴシック">AS</font><br>
<font size="2" face="MS ゴシック">select 住所 from 属性</font><br>
<font size="2" face="MS ゴシック">where 個人番号 = @個人番号</font><br>
<br>
<font face="MS ゴシック">イベント P</font><br>
<font face="MS ゴシック">パラメータ項目およびVBAの構成に関わる箇所を抜き出しました。</font><br>
<br>
<font size="2" face="MS ゴシック">「初期フォーム」のイベントプロシージャVBA</font><br>
<font size="2" face="MS ゴシック">Private Sub カナ氏名_AfterUpdate()</font><br>
<font size="2" face="MS ゴシック">〜</font><br>
<font size="2" face="MS ゴシック">.CommandText = &quot;str1&quot; </font><br>
<font size="2" face="MS ゴシック">Set parm = .CreateParameter(&quot;カナ氏名&quot;, adVarWChar, adParamInput, 50, Forms(初期フォーム)![カナ氏名])</font><br>
<font size="2" face="MS ゴシック">〜</font><br>
<font size="2" face="MS ゴシック">Set rs = Nothing</font><br>
<font size="2" face="MS ゴシック">DoCmd.OpenForm 照会結果フォーム</font><br>
<font size="2" face="MS ゴシック">End Sub</font><br>
<br>
<font size="2" face="MS ゴシック">Private Sub 個人番号_AfterUpdate()</font><br>
<font size="2" face="MS ゴシック">〜</font><br>
<font size="2" face="MS ゴシック">..CommandText = &quot;str2&quot; </font><br>
<font size="2" face="MS ゴシック">Set parm = .CreateParameter(&quot;個人番号&quot;, adVarWChar, adParamInput, 50, Forms(初期フォーム)![個人番号])</font><br>
<font size="2" face="MS ゴシック">.Parameters.Append parm</font><br>
<font size="2" face="MS ゴシック">.Execute</font><br>
<font size="2" face="MS ゴシック">End With</font><br>
<font size="2" face="MS ゴシック">Set rs = Nothing</font><br>
<u><font size="2" face="MS ゴシック">Forms(照会結果フォーム).RecordSource = &quot;str2&quot;</font></u><br>
<font size="2" face="MS ゴシック">Msg = &quot;@個人番号 int = Forms![照会結果フォーム]![個人番号]&quot;</font><br>
<font size="2" face="MS ゴシック">Forms(照会結果フォーム.InputParameters = Msg</font><br>
<font size="2" face="MS ゴシック">Forms(照会結果フォーム).[個人番号] = &quot; &quot;</font><br>
<font size="2" face="MS ゴシック">DoCmd.OpenForm 照会結果フォーム </font><br>
<font size="2" face="MS ゴシック">Exit Sub</font><br>
<br>
<font size="2" face="MS ゴシック">「照会結果フォーム」のイベントプロシージャVBA</font><br>
<font size="2" face="MS ゴシック">Private Sub カナ氏名_AfterUpdate()</font><br>
<font size="2" face="MS ゴシック">〜</font><br>
<font size="2" face="MS ゴシック">.CommandText = &quot;str1&quot; </font><br>
<font size="2" face="MS ゴシック">Set parm = .CreateParameter(&quot;カナ氏名&quot;, adVarWChar, adParamInput, 50, Forms(初期フォーム)![カナ氏名])</font><br>
<font size="2" face="MS ゴシック">〜</font><br>
<font size="2" face="MS ゴシック">Set rs = Nothing</font><br>
<font size="2" face="MS ゴシック">Forms(初期フォーム)![カナ氏名])=Forms(照会結果フォーム)![カナ氏名])</font><br>
<br>
<font size="2" face="MS ゴシック">DoCmd.OpenForm 照会結果フォーム</font><br>
<font size="2" face="MS ゴシック">End Sub</font><br>
<br>
<font size="2" face="MS ゴシック">Private Sub 個人番号_AfterUpdate()</font><br>
<font size="2" face="MS ゴシック">〜</font><br>
<font size="2" face="MS ゴシック">..CommandText = &quot;str2&quot; </font><br>
<font size="2" face="MS ゴシック">Set parm = .CreateParameter(&quot;個人番号&quot;, adVarWChar, adParamInput, 50, Forms(初期フォーム)![個人番号])</font><br>
<font size="2" face="MS ゴシック">.Parameters.Append parm</font><br>
<font size="2" face="MS ゴシック">.Execute</font><br>
<font size="2" face="MS ゴシック">End With</font><br>
<font size="2" face="MS ゴシック">Set rs = Nothing</font><br>
<font size="2" face="MS ゴシック">Forms(初期フォーム)![個人番号])=Forms(照会結果フォーム)![個人番号])</font><br>
<font size="2" face="MS ゴシック">Forms(照会結果フォーム).RecordSource = &quot;str2&quot;</font><br>
<font size="2" face="MS ゴシック">Msg = &quot;@個人番号 int = Forms![照会結果フォーム]![個人番号]&quot;</font><br>
<font size="2" face="MS ゴシック">Forms(照会結果フォーム.InputParameters = Msg</font><br>
<font size="2" face="MS ゴシック">Forms(照会結果フォーム).[個人番号] = &quot; &quot;</font><br>
<font size="2" face="MS ゴシック">DoCmd.OpenForm 照会結果フォーム </font><br>
<font size="2" face="MS ゴシック">Exit Sub</font><br>
<br>
<font face="MS ゴシック">seki</font></body></html>
--0__=C6BBE45FDFB24C8F8f9e8a93df938690918cC6BBE45FDFB24C8F--



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


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

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

MSDE TOP ページに移動する

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