- ベストアンサー
VB6(ADO)=>SQLSERVER2000アクセス時のエラーコードの意味?
VB6でADOと使用してSQLServer2000にアクセスしています。 以下のエラーが発生します。 -2147217871(80040031) 日本語のメッセージは別の場所で発生したので不明です。 よく-2147467259(80004005)時間切れになりました。 というメッセージはでますが、それとはコードが異なります。 教えていただきたのは、上のメッセージコードからその意味を知るには どのマニュアル(SQLServer2000のBOOKSOnlineのどの箇所?)をみれば 書いてあるのかということです。 ご存知の方お願いします。
- yuyan1962
- お礼率58% (27/46)
- Visual Basic
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
s_husky です。 BOOKS Online にはエラーコードは掲載されていないと思います。 あくまでも ADO のエラーだと思います。 ですから「OLE DB Programmer's Reference」の「Chapter 16」あたりを参照するしかないようです。 が、多分、Err.Description と大差ないと思います。 *素人ですので、後は、宜しく!
その他の回答 (1)
次は、Accessプロジェクトで使用している関数です。 少し、ヒントが含まれているかも知れません。 VBバージョンを作成してから、それを示せば良いのでしょうが・・・面倒なので! Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String) MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & CnnErrors.Description & Chr$(13) & _ "・Err.Number=" & CnnErrors.Number & Chr$(13) & _ "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _ "・SQL Text=" & strSQL, _ vbExclamation, " ADO関数エラーメッセージ" End Sub Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute Dim isOK As Boolean Dim cnn As ADODB.Connection isOK = True Set cnn = CurrentProject.Connection With cnn .Errors.Clear .BeginTrans .Execute strSQL .CommitTrans End With Exit_CnnExecute: On Error Resume Next cnn.Close Set cnn = Nothing CnnExecute = isOK Exit Function Err_CnnExecute: isOK = False If cnn.Errors.Count > 0 Then ErrMessage cnn.Errors(0), strSQL cnn.RollbackTrans Else MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _ vbExclamation, " 関数エラーメッセージ" End If Resume Exit_CnnExecute End Function
補足
すみません。回答ありがとうございます。 VBのerrオブジェクトのdescriptionには、SQLサーバが返した エラーメッセージ文字列が格納されているのは把握しているのですが、 マニュアルで-2147217871(80040031)などというSQLのエラーコードの意味と対処方法がどこかに書いていないかなという質問です。 (またはMSのWebサイトのどこかに)
関連するQ&A
- VB6でSQLServerへADO接続するとOPENがすごく遅いんです。
お世話になってます。 今、VB6.0で作成したシステム(ADOでACCESS2000に接続)をSQLServerに移行しています。 しかしDBの初回OPEN時に5秒くらいかかってしまいます。 原因を探しているのですが、どうしても見つかりません。 誰かご存知の方がいらっしゃいましたら、ご教示お願いします。 開発環境は以下の通りです。 OS:WindowsXP SP2 開発言語:VB6.0 SP5 データベース:SQLServer2005 ADO:ADO2.5
- ベストアンサー
- SQL Server
- VB6からADOを介してACSESS2000MDBへのアクセスエラー
VB6からADOを使用しACSESS2000MDBにデータを登録すると INSERT 文でエラーになってしまいます。 エラーコード:-2147217833です。 何が原因か分かる方教えて下さい。
- ベストアンサー
- Visual Basic
- VB2005からSQLServer2005への接続
VB2005とSQLServer2005のどちらも製品版をインストールしました。 VB2005よりサーバエクスプローラから接続の追加により自分で作成したテーブルに接続を試みたところ、 以下のようなエラーが発生し接続できません。 (エラー内容)サーバーへの接続を確立しているときにエラーが発生しました。SQL Server2005に接続しているときにこのエラーが発生した場合は、SQL Serverの既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。(provider:共有メモリ プロバイダ,error:40-SQL Serverへの接続を開けませんでした) なにかSQLServer側の設定を変更しないと接続できないのでしょうか? どなたかアドバイスお願いします<(_ _)>
- ベストアンサー
- SQL Server
- VB6.0でSQLServerへ・・・RecordSet生成タイムアウト・・・
VB6.0でSQLServer2000へADOで接続して、RecordSetに結果を入れる際に「時間切れ」になってしまいます。コネクションはちゃんとできていて(connection.stateは1)で、 RecordSet.open(SQL文,connection,adOpenForwardOnly,adLockReadOnly)でしばらく待った後「Err.description」で時間切れと言われてしまいます。connection.ConnectionTimeout = 200にしてても時間切れです・・・(涙) でで、SQLServerのlocalhost端末のAccessからSQLServerにリンクをはって同様のSQL文(普通のSelect文です、Joinも副問い合わせとかもしてないです。)をクエリで実行したところ、結果が返ってくるまで15分くらいかかりました。抽出条件にIndexを張ってないため・・・(事情があってIndexはれないです)こういう場合、どのようにしてVBでRecordSetを取得すればいいのでしょうか?ConnectiontimeoutはrecordSet取得時にも有効ですか?そうだとしたら、connectiontimeoutは好きなだけ大きい値を設定してみてよいのでしょうか?
- ベストアンサー
- Visual Basic
- SQLServerのエラー1069について
Win2000Server+SQLServer2000を利用しています。 昨日まで正常に稼動していたのですが、今日アクセスできないので、SQLServerの状態を見ると停止していました。 SQLServerを開始しようとすると 「ログオンに失敗したため、サービスを開始できませんでした」 「エラー1069 (ログオンに失敗したため、サービスを開始できませんでした)が、MSSQLServerサービスでこのサービス操作を実行中に発生しました」 のようなエラーが出ます。 管理ツールのサービスからSQLSERVERAGENTを選び、アカウントを変更して試しましたが、同じエラーが出ます。何が原因なのでしょうか?
- ベストアンサー
- SQL Server
- ACCESSからSQLServerのデータを取得したい
SQLServerが利用できない環境にデータを持っていくため、以下のようなシステムを考えております。(テーブルのリンクは不可・手動でのデータのエクスポートは不可) 1.ACCESSのフォームに「データベース名」「テーブル名」を入力し、実行ボタン押下 2.ADOでSQLServerに接続 3.指定のテーブルと同じ構造のテーブルをACCESSに作成 4.SQLServerのデータをACCESSにINSERT ここで質問なのですが、ACCESSは自分のデータベースとSQLServerのデータベースに同時に接続できますか? 同時接続した場合のACCESS/SQLServerの書き分けはどのようになるのでしょうか。
- ベストアンサー
- その他(データベース)
- access vb の検索をする命令でエラー
access vb の criteria を使用してデータ検索をする命令の箇所でエラーが出る (テスト用データではエラーが出ない) テストを終え本番切り替え時にエラーが出る。 動作環境はWinxp,winvista、win7 access2003とaccessvbで構築したdb 実行時エラー’3265’もどこを見て原因があるかも不明です (Accessデータベースを検索するためAccessのフォームにある Access vbの、(1)ロジックと、(2)エラー表示の内容) (1)ロジック rs2.Open "講座開始日時テーブル",cx,adOpenKeyset,adLockOptimistic criteria = "講座コード ='”& 講座コード & "'" ’講座コードの属性は string rs2.moveFist rs2.find critera, 0 ’<- この命令のところでテスト用プログラムでは ’エラーがでないのに、本番用プログラムでは ’以下のエラーが出て原因が把握できない状態です Do Until rs2.EoF If rs2.EOF Then 講座番号確認区分 = "エラー" ’エラー表示 GoTo enda Else 講座コード = rs2!講座番号 ’データ検索OK GoTo XXX Endif Loop (2)エラー表示 |ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー |Microsoft Visual Basic | 実行時エラー’3265’ | 要求された名前、または序数に対応する項目がコレクションで見つかりません。 | | | 継続 終了(E) デバッグ(D) ヘルプ(H) |ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
- ベストアンサー
- Visual Basic
- VB6 ADOの参照設定の意味、
VB6.0にて、ADOを使用したアプリケーションを作成しています。 参照設定にてADO2.7を指定しています。 コンパイルしたアプリケーションを、 MDAC2.5が入っている環境で、動かしてみたら動きました。 インストールされているMDACの確認には、Microsoftのツールを使用しました。 下記コードを記述したモジュールを作成し、 Dim adoCon As ADODB.Connection Set adoCon = New ADODB.Connection MsgBox adoCon.version その環境にてバージョンを確認したら 「2.5」と表示されました。 ちなみに、MDAC2.7がインストールされている環境では、「2.7」と表示されました。 ここで質問があるのですが、 参照設定でADO2.7を指定した場合、 動作先の環境に入っている最新のADOのバージョンが使われると考えて良いのでしょうか? たとえば、動作先の環境にADO2.1が入っていたら、参照設定のバージョンに関わらず、それで動作する・・・ が、バージョンに依存するメソッドを実行するとエラーになってしまうとか。 Createobjectで生成するのと、かわらないのでしょうか? よろしくお願いいたします。
- 締切済み
- Visual Basic
- ネットワーク上のDBにアクセス時にエラー
VB6.0 + Access2003を使用しています。 ネットワーク上にMDBがあり、複数の端末からアクセスしています。 MDBにはADO接続で、共有モードで開いています。 複数の端末から同時にOpenし、同じテーブルにアクセス(Select文実行) した場合に、 エラー番号:-2147467259 内容:Microsoft JET Database Engineでエラーが発生しました。 データベース"を開くことができません。アプリケーションで認識できない データベースであるか、またはファイルが破損しています というエラーが発生します。(ファイルは破損していません) 3、4台で同時アクセスを何度が試していますが、 毎回このエラーが出ることはなく、エラーが出る原因がわかりません。 原因、対処方法などわかりましたら教えてください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- VB6+SQLServer2005 DBの新規作成
VB6+ADOを使用してSQLサーバーの新規データベースファイルを 作成しようと思っております。下記のようなプログラムを つくりましたがうまく動きません。お知恵を貸してください。 catDB.Createのところで 「インターフェイスがサポートされていません」 とエラーが出ます。 いままでAccess2000で動かしていたものをSQL2005に移設している ところです。 SQLサーバーは、はじめて触ります '--------------------------------------------- 'Const ADO_VERSION ="Microsoft.Jet.OLEDB.4.0;" Const ADO_VERSION ="SQLOLEDB;" '--------------------------------------------- Set catDB = New ADOX.Catalog catDB.Create "Provider=" ADO_VERSION & _ "Data Source=" & "d:\test"
- ベストアンサー
- Visual Basic
お礼
ありがとうございます。調べてみます。