Q:実行時エラー'''-2147217842(80040e4e) 操作はキャンセルされました。
A1:桁あふれ転送。
RDBは2桁で、表示転送元が4桁だった。
Q:実行時エラー'''-2147217885(80040e23) 行ハンドルは削除された行、又は削除のためにマークされた行を参照しました。
A1:DBを削除後に参照している。
A2:DBを読み込んでいない。
Q:実行時エラー'''-2147217887(80040e21) 多段階のOLEDBの操作でエラーが発生しました。 各OLEDBの状態の値をチェックして下さい。
A1:rs1![住所2]=str入力でstr入力がNULLになっていた。
Q:実行時エラー'''-2147217900(80040e14) SQLステートメントが正しくありません
Delete、Insert、Procedure、SelectまたはUpdateを使用して下さい。
A1:ACCESSのDBが開いていた。
A2:rs1.Open "社員", cn1, adOpenStatic, adLockOptimistic で社員がDBになかった。
A3:テーブルに無いと発生する。テーブル名パンチミス
Q:実行時エラー'''-2147217900(80040e14) ロックできませんでした。
A1:ACCESSのDBが開いていた。
A2:rs1.Open "社員", cn1, adOpenStatic, adLockOptimistic で社員がDBになかった。
テーブルに無いと発生する。
A3:Cmd.Executeでエラーが発生した-->
エラー個所はここだが、直接の原因はこの前の処理で異常終了していた。
したがってメッセージとは関係ない要因のときがあるので、1ステップずつチェックしたほうが良い。
Q:実行時エラー'''-2147217900(80040e14) 構文エラー:演算子がありません。
A1:SQL文にSpaceが余計に入っていた。
rs1.open strSQL,cn1,adopenstatic,adlockoptimisticの strSQLでエラー
strSQL = "SELECT [社員].* FROM [社員] WHERE ([社員].[社員NO] = '" & dtp社員NO.Value & "')"
「誤り」 [社員].[社員NO] =■■■'" −>「正」 [社員].[社員NO] = '" ■■■がSPACE
A2:SQL文にSpaceが余計に入っていた。
mySQL2 = "SELECT 出荷依頼.*" & _
" From 出荷依頼" & _
" Where (出荷依頼.出荷依頼要求日 = datevalue('" & shap020.dtp出荷日開始.Value & "')) and ((出荷依頼.出荷依頼種別) <> '3'■)" & _
" ORDER BY 出荷依頼.出荷依頼要求日, 出荷依頼.量産区分"
■がSPACE
*調べるコツは、SQL文をエディターにコピーして見るとスペースか良くわかる。
Q:実行時エラー'''-2147217900(80040e14) 1つ以上の必要なパラメータの値が設定されていません?
SQL文の項目名違い、テーブル名違いが多い。
A1:
:テーブル名、項目名が存在しない パンチミス。
デバッグではRs1.Closeにとぶが、通常ここではなく別のエラー が多い
A2:
SQL文が違っていた。コピーしたためDB名が前のままになっていた。
wwSQL3 = "SELECT [入荷予定].* FROM [入荷予定] WHERE [入荷予定]![商品NO] = '" & ww商品NO & "' and [入荷予定]![商品行NO] = '" & ww商品行NO & "' ORDER BY [出荷依頼]![商品NO]"
誤:[出荷依頼]![商品NO]
正:[[入荷予定]![商品NO]
A3:
SQL文が違っていた。WHERE文の最後の)が1つ多い
A4:
SQL文の変数が""になっていた
wwSQL2 = "SELECT [出荷明細].* FROM [出荷明細] WHERE [出荷明細].[出荷NO] = '" & ww出荷NO & "' and [出荷明細].[出荷行NO] = '" & ww出荷行NO & "' and [出荷明細].[入荷予定連番] = '" & ww入荷予定連番 & "' ORDER BY [出荷明細].[出荷NO], [出荷明細].[出荷行NO]"
rs2a.CursorLocation = adUseClient
rs2a.Open wwSQL2, cna1, adOpenStatic, adLockOptimistic <−−−ここでエラー
「ww入荷予定連番」にデータが転送されていなかった。""になっていた。
Q:実行時エラー'''-2147217908(80040e0c) CommandオブジェクトのCommandテキストが設定されていません?
A1:SetしたSQL文の項目名が違っていた。パンチミス
Set rs1=cmd.Executeで発生した。
SQL文がないとき発生する。
A2:wwSQL3の中味が空だった。
rs3a.Open wwSQL3, cna1, adOpenStatic, adLockOptimisticで、wwSQL3にSQL文が転送されていなかった。
A3:ロジック誤り
Option3.Value = Trueのロジックが無かったため、SQL文に転送されずエラーになった。
If shap020.Option1.Value = True Then
mySQL2 = "SELECT 出荷依頼.*" & _
" From 出荷依頼" & _
" Where (出荷依頼.出荷リストフラグ = '1')" & _
" ORDER BY 出荷依頼.出荷依頼要求日, 出荷依頼.量産区分"
ElseIf shap020.Option2.Value = True Then
mySQL2 = "SELECT 出荷依頼.*" & _
" From 出荷依頼" & _
" Where (出荷依頼.出荷リストフラグ = '2')" & _
" ORDER BY 出荷依頼.出荷依頼要求日, 出荷依頼.量産区分"
Else
End If
で
rs1a.Open mySQL2, cna1, adOpenStatic, adLockReadOnly <---ここでエラー発生
A4:オプションの初期設定(Option1.Value = True)をしなかったため、
wwSQL1が空になり実行でエラーになった。
if Option1.Value = True then
wwSQL1 = "SELECT 出荷依頼.* From 出荷依頼"
endif
rs1a.Open wwSQL1, cna1, adOpenStatic, adLockReadOnly <---ここでエラー発生
A5:SQL文ファイル名誤り
wwSQL5 = "SELECT [商品].* From [商品] ORDER BY [商品].[商品コード]"
rs5a.CursorLocation = adUseClient
rs5a.Open wwSQL2, cna1, adOpenStatic, adLockOptimistic ここでエラー
rs5a.Open wwSQL5, cna1, adOpenStatic, adLockOptimistic 正解
Q:実行時エラー'''-2147467259(80004005) テーブル'社員'はほかのユーザーが排他的に開いているか、
既にユーザーインターフエイスを介して開いているのでプログラムによって操作することはできません。
A1:AccessDBがデザインで開いていた。
Q:実行時エラー'''-2147467259(80004005) 指定されたフィールド'[出荷日]'がSQLステートメントのFORM句にある複数のテーブルを参照しました。
A1:テーブル名がなかった [出荷日]-->[受注]![出荷日]
Q:実行時エラー レコードが大きすぎます。テーブルまたは規則を
A1:CHAR(10)のサイズ10が違っていた
strSQL = "CREATE TABLE 社員([社員NO] CHAR(8) PRIMARY KEY,[氏名] CHAR(10),[住所] CHAR(30),[TEL] CHAR(15)," & _
"[入社日] DATE,[家族数] INTEGER)"
Q:実行時エラー 指定されたデータ量がフィールドサイズをこえています。
データ量を減らし、挿入また貼り付けを行ってください。
この場合、開発環境で実行する時はエラーは出ないが、「XXXX.exeの作成」でXXXX.exeを作って、それから実行すると何故かこのエラーが出てしまう。
いろいろやった結果、DBの転送にMIDを入れて、DBの桁以上伝送できないようにしたら直った。
ただし、なぜ開発環境では正常に動いていたかは不明?
A1:
変更前: rs2a![品目] = w品目
変更後: rs2a![品目] = Mid(w品目, 1, 10)
*rs2a![品目]の桁数は10桁
Q:実行時エラー 抽出条件で型が一致しません。
A1:リテラルが'14' のところ14になっていた。
誤 wwSQL : "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = 14"
正 wwSQL : "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = '14'"
日付けは #2002/05/01#
以下、ダメ
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " + para2 + " ORDER BY 市町村.JISコード" 'ダメ抽出条件で型が一致しません
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " + "para2" + " ORDER BY 市町村.JISコード" 'ダメ
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " & para2 & " ORDER BY 市町村.JISコード" 'ダメ
以下、OK
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = '14'" 'OK
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " + "'14'" + " ORDER BY 市町村.JISコード" 'OK
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = '" + para2 + "' ORDER BY 市町村.JISコード元" 'OK
Q:実行時エラー 種類が一致しません。
A1:転送先が数字項目なのに文字項目を転送していた。
誤:rs3a![受注数量] = W発注数
数字項目 文字項目
正:rs3a![受注数量] = W発注数
数字項目 数字項目
Q:実行時エラー Binding Collection Error
Fiold not up datable,Bound Property NAME:Text,Field Name:出荷日
A1:両方指定している時発生する。
Set txt積込日.DataSource = rs1
txt積込日.DataField = "出荷指示日" と プロパティで指定した。
Q:実行時エラー 多段階の操作でエラーが発生しました各状態の値をチェックして下さい
A1:部門−社員で社員の転送に数字項目に文字を送っていた
A2:受桁より送り桁が大きかった。
DBの項目数が12桁のところ、コンボボックスで20桁入力していた
Q:実行時エラー 複数ステップの操作でエラーが発生しました。各状態の値を確認して下さい。
A1:DBの項目数が5桁のところ、定数で6桁を送っていた
rs4a![受注先] = "123456"
5桁 6桁
誤 5桁 --->正 6桁
Q:実行時エラー '-2147467259(80004005)':
ディスクまたはネットワ−クのエラーです。
A1:ネットワ−ク回線が切断されている。
Q:
実行時エラー'-2147467259(80004005)':テーブル'商品'はマシン'XXXXX'のユーザー'admin'
によって排他ロックされています。
A1:DBが開いていた。
Q:
実行時エラー '*'(在庫)で選択したフィールドはグループ化できません。
A1:グループ化の時は*指定ではなく、個別に指定すること。
誤
'引当在庫集約
wwSQL3b = "SELECT [引当在庫].*" & _
" From [引当在庫]" & _
" Where [引当在庫].[削除区分] = '0'" & _
" GROUP BY [引当在庫].[オーダーNO],[引当在庫].[ロット],[引当在庫].[品目コード],[引当在庫].[倉庫コード],[引当在庫].[ロケーションコード],[引当在庫].[ランクコード],[引当在庫].[評価区分],[引当在庫].[巻数]" & _
" ORDER BY [引当在庫].[オーダーNO],[引当在庫].[ロット],[引当在庫].[品目コード],[引当在庫].[倉庫コード],[引当在庫].[ロケーションコード],[引当在庫].[ランクコード],[引当在庫].[評価区分],[引当在庫].[巻数]"
rs4b.CursorLocation = adUseClient
rs4b.Open wwSQL3b, cna1, adOpenStatic, adLockOptimistic
正
'引当在庫集約
wwSQL3b = "SELECT [引当在庫].[オーダーNO],[引当在庫].[ロット],[引当在庫].[品目コード],[引当在庫].[倉庫コード],[引当在庫].[ロケーションコード],[引当在庫].[ランクコード],[引当在庫].[評価区分],[引当在庫].[巻数]" & _
以下同じ
Q:
実行時エラー'-2147467259(80004005)':データプロバイダーまたはほかのサービスがE_FAIL状態を返しました。
現象:VB6をWindows7で実行したらこのエラーが出た。
PG概要はDBの追加で、[追加]ボタンをクリックすると、DBに追加して、DATAGRIDに追加データが表示されるPG。
エラー発生場所:rs2a.Update ここでエラー発生
WindowsXPでは、いままで問題なく動いていたが、Windows7で実行したらこのエラーになった。
このPGをコピーして、別DB更新のPGを作っているがこれは問題なく動いている。
原因:まったく不明
応急処理:ABC.exeを作り、ABC.exeを互換性にすると問題なく動く。
ABC.exe右クリック → プロパティ → 「互換性」タブ → □「互換モードでこのプログラムを実行する。」にチェックを入れる。
但し、ABC.exeをコピーすると「互換性」チェックは外れます。
それと、ABC.exeをサーバーに置いてあると「互換性」チェックは付けられません。
従って、ABC.exeはサーバーにはおけず、クライアントPCに置くことになります。
Q:実行時エラー'5' プロシジャーの呼び出し、または引数が不正です。
開発環境ではエラーは出ないが、EXEではエラーになる。
A1:SetFocusをform_Loadで指定するとこのエラーが出る。
txt発注.SetFocusをform_Loadで指定してしまった。
PGを立ち上げて画面が表示する前にこのエラーが出る時は、SetFocusをForm_Loadで指定しています。
対策として
起動時のSetFocusはform_Activateで指定すれば問題なく動きます。
良く見落とすのは、Form_Load内でCALLしているモジュールが、そのモジュール内でtxt発注.SetFocusしているとこれもエラーになります。
Form_LoadだけPGを見ているとバグはつぶれません。要注意!!
「SetFocusはForm_Loadが終了後」と覚えておきましょう!!
A2:txt納期.SetFocusで発生した。
飛び先のtxt納期がtxt納期.Enabled = Falseになっているとエラーになる。
飛び先がEnabled = Falseになっている時は、SetFocusしない事。
A3:感じとして移動先がFalseになっていると発生しやすいみたいだ。
時間をおくと(DoEvents)なおる?(応急処理?)。
・今回の発生
メインPGよりPG1.show vbModal,Me
PG2.show vbModal,Me PG2の前で発生
Unload Me
対策 PG2の前にDoEventsを入れたら直った。
PG1.show vbModal,Me
DoEvents
PG2.show vbModal,Me
Unload Me
A4:BBB.Show.vbModal,AAA
CCC.Show.vbModal,AAA でエラー発生
他サイトより参照
・ADOの時はDoEventsを挟み込む。
・プロパティの値を直接参照したりする記述を行っている時に起るときがある。
-->プロパティを作業変数に代入して使用。
・新しいDBにオブジェクトをコピーしたら直った。
・デバッグ中は絶対に文字列を入れていた変数が、実行時にはNullのまま関数に渡されたてエラーになった。
・GotFocus、LostFocusでフォーカス制御を行ってると発生する時がある。
・FormのActivateイベントでSetFocusすると発生する時がある。
・VB6で作成したEXEをXPで実行すると発生する時がある。
-->互換モードで実行(EXEファイルを右クリックしてプロパティ)
Q:実行時エラー'6' オーバーフローしました。
A1:割り算で分母が0だった。
A2:日付の処理でDATEからSTRINGで直った(何処理か不明)
Q:実行時エラー'7' メモリーが不足しています。
A1:メモリー不足-->パソコンの再立上げ
画面プロパテイのパフォーマンスが10%以下になると出やすくなる。
VBのウインドウにモジュールを多く表示しているとメモリーを食う
−−>表示を最大にすると右上に「×」が表示されるのですべて閉じる
EXCELなどマルチであまりアプリケーションを立ち上げないこと。
Q:実行時エラー'9' インデックスが有効範囲にありません
A1:テーブル数より大きいテーブルを指定した時、発生する
・DataGrid使用で項目以上に転送した。
・DataGrid1.Columns(0)〜(5)のところ、Columns(6)を指定した。
・DataGrid1とDataGrid2を間違った (Columnsが項目以上)。
・DataGrid1.Columns(5).TEXTの内容がNULLだった。
DataGridでは初期画面で2項目表示されているが、その画面を一切修正せずにコーデングする
おまかせ型と画面修正型がある。
おまかせ型:全てコーデングする、画面を修正してはいけない(集計クエリーの表示など表示項目が不明な時に使用する)
画面修正型:表示項目を全て設定する(通常はこちら)
Q:実行時エラー'11' 0で除算しました。
A1:0で割った-->ifで迂回する。
Q:実行時エラー'13' 型が一致しません。
A1:数値項目に文字を入力した。
A2:IF文の記入誤り
誤 IF aa = 'A' or 'B' --->正 IF aa = 'A' or aa = 'B'
A3:数値項目にnullを転送していた。
A4:計算式に""があった。
計算の前にIF文でチェックしておく。
IF txt出荷数.text = "" then
txt出荷数.text = 0
END IF
A5:桁がずれていた
7桁のところ6桁になっていた。
誤 2012/1
正 2012/01
Q:実行時エラー'28' スタック領域が不足しています。
A1:PGが無限ループした。
A2:SetFocusの連鎖、Sub、Functionの呼び合い
A3:Clickイベントで同じ対象のコントロールの値を変化するとイベントの連鎖が発生する。
・Check1.Value=1はしない方が良い。オプションボタンを使用する。
・ClickイベントでDataGridなど同じ自分の項目をいじると、またClickイベントが発生して無限ループとなる
A4:Formatのコントロールが多すぎる。
A5:DataGridでループ項目が多すぎる。
for j=1 to rs1.fields.count
DataGrid1.Splits(0).Columns(j - 1).Width = 1330
next j
でfields.countを27から10にしたら直った。
A6:最新のSPをあてる。
Q:実行時エラー'52' ファイル名または番号が不正です。
A1:テキストファイルの読み込みでOPENしていなかった。
A2:ファイル名が違っていた。
A3:ネットワークの権限がない。
A4:ファイルがサーバーにある時、ファイルのパスが開通していない。
A5:ネットワークトラブルでサーバーのファイルが読めない。
Q:実行時エラー'53' ファイルが見つかりません。
A1:TEST01.TXTのファイルがなかった。
A2:別名でファイル指定していた。
A3:ファイル名のパンチミス
Q:実行時エラー'54' ファイルモードが不正です。
A1:
ファイルNOの誤り
Open strOUTFile For Output As #2 で、 Printは #1を指定していた。
誤 Print #1, wwoutput
正 Print #2, wwoutput
Q:実行時エラー'61' オーバーフローしました。
A1:項目の桁が足りない-->Longに変更。
Q:実行時エラー'61' ディスクの空き容量が不足しています。
A1:サーバーのDISK容量が不足していた。
最初はクライアント側のDISK容量だと思っていたが、サーバーDB修復再配置処理でもディスクの空き容量が表示されたので、VBのプログラムやクライアント側のDISK容量ではなくサーバー側であった。
A1:古い入力データで処理したためDISK容量が発生した。
ちょつと考えずらいが、古い日付で処理したため、エラーリストが多くなり容量不足が発生したと思われる。
正しい入力データで処理したら正常に終わった。
Q:実行時エラー'62' ファイルにこれ以上データがありません。
A1:CSVファイルの項目が少ない。
A2:入力レイアウトの「,,,」の件数が少ない時。
Q:実行時エラー'70' 書き込みできません。
A1:CSVファイルを書き込みしようとしたが、書き込みファイルが開いていた。
書き込みファイルを閉じれば直る。
Q:実行時エラー'75' パス名が無効です。
A1:OPEN filename For Input As #3 で、filenameがスペースだった
A2:ファイルがない時発生する。
A3:サーバーファイルの時で、ネットワークが繋がっていない時発生する。
A4:暗号化パソコンで、ファイルを単純コピーした時は、認識されない。
A5:ファイル作成時より、低い権限でファイルを上書きした。
アドミニ権限でファイルを作成し、そのファイルを一般権限で上書きしようとしてエラーになった。
このような場合、Explorerで手で削除しても、削除できない。
A6:ファイルの中身が空だった。
A7:コピーしたままだったので、ファイルの番号を直し忘れた。
誤 wwOutput1 = "\\ABC001\ABC\直送.txt" *コピーのまま。
正 wwOutput2 = "\\ABC001\ABC\直送.txt" *wwOutput2が正しい。
Q:実行時エラー'76' パスが見つかりません。
A1:コピー元のフォルダーが消えていた。
Q:実行時エラー'91' オブジェクト変数またはwithブロック変数が設定されていません。
A1:txt氏名 変数がない パンチミス
A2:Recordset記入もれ:Set rs1 = New ADODB.Recordset
A3:Recordsetを2回した:Set rs1 = New ADODB.Recordset
A4:rsの記入誤り:rs2!氏名 ではなく rs1!氏名 であった。
A5:cn1をClose後、rs1.Open "社員", cn1, adOpenStatic, adLockOptimistic を実行した
A6:メインとサブPGが同じcn1で、サブでcn1をCloseした。(Closeを2回行った)
A7:DataEnvironment使用で、Set cna1 = New ADODB.Connection を記入していた
A8:rs1.RecordCountでrs1がOpenされてない、又Closeされた。
A9:CommonDialogでキャンセルした時発生した。
rs1.Closeの場所
−−>キャンセルの時OPENは飛ばしたが、CLOSEは飛ばさなかった CLOSEを迂回する
A10:OPENしていなくて、CLOSEした時、このエラーがでます。
DBのOPEN処理がエラーで飛ばされて、終了処理(CLOSE)を行ったため、このエラーが出た。
A11:Closeを2回実行した。
'終了
rs5a.Close ここで発生
Set rs5a = Nothing
正解:rs5a.Closeが別な場所で実行されていた。
!!ヒント
初期のPGテストでは「終了処理」でこのエラーが出て、PGが終了できなくなる事がありますが、
この時は
WindowsXPの場合、「Ctrl+ALT+DEL」-->タスクマネージャ-->選択-->タスクの終了でVBを終了できます。
Q:実行時エラー'94' NULLの使い方が不正です。
A1:WK=AAA で AAAがNullの時 でる
A2:RDBの項目にNullが入っていた-->NullのときはSPACE(1)を転送する。
DB登録の初期値は""(NULL)では無く、文字はSPACE(1)、数字は0、DATEはEmptyを転送する。
Q:実行時エラー'339' コンポーネント'MSDATLST'、またはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。
A1:VBのランタイムが登録されていません。
新しいパソコンの時によく出る
A2:Windows7でVB6を配布した時、よく発生する。
アンインストールして、再インストールしたら、直った。
何故か原因不明 結構、再インストールを数回すれば治ります。
ディストリビューション ウィザードで作成したSETUPを実行する
それでもダメな時は、フリーソフトのランタイムも入れてみる。
○VisualBasic60SP6ランタイムファイル\vb6rtest\setup.exe
○VisualBasic60SP6ランタイムライブラリ\vb6sp6rt4\setup.exe
Windows7でVB6を配布した時、よく発生する。
アンインストールして、再インストールしたら、直った。
A3:ファイルがある時は、再登録を行う
C:\Windows\system32\msdatlst.ocx
現象
Windows7のPCにVB6をインストールした。
管理者権限では正常だが、ユーザー権限で実行するとこのエラーが出た。
対処
スタート
「プログラムとファイルの検索」の場所に「cmd」
黒いDOS画面になる
>_の位置に以下を入力
●登録の解除
「regsvr32 /u msdatlst.ocx」
表示:「msdatlst.ocx.ocx」のDllUnregisterServerは成功しました。
●再登録
「regsvr32 msdatlst.ocx」
表示:「msdatlst.ocx」のDllRegisterServerは成功しました。
●「exit」で抜ける
PC再立ち上げ
ユーザー権限で実行
Q:実行時エラー'364' 既にアンロードされています。
A1:メインからサブの実行でサブでCloseしていた。
A2:このメッセージは他の処理で異常終了したため、ここに飛んできてエラーが出ている。
DBにNullが入っていたためエラーになり、他に飛んでこのメッセージになった。
Q:実行時エラー'380' プロパティの値が不正です。
A1:
' コンボボックスを初期化
With Combo1
.ListIndex = 0 ここで発生
End With
正常に動いているコンボボックスとプロパティは同じでもエラー発生した??
ツールボックスから貼り付けたコンボボックスはエラーになる。??
正常に動いているコンボボックスをコピーしたら正常に動く
これは「原因不明」で調査中
A2:日付に範囲外のデータを転送した。
dtp発注日 = "0000/00/00" これはエラー
dtp発注日 = "9999/99/99" これはエラー
dtp発注日 = "1111/01/01" これはエラー
dtp発注日 = "9999/01/01" これはOK
Q:実行時エラー'545' フィールドまたはデータメンバーに連結できません'入社日'
A1:DBが0件の時発生-->そのまま
Q:実行時エラー'713' 次のクラスは登録されていません。
以下のファイルをインストールして下さい MSSTDFMT.DLL
現象
Windows7のPCにVB6をインストールした。
管理者権限では正常だが、ユーザー権限で実行するとこのエラーが出た。
対処
スタート
「プログラムとファイルの検索」の場所に
「regsvr32 C:\Windows\system32\MSSTDFMT.DLL」
表示:"success" 成功
PC再立ち上げ
ユーザー権限で実行
Q:実行時エラー'2455' 指定した式にVisibleプロパティに
対する正しくない参照が含まれます。
現象
Windows7のPCにVB6をインストールした。
対処
Access2010を一度も起動していなかった
Access2010を起動して、再度処理したらこのエラーは出なくなった
Q:実行時エラー'3001' 引数が間違った型、または許容範囲外であるか、競合しています。
A1:Findで複数条件を指定した-->Findは使用せずFilterを使用する。
rs1.Filter = "([家族数] = '0') or ([性別区分] = '1') or (エラー区分 = '4')"
A2:A AND B AND (C OR D)はダメ
正 (A AND B AND C)OR(A AND B AND D)とする
A3:変数は'" & 変数 & "' でくくる
rs1.Filter = "[社員番号] = '" & str入力 & "'"
Q:実行時エラー'3021' BOFとEOFのいずれかTRUEになっていか、または現在のレコードが削除されています。
A1:DBが0件の時発生する。-->ifで迂回する
A2:DBが0件でrs1.MoveFirstを実行していた。
If rs1a.EOF = True Or _
rs1a.RecordCount = 0 Then
Else
rs1a.MoveFirst
End If
A3:DBが0件で、lbl名称=rs1![氏名]を行ったため発生
A4:誤rs3.AddNew-->正rs1.AddNew レコードセットのパンチミス
A5:Filterの次にFirstを実行したが、Filterで0件になってしまった。
A6:Filterの抽出キーが間違っていた。
Q:実行時エラー'3051' ファイル"\xxx\yyy.mdb"を開くことが出来ませんでした
A1:ほかのユーザーによって排他的に開かれている。
A2:データを見る権限がありません−−−>DBが読取専用になっている。
Q:実行時エラー'3078'
入力テーブルまたはクエリ'車種'が見当たりませんでした。
そのテーブルやクエリが存在していること、または名前が正しいことを確認して下さい。
STsql = "[車種]![出荷日] between datevalue('" & dtp出荷日開始.Value & "') and datevalue('" & dtp出荷日終了.Value & "')"
objAccess.DoCmd.OpenReport "R01配車表", acViewNormal, "Q01配車表", STsql '印刷
A1: テーブルが作成してなかった
A2: リンクテーブルを削除した
A3: テーブル名が違っていた
Q:実行時エラー'3201' VALUEメソッドは失敗しました。'Field'オブジェクト
A1:rs1![社員]が読まれていない。
A2:RowColChangeからSelChangeに変更。
Q:実行時エラー'3219' このコンテキストで操作は許可されていません
A1:ドロップダウンが表示されたままでClose終了した
A2:DatagridでクリックしたままCloseした-->Close時に他の行にいかせる。
Q:実行時エラー'3251' オブジェクトまたはプロバイダは要求された操作を実行できません。
A1:更新PGで読み取り専用になっていた。
A2:ロックの種類:1-読み取り専用---->3-オプティミスティック
Q:実行時エラー'3265' 要求された名前または序数に対応する項目がコレクションで見つかりません。
A1:DB項目と名前が違う
A2:DB項目のパンチミス
A3:rs1!AAAでrs1がsetされていない
A4:フィルターで使用した項目がなかった
A5:不明な時は、削除して再入力すると直る時がある。
A6:DBが古く、項目追加したDBではなかった。
A7:[発注日]がSELECT文に入っていなかった。
Set rs4a = New ADODB.Recordset
wwSQL4 = "SELECT [受注].[発注NO],[受注].[商品コード],[受注].[旧商品コード] FROM [受注]" & _
" WHERE [受注].[完了区分] = '0'" & _
" ORDER BY [受注].[商品コード]"
rs4a.Open wwSQL4, cna1, adOpenStatic, adLockOptimistic
lbl発注日 = rs4a![発注日] ←ここでエラーが発生した。
[発注日]がSELECT文に入っていなかった
正解
メモリー節訳時
wwSQL4 = "SELECT [受注].[発注NO],[受注].[発注日],[受注].[商品コード],[受注].[旧商品コード] FROM [受注]" & _
又は
まあ、普通は以下で良い
wwSQL4 = "SELECT [受注].* FROM [受注]" & _
Q:実行時エラー'35773' MinDateプロパティとMaxDateプロパティの範囲にない日付が指定されました。
A1:日付に範囲外のデータを転送した。
dtp発注日 = "1111/01/01" これはエラー
dtp発注日 = "9999/01/01" これはOK
*日付の初期値*
dtp発注日開始 = "2000/01/01" 最低日を入れる
dtp発注日終了 = "9999/01/01" 最高日を入れる
dtp発注日 = Format(Date,"yyyy/mm/dd") 処理日を入れる
Q:実行時エラー'3704' オブシエクトが閉じている場合は操作は許可されません
A1:ACCESSのデザインが開いていた
A2:別フォームでCloseしていた
A3:rs1.openをしていなかった
'rs1a.Open "出荷", cna1, adOpenStatic, adLockReadOnly 注釈になっていた。
A4:Execute文の時、rs1a.Closeは不要だった
Set rs1a = New ADODB.Recordset
strSQL1 = "UPDATE 出荷 SET 区分 = '1' Where (出荷.区分 <> '1')"
cna1.Execute strSQL1
'rs1a.Close <---不要
Set rs1a = Nothing
Q:実行時エラー'3705' オブシエクトがひらいている場合は操作は許可されません
A1:>CLOSEしていなくてOPENした時発生する
A2:前PGが×で閉じて、CLOSEしていない。
A3:OPENしてあるのにOPENした
A4:CLOSEもしくは Set rs1 = New ADODB.Recordset これを入れたら直った
Q:実行時エラー'3709' 閉じている、または無効な接続を参照するオブジェクトの操作は許可されていません。
A1:cn1が前処理でCLOSEされている
cn1がOpenされていない時に発生する
A2:ロジックの記入もれ
cna1.Close ここで発生した
Set cna1 = Nothing
正解 以下のロジックがもれていた。
Set cna1 = New ADODB.Connection
cna1.ConnectionString = DBSOURCE
cna1.Open
Q:実行時エラー'6145' 列のインデックスが不正です。
A1:Colが1つしかないのに、Colを3つ入れた。
Q:実行時エラー'6148' 不正な行番号です。。
A1:DataGridの最後の行に+1した時発生した。
最後の行の時は+1しなくて、先頭行にした。
A2:データが0件の時、DataGrid1.Row=0をした−−>0件の時、処理を迂回する。
Q:実行時エラー'6160' データアクセスエラーです。
A1:DBが0件の時発生-->0件チェックを入れる
If rs4a.EOF = True Or _
rs4a.RecordCount = 0 Then
'受注なしの処理
Else
'受注ありの処理
End If
A2:合計の加算で最後にRowColに行ったためエラー-->SelChangeにする
A3:DBが0件で、lbl名称=DataGrid1.Colums(3).Textを行ったため発生
Q:実行時エラー'7005' 行セットが使用できません。
A1:DataGrid1でBmark=DataGrid1.BookMark ??不明
Q:実行時エラー'7008' 現在の行は使用できません。
A1:DataGrid1.Colums(9).text="AAA"
Q:実行時エラー'7009' 行が見つかりません。
A1:DataGridで行を選択していない
Q:実行時エラー'7866' Q:実行時エラー'7866' データベースファイルがないか、他のユーザーが排他モードで開いているため、このデータベースを開くことができません。
A1:
A現象
EXEとDBはDドライブだったがEXEのみサーバーに移行した時発生した。
Dドライブの時は正常に動いていたが、サーバーでは別の世界になりChDirがきかなかった。
エラー前
D:\abc\aaa.exe
Public Const CDBSSS = "\bbb.mdb"
ChDir "d:\abc"
objAccess.OpenCurrentDatabase CurDir & CDBSSS
EXEの場所を変更したらエラーになった
aaa.exeをサーバー\\DDD001\aaa.exeに変更した。
対策
ChDirではなく直接指定にした。
Public Const CDBSSS = "d:\abc\bbb.mdb"
objAccess.OpenCurrentDatabase CDBSSS
A2:
B現象
標準配車表の出力で自分のパソコンでは正常に出力するが、ユーザーのパソコンから出力するとこのエラーメッセージになる。
ACCESSのクエリー、リストをVBから出力している。
対策
Q:Windows7でVB6を実行した時の、実行エラーの対応方法
A1:再インストールを繰り返す
原因不明だが、アンインストールして、再インストールを2〜3回繰り返すと直る時がある。
A2:フリーソフトのランタイムも処理する。
○VisualBasic60SP6ランタイムファイル\vb6rtest\setup.exe
○VisualBasic60SP6ランタイムライブラリ\vb6sp6rt4\setup.exe
A3:exeファイルをXP互換モードにする。
管理者権限で処理する。
zaiko.exe右 プロパティ 「互換性」タブ
「すべてのユーザーの設定を変更」
互換モードでこのプログラムを実行する。OK OK
*ほとんどこれで解消されるが、
欠点は、互換モードはexeファイルをコピーするとクリヤーされる。
従って、サーバーにexeファイルは置けない
A4:ディストリビューションの作成でプロパティに互換設定をする。
管理人はまだ確認していませんが、このような方法もあるという事で
記入しました。
----------------------------
スタート
すべてのプログラム
Microsoft Visual Studio6.0
Microsoft Visual Studio6.0 ツール
ディストリビューション ウィザード 右クリック
プロパティ
互換性
「すべてのユーザーの設定を変更」
■互換モードでこのプログラムを実行する
OK
----------------------------
|
|