PDA

View Full Version : رکورد تکراری را چه طور خطا یابی کنم؟ کمک error handler ها



archi
چهارشنبه 03 دی 1382, 15:52 عصر
من می خواهم خطای مربوط به وارد کردن یک رکورد که در فیلد primary keyمقداری تکراری دارد را با on error goto ....به تله بیندازم شی errاین کار را به درستی انجام نمی دهد آیا باید با کلکسیون errorsمتعلق به adoاین کار رو انجام بدم؟

Developer Programmer
چهارشنبه 03 دی 1382, 19:40 عصر
چرا ایندکس نمی ذاری ؟ No Dupplicate
اینکه راحتتره
والا باید جستجو کنی همین عزیز بابا

Farhad.B.S
چهارشنبه 03 دی 1382, 19:53 عصر
بله ، این خطاها توسط ADO اداره میشوند ، برای سفارشی کردن این خطاها به رویداد Error کلاس ADO مراجعه کنید :



Private Sub Adodc1_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
fCancelDisplay = False
MsgBox "ERROR : " & Description, vbInformation
End Sub


برای جلوگیری از نشون داده شدن خطا توسط ADO میتونید fCancelDisplay رو False کنید.

h_rezaei
پنج شنبه 04 دی 1382, 10:43 صبح
dim er as adodb.error
....
.....
....
for each er in errors
if er.number=....then
next er

شی error متعلق به کلکسیون errors است و در صورت بروز خطا در لایه ADO با کدی شبیه کد فوق می توانی آن خطا را trap کنی.
البته من حس می کنم خطای شما به provider بر میگردد. description خطایی را که گفتید بنویسید.

archi
چهارشنبه 10 دی 1382, 12:53 عصر
بازم نشد تورو خدا کمک کنید :cry:
ببینید من یه فیلد primary key دارم که وقتی کاربر توش مقدار تکراری میده طبیعتا یک پیغام خطا دریافت میکنه. می خوام این خطا رو از داخل کد کنترل کنم

الهام تفریشی
چهارشنبه 10 دی 1382, 14:48 عصر
<span dir=ltr>
Private Sub CSave_Click()
On Error GoTo a
Set rst = New ADODB.recordset
rst.Open "insert into ttree ( id , name) values (" &amp; NUID &amp; ", '" &amp; stName &amp; "") ", dbconn
If Err.Number = -2147467259 Then MsgBox "رکورى تکراری هست"

end sub</span>
اینو من امتحانش کردم وجواب داد باز امتحان کن اگه جواب نداد بهم بگو

h_rezaei
چهارشنبه 10 دی 1382, 17:10 عصر
iهمونطور که خودت هم فهمیدی این error در حد prvioder نیست و بنابراین در کلکسیون errors اثری ندارندهمانگونه که خانم تفریشی نوشته باید با آبجکت Err خود VB این error را هندل کنی error هایی که با کد 36 یا 27شروع میشند معمولا در ADO Layer هستن (این نکته کنکوری من درآوردیه)