DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データ更新が出来ません

環境/言語:[Win2000+VB6+MSDE]
分類:[VB6以前]

MSDE + VB6 の環境で稼動中のデータ更新プログラムの拡張をする事になりま
した。(以前は他の担当者がプログラムのメンテナンスを行っていたのですが、
都合により、引継ぎの出来無いまま引き受ける事になった次第です)

内容は以下に示す通り、.Parameters(39)と.Parameters(40)にエリアを追加し、DB
の更新を行いたいのですが、全く反映されませんでした。
(DB は Access2000を使って拡張しました)

プログラム:
Sub SetQueryParamsFromCurData(CurData As KoujiMstInfoRec, curQry As ADODB.Command)
On Error Resume Next

With curQry
.CommandType = adCmdStoredProc
.Parameters.Refresh
.Parameters(1).Value = CurData.Code
:
(以下同様により省略)
:
.Parameters(38).Value = CurData.Tantou

' 追加(以下)
.Parameters(39).Value = CurData.JittshiKoukiEnd
.Parameters(40).Value = CurData.KakuteiKingaku
' --- ここまで ---

End With
End Sub

エラー内容:
要求された名前、または序数に対する項目がコレクションにありません。

動作を見た感じでは、DBにエリアを追加した際に、DBに何がしかの方法で、それを
通知する(Access2000以外の方法)必要があるように思えたので、ネットで検索して
みたのですが、方法等は判りませんでした。
お手数ですが、どなたかご教授頂けませんでしょうか。
> エラー内容:
> 要求された名前、または序数に対する項目がコレクションにありません。
エラー内容から判断すると、エラーはたぶん
.Parameters(39).Value = CurData.JittshiKoukiEnd
で発生しているのではないかと推測します。
コレクションParametersが38個の要素しか持っていないのに
39個目の要素にアクセスしようとしたためエラーが発生したと
思われます。
.CommandType = adCmdStoredProc
.Parameters.Refresh
の処理で、ストアドプロシジャのパラメタ数に応じて
Parametersが初期化されるので、ストアドプロシジャの
パラメタ数が38なのではないでしょうか。
がちゃぴんがおっしゃっている「拡張」は、『テーブルの
カラム(列)を追加した』、ということだと推測するのですが、
追加したカラム分のデータを処理するようにストアドプロシジャを
修正する必要があるのではないでしょうか?
つまり、ストアドプロシジャのパラメタを2個(追加したカラム分)
追加して、ストアドプロシジャ内の処理を追加カラム分を
処理するように修正。
ご教授ありがとうございます。

> 追加したカラム分のデータを処理するようにストアドプロシジャを
> 修正する必要があるのではないでしょうか?
> つまり、ストアドプロシジャのパラメタを2個(追加したカラム分)
> 追加して、ストアドプロシジャ内の処理を追加カラム分を
> 処理するように修正。

ご指摘の通りです。
当方、行いたいことは全くその通りであり、早速ストアドプロシー
ジャの修正を試みたのですが、その方法の見当を付ける事が出来ま
せんでした。
そこで再度お教え願いたいのですが、VB6+MSDE をインストールした
環境だけでは、ストアドプロシージャの修正は行えないのでしょうか?
その具体的な手順の参考になるものはありますでしょうか?
(MS-SQL Server のインストールが不可欠?)

お手数お掛けしますが、お教え頂けると幸いです。

DOBON.NET | プログラミング道 | プログラミング掲示板