Date: Wed, 30 Jun 2004 12:01:57 +0900
From: who@sub.example.jp
--0__=C6BBE450DF9F1A2B8f9e8a93df938690918cC6BBE450DF9F1A2B
Content-type: text/plain; charset=ISO-2022-JP
お世話になります。
SQLServer自習書シリーズ「SQLServer7.0(またはSQLServer2000)とAccess2000によ
るアプリケーション開発」に従って
パラメータ付ストアドプロシージャをレコードソースとして選択する連結フォーム
を作成しております。
フォームに設定したパラメータがストアドプロシージャにわたりません。
ADOのプログラミングうまくいきません。原因を教えて下さい。
なお、ストアドプロシージャをレコードソースとして選択する連結フォームを作成
しフォームを開くと[パラメータの入力]ダイアログボックスが表示され、この入力
をすると
フォームが正しく表示されます。
ストアドプロシージャのパラメータの受け渡しはCreateParameterを使いADOのプ
ログラミングは以下のとおり作りましたが、
実行結果として、フォームに設定したパラメータがストアドプロシージャにわたら
ず、[パラメータの入力]ダイアログボックスが表示されます。
テスト環境は Access2003 on WindowsXP に SQLServer7.0 Desktop をインストール
してます。(SP3)
ADOのプログラミング
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()
If Trim(Forms(cFormName_M)![kanashimei]) & "" = "" Or
Forms(cFormName_M)![kanashimei] = 0 Or
IsNumeric(Forms(cFormName_M)![kanashimei]) Then
MsgBox "カナ氏名がスペースまたは数字です。"
Exit Sub
End If
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
'Set rs = cmd.Execute
'rs.MoveFirst
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__=C6BBE450DF9F1A2B8f9e8a93df938690918cC6BBE450DF9F1A2B
Content-type: text/html; charset=ISO-2022-JP
Content-Disposition: inline
<html><body><font face="MS Pゴシック">お世話になります。</font><br>
<font face="MS Pゴシック">SQLServer自習書シリーズ「SQLServer7.0(またはSQLServer2000)とAccess2000によるアプリケーション開発」に従って</font><br>
<font face="MS Pゴシック">パラメータ付ストアドプロシージャをレコードソースとして選択する連結フォームを作成しております。</font><br>
<br>
<font face="MS Pゴシック">フォームに設定したパラメータがストアドプロシージャにわたりません。</font><br>
<font face="MS Pゴシック">ADOのプログラミングうまくいきません。原因を教えて下さい。</font><br>
<br>
<font face="MS Pゴシック">なお、ストアドプロシージャをレコードソースとして選択する連結フォームを作成しフォームを開くと[パラメータの入力]ダイアログボックスが表示され、この入力をすると</font><br>
<font face="MS Pゴシック">フォームが正しく表示されます。</font><br>
<br>
<font face="MS Pゴシック">ストアドプロシージャのパラメータの受け渡しはCreateParameterを使いADOのプログラミングは以下のとおり作りましたが、</font><br>
<font face="MS Pゴシック">実行結果として、フォームに設定したパラメータがストアドプロシージャにわたらず、[パラメータの入力]ダイアログボックスが表示されます。</font><br>
<br>
<font face="MS Pゴシック">テスト環境は Access2003 on WindowsXP に SQLServer7.0 Desktop をインストールしてます。(SP3) </font><br>
<br>
<font face="MS Pゴシック">ADOのプログラミング</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>
<font face="MS Pゴシック">Private Sub kanashimei_AfterUpdate()</font><br>
<font face="MS Pゴシック"> If Trim(Forms(cFormName_M)![kanashimei]) & "" = "" Or Forms(cFormName_M)![kanashimei] = 0 Or IsNumeric(Forms(cFormName_M)![kanashimei]) Then</font><br>
<font face="MS Pゴシック"> MsgBox "カナ氏名がスペースまたは数字です。"</font><br>
<font face="MS Pゴシック"> Exit Sub</font><br>
<font face="MS Pゴシック"> End If</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ゴシック"> End With</font><br>
<font face="MS Pゴシック"> Set rs = Nothing</font><br>
<font face="MS Pゴシック"> 'Set rs = cmd.Execute</font><br>
<font face="MS Pゴシック"> 'rs.MoveFirst</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__=C6BBE450DF9F1A2B8f9e8a93df938690918cC6BBE450DF9F1A2B--
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|