Windows98でに不具合について

解決


kanon  2004-09-22 19:12:36  No: 85692

こんにちは、kanonと申します。

ご存知の方がおりましたら、教えていただきたいのですが。。。

Windows2000,VB6.0 でデータベース(Access2000)フロントサイドを作成しました。
その中で、レコードの更新を以下のように行っています。

-------------------------------------------------------------------
Private Sub Cmd_更新_Click()

Dim db As ADODB.Connection
Dim strSQL As String
Dim strCNN As String

    strCNN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
     "\\FLSV\DB\DB.mdbPersist Security Info=False"
    strSQL = "UPDATE ・・・ (UPDATE文は長いので省略します)"

    Set db = New ADODB.Connection
    db.Open strCNN
    db.Execute strSQL
    db.Close
    Set db = Nothing

End Sub
-------------------------------------------------------------------

アプリケーションをWindows2000にセットアップした場合はレコードが更新されるのですが、
Windows98にセットアップした場合は更新されないのです。
また、特にエラーも発生せずに、処理が終了します。

上記の事象以外でも、「SELECT 〜 FROM 〜 GROUP BY 〜 」で指定したレコードセットが
正しく取得できなかったりしています(もちろんWindows2000では正常に取得します)。

「Windows98でADOを使用する場合」といった感じで過去ログや他のサイトを確認したところ、普通はエラーが発生したりするみたいです。
  → そこではDCOMやMDACのインストールが必要とあったので、実施してみましたが事象は変わりませんでした。

別にADO全てが使用できない状態ではないみたいです。
  → ADOデータコントロールでレコードの取得は可能だったりします

どなたか正常に動作させる方法をご存知であれば教えていただきませんでしょうか。。。


だい  URL  2004-09-23 00:42:47  No: 85693

文面を拝見して、いくつか考えられることと不明点があります。

(1)考えられること
・SQL文の誤り(UPDATE文のWHERE条件が1件もヒットしていない)
・ファイルパスの誤り(実は別のMDBファイルを更新している)
・エラーハンドリングが適切でない(On Error Resume Next等)
・セットアップ時の不具合
・MDBの破損(最適化してみてください)
・処理の競合(他のPCから更新中だった等)
・環境要因(VB6のサービスパック、MDACのバージョン...等)

(2)確認したい事項
・OSのサービスパックは最新か?(Win2000SP4、Win98SP1それともSE?)
・VB6のサービスパックは最新か?(SP6)
・どうやってWin98にセットアップしたのか?
  (ディストリビューションウィザードでならSetup.lstの内容は?)
・MDACのバージョンは最新か?(MDAC2.5以上)
・Jet4.0のバージョンは最新か?(SP8)
・UPDATE文を短かくすれば成功するのか?
・GROUPBYがなければ正しく取得できるのか?
・Win98にVB6SP6の開発環境を作成したら、そこで現象は再発するのか?


kanon  2004-09-23 02:23:53  No: 85694

だいさん、お返事ありがとうございます。

まず(1)について・・・
・SQL文の誤り(UPDATE文のWHERE条件が1件もヒットしていない)
  → 何度も確認してみたのですが、誤りはありませんでした
・ファイルパスの誤り
  → これも確認してみましたが、誤りはありませんでした
・エラーハンドリングが適切ではない
  → On Error GoTo ErrHND  でErrHNDへ飛ばして、ErrHNDではメッセージを
     表示しているだけです(Resume Next 等は使用してません)。
・セットアップ時の不具合
  → 始めはそう思ったので、アンインストールして再度セットアップをしてみ
     ましたが、事象は回復しませんでした。
     (計4回程入れ直したんですけどダメでした)
・MDBの破損
  → 最適化しましたが、事象は回復しませんでした
・処理の競合
  → 他に使用していたユーザーはいませんでした
・環境要因
  → 確認してみます

(2)について・・・
  一つ一つ確認してみます。
  特に「最新バージョンかどうか」ということに注意して、バージョンが古いよう
  であれば、最新にして確認してみます

セットアップはディストリビューションウィザードで行ったので、Setup.lstの
内容を以下に記します。

----------------------------------------------------------------------
[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File3=@VB6JP.DLL,$(WinSysPath),,$(Shared),10/2/00 12:00:00 AM,102160,6.0.89.88
File4=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File5=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File6=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File7=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File8=@MSVBVM60.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,2/23/04 12:00:00 AM,1386496,6.0.97.82

[IconGroups]
Group0=DB
PrivateGroup0=-1
Parent0=$(Programs)

[RASDB]
Icon1="DB.exe"
Title1=DB
StartIn1=$(AppPath)

[Setup]
Title=DB
DefaultDir=$(ProgramFiles)\DB
AppExe=DB.exe
AppToUninstall=DB.exe

[Setup1 Files]
File1=@MDAC_TYP.EXE,$(AppPath),,,2/15/00 12:00:00 AM,7854312,25.0.4403.12
File2=@DATRPJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,18944,6.0.81.63
File3=@STDFTJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,6144,6.0.81.63
File4=@MSSTDFMT.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,119808,6.1.97.82
File5=@MSBIND.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,78848,6.1.97.82
File6=@MSDATREP.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),6/24/98 12:00:00 AM,187712,6.0.81.69
File7=@DATGDJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,25088,6.0.81.63
File8=@MSDATGRD.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,275216,6.1.97.82
File9=@DATLSJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,26624,6.0.81.63
File10=@MSDATLST.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),5/22/00 12:00:00 AM,232640,6.0.84.18
File11=@ADODCJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,14336,6.0.81.63
File12=@MSADODC.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,131856,6.1.97.82
File13=@DBGRDJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,28160,1.0.0.126
File14=@DBGRID32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),6/24/98 12:00:00 AM,525352,5.1.81.4
File15=@MSMSKJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,18432,6.0.81.63
File16=@MSMASK32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),5/22/00 12:00:00 AM,166600,6.0.84.18
File17=@DBLSTJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,27136,6.0.81.63
File18=@DBLIST32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,215312,6.1.97.82
File19=@PageSet.dll,$(WinSysPath),$(DLLSelfRegister),$(Shared),12/14/98 10:14:46 AM,28672,1.0.0.0
File20=@DBRPRJP.DLL,$(WinSysPath),,$(Shared),7/6/98 12:00:00 AM,30208,6.0.81.63
File21=@MSDBRPTR.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,322560,6.1.97.82
File22=@MSDERUN.DLL,$(CommonFiles)\designer,$(DLLSelfRegister),$(Shared),7/15/00 12:00:00 AM,136192,6.0.88.4
File23=@VB5DB.DLL,$(WinSysPath),,$(Shared),6/18/98 12:00:00 AM,89360,6.0.81.69
File24=@msjtes40.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,3/2/04 4:58:28 AM,241936,4.0.8618.0
File25=@msrepl40.dll,$(WinSysPathSysFile),,,9/27/03 10:12:58 AM,553232,4.0.8015.0
File26=@msrd3x40.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,9/27/03 10:12:57 AM,315664,4.0.6508.0
File27=@msrd2x40.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,9/27/03 10:12:56 AM,422160,4.0.7328.0
File28=@mswdat10.dll,$(WinSysPathSysFile),,,9/27/03 10:13:00 AM,831760,4.0.6508.0
File29=@mswstr10.dll,$(WinSysPathSysFile),,,10/3/03 5:26:57 PM,614429,4.0.6508.0
File30=@expsrv.dll,$(WinSysPathSysFile),,,9/27/03 10:12:38 AM,380957,6.0.72.9589
File31=@vbajet32.dll,$(WinSysPathSysFile),,,9/27/03 10:12:31 AM,30749,6.0.1.9431
File32=@msjint40.dll,$(WinSysPathSysFile),,,10/3/03 5:26:55 PM,151581,4.0.6508.0
File33=@msjter40.dll,$(WinSysPathSysFile),,,9/27/03 10:12:53 AM,53520,4.0.6508.0
File34=@msjet40.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,3/2/04 4:58:26 AM,1507600,4.0.8618.0
File35=@dao360.dll,$(MSDAOPath),$(DLLSelfRegister),$(Shared),3/2/04 4:58:18 AM,561424,3.60.8618.0
File36=@DB.exe,$(AppPath),,,9/13/04 10:33:23 AM,1019904,1.0.0.0

----------------------------------------------------------------------

setup.lst まるまるコピーしてしまい、見づらくなってしまってすみません;

とにかく、状況をもっと詳しく確認してから、また書き込みします。
だいさん、ご指摘ありがとうございました。


kanon  2004-09-24 22:16:53  No: 85695

kanonです。

(2)の確認事項について確認してみました

・OSにサービスパックは最新か?
  → Win98はSP1,Win2000はSP4で両方とも最新でした
・VB6のサービスパックは最新か?
  → SP6で最新です
・MDACのバージョンは最新か?
  → MDAC2.5です
・Jet4.0のバージョンは最新か?
  → SP8で最新です
・UPDATE文を短くすれば成功するのか?
  → 成功しませんでした
・GROUPBYがなければ正しく取得できるのか?
  → 取得できませんでした
・Win98にVB6SP6の開発環境を作成したら、そこで事象は再発するのか?
  → 再発しました

MSのサポート情報を見て、考えられる手段は一応試してはいるのですが・・・
困ったものです・・・

やっぱりクライアントはWin2000に統一しないとダメなんですかねぇ。。。


kanon  2004-09-24 23:02:48  No: 85696

お騒がせしました。
自己解決しました。

UPDATE文に問題があったようです。

実は、『UPDATE 〜 FROM 〜 WHERE 日付 = #" & Text_日付.Text & "#"』
とレコードを抽出していたのですが・・・

2000年問題?か何かの影響でレコード抽出されなかったみたいです。

UPDATE 〜 FROM 〜 WHERE 日付 = #" & Format(Text_日付.Text,"yyyy/mm/dd") & "#"
に変更したら、ちゃんと更新されました。

だいさんをはじめ、皆様大変ご迷惑をおかけしました。
VB初心者なもので、これからもご迷惑をおかけすると思いますが、
今後ともよろしくお願い致します。


だい  2004-09-25 00:02:51  No: 85697

年を2桁にしていましたか?

これは、俗に「2001年問題」と呼ばれています。
http://wakouji.hp.infoseek.co.jp/ugoke2/pcsub31.htm

OSに関係なく、コントロールパネルの「日付」の「短い形式」
の設定次第なのですが、
既定値がWin98では「yy/mm/dd」、Win2000/XPだと「yyyy/mm/dd」
なので、今回のような症状になったのでしょうね。


kanon  2004-09-25 00:24:36  No: 85698

とてもわかりやすいリンク♪
何から何までありがとうございます。

2001年問題ですか・・・

VBの講習を受けた時に、
「日付は4桁で設定すること!」
って言われたので、テキストボックスの入力を4桁で入力するように制限したの
ですけど、それだけじゃダメだったみたいですね・・・  (^^;)

まだまだ勉強不足でした。。。

だいさん、ホントにありがとうございました。
私ももっと勉強して、解答できる側になれるようがんばります!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加