Page 327 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ストアドプロシージャのバラメータにユー... てくの 03/7/5(土) 19:10 ┣Re:ストアドプロシージャのバラメータにユー... こうちゃん 03/7/7(月) 11:56 ┗Re:ストアドプロシージャのバラメータにユー... てくの 03/7/8(火) 15:31 ┗Re:ストアドプロシージャのバラメータにユー... こうちゃん 03/7/8(火) 18:17 ┗Re:ストアドプロシージャのバラメータにユー... てくの 03/7/9(水) 18:02 ┗Re:ストアドプロシージャのバラメータにユー... こうちゃん 03/7/10(木) 8:59 ┗Re:ストアドプロシージャのバラメータにユー... てくの 03/7/10(木) 10:37 ─────────────────────────────────────── ■題名 : ストアドプロシージャのバラメータにユー... ■名前 : てくの <info@technos-jp.com> ■日付 : 03/7/5(土) 19:10 -------------------------------------------------------------------------
AccessプロジェクトでSQLServerにつないでいます。 ストアドプロシージャでユーザー関数をパラメータで渡すことができるのしょうか? Create procedure Test { @param1 int = UserPrg() /*ユーザー関数*/ } as select * from TestTbl return のように使いたいのですが・・ |
てくのさん、こんにちは >AccessプロジェクトでSQLServerにつないでいます。 >ストアドプロシージャでユーザー関数をパラメータで渡すことができるのしょうか? >Create procedure Test >{ > @param1 int = UserPrg() /*ユーザー関数*/ >} >as > select * from TestTbl >return >のように使いたいのですが・・ SQLServerやAccessのバージョン等が無いと回答しづらいですね。 ここでいう「ユーザー関数」とは、SQLServerの「ユーザ定義関数」かVBA上の「ユーザ定義関数」どちらでしょう? SQLServerが2000なら、サーバ側の「ユーザ定義関数」をストアドプロシージャから呼び出すことは可能です。 SQLServerが7.0以前の場合や、VBA上の「ユーザ定義関数」の場合は、ADOのCommandオブジェクトで、ストアドプロシージャに関数の戻り値を渡すことにより同様の処理を実現可能です。 またVBA上の「ユーザ定義関数」の場合でも、その内容次第ではストアドプロシージャ上で処理してしまうこともできるとおもいます。 #ストアドプロシージャからVBAの「ユーザ定義関数」を呼び出せるということではありませんよ、念のため! いづれにしても、もう少し詳細な情報がないとこれ以上の回答を得るのは難しいとおもいますよ。 |
説明不足の部分をご連絡させていただきます。 ユーザー関数はVBA上での「ユーザー関数」SQLServerのバージョンは7(MSDE)です。 Jetではフォームのレコードソースにクエリーを指定しクエリーの中に検索結果を導く関数を埋め込み検索などの処理を行っていました。 それをできるだけ手を加えずにSQLServerに移行したいと思っています。 ストアドプロシージャで同様の処理がはたして行えるものなのでしょうか? ご教授下されば幸いです。 |
てくのさん、こんにちは >説明不足の部分をご連絡させていただきます。 >ユーザー関数はVBA上での「ユーザー関数」SQLServerのバージョンは7(MSDE)です。 >Jetではフォームのレコードソースにクエリーを指定しクエリーの中に検索結果を導く関数を埋め込み検索などの処理を行っていました。 >それをできるだけ手を加えずにSQLServerに移行したいと思っています。 >ストアドプロシージャで同様の処理がはたして行えるものなのでしょうか? >ご教授下されば幸いです。 最初の回答にも書きましたが、ストアドプロシージャからVBA上の「ユーザー関数」を呼び出すことはできません。 関数が「検索結果を導く関数」ということですから、ストアドプロシージャに検索条件を渡して検索するようにしたらいかがでしょう? いずれにしても、これも最初の回答に書いたように、もっと詳細(具体的)な条件を教えていただかないとレスが難しいですね。 |
ストアドプロシージャに検索条件を渡して検索するようにしたらと回答いただいたのですが・・。 例えば氏名というフィールドを持ったMDBがあるとします。 クエリーの抽出条件に"Like Prg()"と指定しておきます。 Prg()は Function Prg() Prg = "*" & forms!フォーム名!検索条件入力用コントロール & "*" end Function のように作っておきます。 このようにしておくと部分一致の検索ができるのと、何も検索条件入力用コントロールに入力されていない場合は全部のデータを表示することができます。 このような方法をストアドプロシージャでも実現してみたいのですが・・・ |
てくのさん、こんにちは >例えば氏名というフィールドを持ったMDBがあるとします。 >クエリーの抽出条件に"Like Prg()"と指定しておきます。 >Prg()は >Function Prg() > Prg = "*" & forms!フォーム名!検索条件入力用コントロール & "*" >end Function >のように作っておきます。 >このようにしておくと部分一致の検索ができるのと、何も検索条件入力用コントロールに入力されていない場合は全部のデータを表示することができます。 >このような方法をストアドプロシージャでも実現してみたいのですが・・・ 質問の仕方が具体的になりませんので、答えようがないところですが、とりあえず具体的例を示します。 例:「T1テーブルのデータをforms!フォーム名!検索条件入力用コントロールをキーにProc_Procedureで選択する。」 テーブル名、コントロール名等は実際のものに置き換えてご検討ください。 その上で、質問があれば「具体的」にお願いします。 'ADOのCommanndを使用したストアド呼び出しの例 Private Sub cmd_Execute_Click() Dim dataconn As ADODB.Connection Dim Cmd As ADODB.Command Dim cmdPara As ADODB.Parameter Set dataconn = CurrentProject.Connection Set Cmd = New ADODB.Command Set Cmd.ActiveConnection = dataconn Cmd.CommandText = "Proc_Procedure" Cmd.CommandType = adCmdStoredProc Set cmdPara = Cmd.CreateParameter("Para", adVarChar, adParamInput, 20) Cmd.Parameters.Append cmdResult Cmd.Parameters.Append cmdPara cmdPara.Value = Prg() Cmd.Execute Set Cmd = Nothing Set dataconn = Nothing End Sub 'Functionの例 Function Prg() Prg = "%" & forms!フォーム名!検索条件入力用コントロール & "%" end Function 'ストアドプロシージャ例 Alter Procedure Proc_Procedure @Para VarChar(20) As SELECT * FROM T1 WHERE ID LIKE @Para Return |
ありがとうございました。 早速、ためしてみます。 何度もお答えいただき感謝しています。 これからもよろしくご指導下さい。 |