PDA

View Full Version : بهترین روش برای جلوگیری از ورو رکوردهای تکراری چیه؟



m_vb1386
پنج شنبه 20 تیر 1387, 08:02 صبح
من از adodc استفاده میکنم

ezamnejad
پنج شنبه 20 تیر 1387, 08:07 صبح
بهترين راه اينه كه توي جدول فيلد را به صورت كليدي تعريف كنيد .

m_vb1386
پنج شنبه 20 تیر 1387, 08:59 صبح
اون موقع با پیغام خطا چکار کنم نمیخواهم پیغام خطا روی صفحه بیاد

ابوذر محمودی
پنج شنبه 20 تیر 1387, 10:05 صبح
اون موقع با پیغام خطا چکار کنم نمیخواهم پیغام خطا روی صفحه بیاد

شما باید از عنصر err استفاده کنید .
برای کنترل خطا باید از کد زیر استفاده کنید .


Private Sub CmdSave_Click()
On Error GoTo lblerror
'code

If Err.Number = 0 Then
MsgBox ("")
End If
End Sub

دوست عزیز وقتی برنامه پیغام خطا می دهد یک شماره خطا نیز به همراه خطا هست که شما شماره خطا را در جلوی دستور شرط بالا به جای 0 قرار بدهید .
در داخل جعبه متن هم هر پیغامی که می خواهید به کاربر نمایش دهید را تایپ کنید .
در این صورت هنگامی که برنامه خطا می دهد ، پیغام شما را به جای خطایی که عرض کردید نمایش می دهد
اگر هم می خواهید برنامه هیچ پیغامی نمایش ندهد از این دستور استفاده کنید .


Private Sub Command1_Click()
On Error Resume Next
End Sub
این دستور باعث می شود که به هنگام خطا ، اجرای برنامه ادامه یابد. و در واقع پیغامی نمایش نمی دهد

m_vb1386
پنج شنبه 20 تیر 1387, 11:16 صبح
اگه میشه این رو ببینید و برام اصلاحش کنید حالا باید دو با کلیک کنم رو کامند باتون تو اضافه بشه

ƒxmahdi
پنج شنبه 20 تیر 1387, 23:05 عصر
نمی دونم دقیقا مشکل چیه ؟ ولی با یکبار کلیک کار می کنه ؟ کد زیر را در Command1 قرار بده. البته روش صحیح این نیست من خودم از روش های دیگری استفاده می کنم که کمی پیچیدتر است . موفق باشی

On Error Resume Next
If Err.Description = "" Then
For i = 1 To 2
Form1.Adodc1.RecordSource = "Select * from table1 "
Set Form1.DataGrid1.DataSource = Adodc1
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("tel") = Text1.Text
Adodc1.Recordset.Update
Form1.Adodc1.Refresh
Text1.SetFocus
Next i
End If

drwatson
جمعه 21 تیر 1387, 20:03 عصر
اگه درست فهمیده باشم دنبال یه همچین کدی بودی
برات اصلاح کردم
مشکلت فقط متد ado.refresh بود

m_vb1386
شنبه 22 تیر 1387, 08:19 صبح
این دو عکس رو ببینید متوجه میشید چی میگم
عکس اولی نشون میده که باید برای رکوردهای تکراری دو بار دکمه کامند رو بزنی تا پیغام ظاهر بشه و همون طور که در عکس بعدی میبینید یک پیغام روی صفحه ظاهر میشه چکار کنم که این پیغام نیاد

m_vb1386
شنبه 22 تیر 1387, 08:26 صبح
نمی دونم دقیقا مشکل چیه ؟ ولی با یکبار کلیک کار می کنه ؟ کد زیر را در Command1 قرار بده. البته روش صحیح این نیست من خودم از روش های دیگری استفاده می کنم که کمی پیچیدتر است . موفق باشی

On Error Resume Next
If Err.Description = "" Then
For i = 1 To 2
Form1.Adodc1.RecordSource = "Select * from table1 "
Set Form1.DataGrid1.DataSource = Adodc1
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("tel") = Text1.Text
Adodc1.Recordset.Update
Form1.Adodc1.Refresh
Text1.SetFocus
Next i
End If

یکم غیر منطقی میشه که یک کار رو دوبار انجام بدم اون روشی که گفتین رو اگه میشه بایکم توضیح بزارین ممنون