PDA

View Full Version : پيغام قبل از ذخيره شدن يك ركورد تكراري



RezaS_1354
شنبه 20 مهر 1387, 00:09 صبح
سلام
برنامه من به پايگاه داده اكسس متصل است و قبلا براي ثبت نشدن يك ركورد تكراري مثلا فيلد شماره شناسنامه كه نبايد تكراري نوشته شود تو Disign اكسس اون فيلد را براش Index و كليد Unique تعريف ميكردم تا تكرار نشود و در برنامه در Command Update از اين دستور استفاده ميكردم
On Error Goto Err?? Exit Sub تا الي آخر دستور كد
و به محض نوشتن ركورد تكراري توسط كاربر و زدن دكمه آپديت Msgbox بعد از Exit Sub به نمايش در مي آمد مبني بر تكراري بودن ركورد و كار راه انداز بود البته تقريبا
اما ميخواستم ببينم ميشود بجاي استفاده از اين روش امكان دارد از روشي ديگر براي شناختن ركورد تكراري استفاده كرد در درون خود روال Update يا Add نميدانم منظورم را توانستم خوب برسانم يانه مثلا با استفاده ار for يا Do جهت بررسي كل ركورد ها ابتدا و بعد ار False بودن شرط ركورد را ذخيره كند در غير اينصورت پيغام بدهد
بطور مثال



Dim IntS as Long
Dim BlnS As Boolean

For IntS = 0 To Adodc1.Recordset.RecordCount
'
If Text1 = Adodc1.Recordset.Fields("BNumber").Value Then
BlnS = True
Else
BlnS = False
End If
'
Next



با سپاس
رضا

حسین علوی
شنبه 20 مهر 1387, 05:56 صبح
سلام
یک فیلد کلید اصلی ایجاد کن ودر هنگام ذخیره از این دستور استفاده کن


On Error Resume Next
Data1.Recordset.AddNew

If Err.Number = 3426 Then
MsgBox ("tekrari")
Exit Sub
End If

mohsen57
شنبه 20 مهر 1387, 14:12 عصر
واسه من کار نکرد البته من از ADODC استفاده میکنم فکر کنم شماره خطا فرق کنه. اگه میشه شماره رو بهم بدین یا در صورت امکان لیست خطاها رو.

RezaS_1354
شنبه 20 مهر 1387, 14:17 عصر
سلام
یک فیلد کلید اصلی ایجاد کن ودر هنگام ذخیره از این دستور استفاده کن


On Error Resume Next
Data1.Recordset.AddNew

If Err.Number = 3426 Then
MsgBox ("tekrari")
Exit Sub
End If


حسين جان من متوجه نشدم منظورت در اكسس يك فيلد كليد اصلي ايجاد كنم خوب اينكار را قبلا انجام دادم بعد چرا در موقع ذخيره باز از AddNew استفاده كردي و ديگر اينكه شماره Err 3426 براي چيه اگر ممكن هست يك مقدار بيشتز توضيح بده در ضمن من از Adodc استفاده ميكنم تفاوتي نميكنه ممنون

ali_habibi1384
شنبه 20 مهر 1387, 17:21 عصر
یه adodc دیگه بزار روی صفحه برای چک کردن اطلاعات تکراری . بعدش فیلد کلیدت رو فیلتر کن اگه تکراری باشه مشخص میشه.

حسین علوی
شنبه 20 مهر 1387, 22:05 عصر
حسين جان من متوجه نشدم منظورت در اكسس يك فيلد كليد اصلي ايجاد كنم خوب اينكار را قبلا انجام دادم بعد چرا در موقع ذخيره باز از AddNew استفاده كردي و ديگر اينكه شماره Err 3426 براي چيه اگر ممكن هست يك مقدار بيشتز توضيح بده در ضمن من از Adodc استفاده ميكنم تفاوتي نميكنه ممنون

سلام
آره باید در اکسس تعریف کنید
شماره خطا برای Adodc برابر2147467259 (عدد منفی )میباشد

RezaS_1354
شنبه 20 مهر 1387, 22:38 عصر
آقا اين شماره error هموني كه خود وي بي بعد از ذخيره ركورد تكراري ميده با اين جواب نميده خودت يه امتحاني بكن من فكر نميكردم انقدر اين مسئله پيچبيده باشه من يك راه حل ميدونم ولي اصلا استاندارد نيست و خيلي دردسر داره
بهر حال از دوستان مددي با سپاس

RezaS_1354
شنبه 20 مهر 1387, 22:39 عصر
یه adodc دیگه بزار روی صفحه برای چک کردن اطلاعات تکراری . بعدش فیلد کلیدت رو فیلتر کن اگه تکراری باشه مشخص میشه.

چاكر داش علي خودمون
علي جان چه طوري يك مقدار توضيح بده
ممنون

hrj1981
یک شنبه 21 مهر 1387, 07:03 صبح
براي روشي كه دوستمون گفتند : يك Adodc جديد بر روي فرم قرار دهيد و مانند Adodc اصلي مسير بانك اطلاعاتي را برايش تعريف نماييد.حال در رويداد KeyDown تكس باكسي كه مقدار اصلي را بايد وارد كنيد هنگامي كه كليد اينتر را اشاره نموديد براي قسمت سورس كد Adodc دومي با استفاده از دستورات SQL و شرط Where فيلدي كه به عنوان "پريميري كي " است و نبايد تكرار شود را برابر با مقدار تكس باكسي كه مقادير كليد اصلي را وارد مي نماييد قرار دهيد. حال با دستور IF يا Select Case بررسي كنيد كه اگر مقدار Count ، آدودسي دومي برابر 1 بود يعني كليد قبلا در بانك اطلاعاتي وجود داشته و اگر نبود يعني مقدار وارد شده تكراري نيست.

ali_habibi1384
دوشنبه 22 مهر 1387, 20:13 عصر
با شمردن تعداد رکوردهای باقیمانده بعد از فیلتر معلوم میشه . اگه 0 بود یعنی تکراری نیست.


adodc1.recordset.recordcount

hossein_sh2008
شنبه 30 مرداد 1389, 05:23 صبح
یه adodc دیگه بزار روی صفحه برای چک کردن اطلاعات تکراری . بعدش فیلد کلیدت رو فیلتر کن اگه تکراری باشه مشخص میشه.

با سلام
دوستان منم همچين مشكلي دارم توي برنامه ام كه با وي ي نوشتم و بانك اكسس
اگه ميشه راهنمايي كنيد چرا فيلد كليد رو نمي تونم فيلتر كنم پيغام خطا زير رو ميده
filter cannot be opened

RamezanBeik
شنبه 30 مرداد 1389, 09:09 صبح
سلام
شما قبل استفاده از Add می تو نی با کد زیر تست کنی که آیا رکوردی با این مشخصات وجود دارد یا نه!



Rs.MoveFirst
Do While Rs.EOF = False
If Rs.Fields!cod = cod.Text Then
MsgBox " رکورد تکراری است", vbOKOnly + vbMsgBoxRight + vbInformation, "ÎØÇ"
cod.SetFocus


Exit Sub
Else
Rs.MoveNext
End If
Loop


موفق باشی