1. Trang chủ
  2. » Công Nghệ Thông Tin

Xử lý lỗi „3146‟ trong chương trình VB pps

2 221 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 179,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi được người sử dụng thông báo lỗi này, lập trình viên không biết lỗi gì đã xảy ra với các thao tác cơ sở dữ liệu để có cách giải quyết.. Gốc của vấn đề là ở chỗ ODBC trả về một chuỗi

Trang 1

Xử lý lỗi „3146‟ trong chương trình VB

(Post 13/10/2010) Lỗi run-time 3146 (ODBC Call failed) là một thông báo khá “tù mù”, vì vậy nó xuất hiện trong khá nhiều diễn đàn VB Khi được người sử dụng thông báo lỗi này, lập trình viên không biết lỗi gì đã xảy ra với các thao tác cơ sở dữ liệu để có cách giải quyết Gốc của vấn đề là ở chỗ ODBC trả về một chuỗi các lỗi nhưng chương trình chỉ hiển thị lỗi đầu tiên là 3146 "ODBC Call Failed"

Điều đầu tiên mà các lập trình viên thường nghĩ tới là tại sao chương trình không hiển thị được thông báo lỗi cụ thể và cần phải sửa chương trình Mặc dù cách làm rất đơn giản nhưng ít người

để ý (cách làm này đã có từ VB4) Lập trình viên cần duyệt Errors collection để lấy đủ thông tin chi tiết trước khi hiển thị cho người dùng bằng cách thay câu lệnh cụt lủn MsgBox Err.Number

&" " & Err.Description trong phần bẫy lỗi bằng đoạn mã dưới đây:

Dim sError As String

Dim nI As Integer

Dim sTitle As String

sError = ""

' Determine whether or not this is a database error

If DBEngine.Errors.Count > 0 Then

If DBEngine.Errors(DBEngine.Errors.Count-1)._

Number = Err.Number Then

sTitle = "Database Error"

For nI = 0 To DBEngine.Errors.Count - 1

sError = sError & DBEngine.Errors(nI) & vbCrLf

Next

sError = sError & vbCrLf

End If

End If

Trang 2

If sError = "" Then

sTitle = "Error"

' add the error string

sError = sError & Err.description & vbCrLf

End If

MsgBox sError, , sTitle

Lưu ý: nếu truy cập cơ sở dữ liệu bằng RDO, các bạn cần thay DBEngine.Errors trong đoạn mã

trên bằng rdoEngine.rdoErrors

Nhưng sửa chương trình không phải là cách duy nhất và cũng không phải là cách hay nhất trong mọi trường hợp Chỉnh sửa chương trình là cần thiết cho những lần sau, nhưng nếu đang gấp hay không thể gửi ngay chương trình cập nhật cho người dùng, bạn làm thế nào để xác định nguyên nhân lỗi Ngay cả khi không có chương trình nguồn trong tay, bạn vẫn có thể xác định được nguyên nhân thực sự gây lỗi để tìm cách khắc phục

Để làm được điều đó, hãy hướng dẫn người dùng bật tính năng ODBC tracing trên máy khách theo các bước sau:

 Trước tiên gọi Control Panel, mở mục Administrative Tools rồi gọi Data Sources

(ODBC), chuyển sang thẻ Tracing và nhấn vào nút Start Tracing Now (xem hình) Hãy nhớ thư mục chứa tệp log để có thể xem chi tiết lỗi (tất nhiên bạn có thể đổi lại thư mục

đó theo ý mình)

 Sau cùng, khi đã chạy lại ứng dụng để sinh lỗi 3146 và đọc thông tin chi tiết lỗi từ tệp log, bạn đừng quên quay lại ODBC Data Source Administrator để tắt tính năng tracing

Ngày đăng: 23/07/2014, 01:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w