PDA

View Full Version : پیدا کردن رکورد تکراری



evil boy
یک شنبه 27 شهریور 1390, 14:53 عصر
سلام
2 تا سوال داشتم
اول اینکه چطوری میتونم یک رکورد تکراری رو توی دیتابیس پیدا کنم؟
و دوم اینکه چطوری میتونم توی فرم یک متن چشمک زن داشته باشم؟
من با data project به دیتا بیس وصل شدم
ممنون

farboodj1375
یک شنبه 27 شهریور 1390, 15:15 عصر
سلام.
سوال 1 :

اگه منظورتون اینه که مثلا یک رکورد دارین و میخواین ببینین آیا رکورد دیگه ای هم با این مشخصات وجود داره یا نه که میتونین تو بانکتون مشخصات رکورد مورد نظرتون رو جستجو کنین و اگه موارد پیدا شده بیشتر از یکی بود میفهمین که رکورد تکراری هم وجود داره.



سوال 2 :
برای اینکار یک تایمر به فرمتون اضافه کنین و Intravel اونو به دلخواه تنظیم کنین(بازه زمانی چشمک زدن) . حالا تو روال کدنویسی اون تایمر بنویسین:


if Label1.Visible=True Then
Label1.Visible=False
else
Label1.Visible=True
End if


Label1 هم همون لیبلی هست که میخواین چشمک بزنه.
در ضمن Intravel تایمر از توی Propertis تنظیم میشه(یا با کدنویسی) و پیشنهاد من برای کار شما عدد 700 هست.

موفق باشید./

evil boy
یک شنبه 27 شهریور 1390, 15:21 عصر
میشه در مورد سوال اول بیشتر توضیح بدید، من یخورده تازه کارم
من یک فیلد مثلا به نام cod توی دیتا بیس دارم که primery key هست، توی فرم میخوام زمانی که کد رو وارد میکنم اگر تکراری بود پیغام بده. الان وقتی کد تکراری میزنم error میده
ممنون

f_pakzad
یک شنبه 27 شهریور 1390, 18:44 عصر
کوئری زیر را بنویسید

"SELECT count(id) FROM table1 WHERE id ='" +
1 + "'";
با فرض اینکه نام جدول شما table1 و نام فیلدی که کد اصلی است id باشد. و منظور از عدد ۱ هم کد اصلی رکورد جاری است.
با اجرای دستور زیر تعداد رکوردهای که شامل این خصوصیات هستند برگردانده میشوند و اگر این مقدار مثبت بود به این معناست که رکوردی با این کد وجود دارد
Object maxid = int.Parse(adcRepeat.ExecuteScalar().ToString());

returnx
یک شنبه 27 شهریور 1390, 19:23 عصر
میشه در مورد سوال اول بیشتر توضیح بدید، من یخورده تازه کارم
من یک فیلد مثلا به نام cod توی دیتا بیس دارم که primery key هست، توی فرم میخوام زمانی که کد رو وارد میکنم اگر تکراری بود پیغام بده. الان وقتی کد تکراری میزنم error میده
ممنون

این خطایی که میده ، همون چیزیه که شما نیاز دارید ، یعنی به شما میگه که شما دارید یک مقدار تکراری وارد می کنید ، اما یک موضوعی هست در توسعه نرم افزار که میگه ، در صورتی که برنامه شما دچار خطایی شد چه خطایی که انتظار داشتید چه خطایی که انتظارش نداشتید ، نباید برنام شما بسته بشه ، چون اطلاعات کاربر ممکنه از بین بره پس شما باید خطا را مدیرت کنید برای مدیریت خطا هم در Vb6 با دستور On Error Goto میتونید اینکار رو انجام بدید و فقط کافیه یک label به دستور On Error بدید تا بره اونجا و کد های مورد نیاز رو اجرا کنه یعنی به این شکل:
به طور مثال:


On Error GoTo error:
Image1.Picture = LoadPicture(App.Path & "\no.bmp")
email_cheker = True
Adodc1.Recordset.AddNew
' response = MsgBox("Çíãíá æÇÑÏ ÔÏå ãÚÊÈÑ äíÓÊ¡ ÔãÇ ÈÇíÏ í˜ Çíãíá ãÚÊÈÑ æÇÑÏ ˜äíÏ¡áØÝÇ ÏæÈÇÑå ÊáÇÔ ˜äíÏ", vbOKOnly + vbExclamation, "ÇÚÊÈÇÑ ÓäÌí")
error:
err_hdl = Err.Number
If err_hdl = -2147467259 Then
err_msg = MsgBox("ÔãÇÑå ÏÇäÔÌæíí íÇ ˜Ï ãáí ʘÑÇÑí ãí ÈÇÔÏ¡ ÔãÇÑå ÏÇäÔÌæíí æ ˜Ï ãáí ÈÇíÏ ãäÍÕÑ Èå ÝÑÏ ÈÇÔÏ¡áØÝÇ ÏæÈÇÑå ÊáÇÔ ˜äíÏ.", vbOKOnly + vbExclamation, "ÎØÇ ÏÑ ËÈÊ Ñ˜æÑÏ ÌÏíÏ")
ElseIf err_hdl = -2147217842 Then
err_msg = MsgBox("ÝíáÏ åÇ Èå ÏÑÓÊí Ñ äÔÏå ÇäÏ ¡ Çíä ÎØÇ ãí ÊæÇäÏ ÈÎÇØÑ ÇÔÊÈÇå ÏÑ äæÚ ÇØáÇÚÇÊ æÇÑÏ ÔÏå ÏÑ ÝíáÏ ãÑÈæØå ÈÇÔÏ¡áØÝÇ ÏæÈÇÑå ÊáÇÔ ˜äíÏ", vbOKOnly + vbExclamation, "ÎØÇ ÏÑ ËÈÊ")
End If
در کد بالا زمانی که یک رکورد جدید اظافی میشه ، اگر شماره دانشجویی یا کد ملی که فیلی های primery ما هستند تکراری باشند دچار خطای -2147467259 میشیم و ما شماره ی خطا رو از شی Err میگیریم ، بعد میام چک میکنیم اگر شماره خطا با خطای پیش بینی شده ی ما یکی بود اون موقع باید با یک پیام به کاربر اطلاع بدیم که شما رکورد تکراری وارد کرده اید...

evil boy
یک شنبه 03 مهر 1390, 10:48 صبح
من هنوز نفهمیدم باید چیکار کنم
من با DataEnvironment کار میکنم، ممنون میشم بیشتر توضیح بدید
یک مشکل دیگه هم دارم
من توی یکی از فرمام میخوام هر شماره فقط یک بار اطلاعاتش ثبت بشه و اگر طرف خواست دوباره اطلاعات رو وارد کنه اطلاعات قبلی آپدیت بشه
ممنون

akbarg64
یک شنبه 03 مهر 1390, 12:11 عصر
سلام.اینجوری هم میشه.توی رویداد چنچ تکست باکسی که مربوط به کد هست این رو بنویس.
If Text1.Text <> "" Then
Adodc1.RecordSource = "Select *from Student where code='" & Text1.Text & "'"
Adodc1.Refresh
End If
خوب اینجوری توی جدول student وفیلد code دنبال اون کدی که توی تکست باکس 1 وارد کردی میگرده.خوب حالا میمونه هشدار.توی کامندی که قراره اطلاعات رو ثبت کنه این رو بنویس
If Adodc1.Recordset.RecordCount > 0 Then
Call MsgBox("Çã˜Çä ËÈÊ ØáÇÚÇÊ Ê˜ÑÇÑí æÌæÏ äÏÇÑÏ", vbExclamation, "ÎØÇ")
Exit Sub
End If
خوب این هم هشدار میده که قبلا یه ریکورد ثبت شده و دیگه با این مشخصات ریکورد دیگری ثبت نمیشه.
موفق باشید

evil boy
یک شنبه 03 مهر 1390, 17:19 عصر
ممنون دوست عزیز ولی من اصلا با Ado کار نکردم