View Full Version : سوال: ذخیره نکردن داده ی تکراری
rojg@r
دوشنبه 24 فروردین 1394, 10:41 صبح
با سلام
من تو برنامم از Ado + DataGrid + Access برای ثبت و بازیابی اطلاعات استفاده کردم.
داده ها رو ثبت و بازیابی می کنم. سرچ هم می کنم ولی یکی از داده هامو با همان عنوان (اسمشون مثل همند) با دو بار و یا سه بار و یا چند بار میخوام ثبت کنم.اینجا دیگه مشکل پیش میاد
مسیجی مبنی بر ثبت داده نشونم میده ولی به دیتا بیس میرم ثبت نشده، مسلما اگه ثبت نباشه بازیابی هم نمیکنه و داده رو هم نشونم نمی ده.
یک سوال دیگه هم خدمتتون عرض کنم که :
میشه که داده ای اسمش عوض نشه (واسه همین پروزه میگم) اما مرتبط با همون اسم (برای مثال: نام محصول - مقدار خرید - تاریخ خرید - ... )
مثلا تو این برنامه، نام محصول یکیه یعنی اسم محصولم عوض نشه اما تو یک هفته و یا تو یک ماه (یعنی تاریخ خرید منظورمه) چند بار خرید شده و یا به چه مقداری (تعداد خرید) خرید شده رو نشونم بده
می خواستم بپرسم میشه نام محصول همون بمونه اما دیتا گرید با یک فلش تو کلومن تاریخ خرید باز بشه و تعداد روزهای خرید محصول رو به من نشون بده اگه 3 بار خرید صورت گرفته باشه 3 بار نشون بده. ویا تو قسمت پراپرتیس دیتا گرید چنین خاصیتی داره یا نه؟
اگه با دیتا گرید نشه این کار و کرد با چه Ocx دیگه ای میشه؟
در غیر این صورت اگه ممکنه سورس و یا کدش رو لطف کنید ممنون میشم.
به درود
isaac23
دوشنبه 24 فروردین 1394, 11:28 صبح
در مورد داده تکراری از این کد استفاده کن
یه TextBox قرار بده و از این کد استفاده کن
Adodc1.RecordSource = "SELECT * FROM Nbank WHERE Nameb='" & Trim(Text1) & "'"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
MsgBox (".داده تکرای "), vbInformation
Exit Sub
Else
در مورد سوال دوم هم اره میشه از SQL استفاده کن به هر شکلی و نحوی که دوست داری میتونی فیلتر کنی در ضمن نیازی به عوض کردن اسم نداره اونجوری بد میشه بخواد ویرایش کنه اپدیت کنه
کلا قشنگ نیست
rojg@r
دوشنبه 24 فروردین 1394, 14:04 عصر
امتحان کردم اما نشد دوست عزیز.
isaac23
دوشنبه 24 فروردین 1394, 17:17 عصر
میشه دستوری که استفاده کردی بذاری تا برات اصلاحش کنم ؟
rojg@r
دوشنبه 24 فروردین 1394, 17:46 عصر
Private Sub command1_Click()
On Error Resume Next
If Len(text1.Text) = 0 Then
Call MsgBox("......... .........", vbExclamation, " ... ... ")
text1.SetFocus
Exit Sub
End If
If Len(Text2.Text) = 0 Then
Call MsgBox("............. .....................", vbExclamation, " ... ... ")
Text2.SetFocus
Exit Sub
End If
If Len(Text3.Text) = 0 Then
Call MsgBox("..............................", vbExclamation, " ... ... ")
Text3.SetFocus
Exit Sub
End If
If Len(Text4.Text) = 0 Then
Call MsgBox(".................................", vbExclamation, " ... ... ")
Text4.SetFocus
Exit Sub
End If
If Len(Text5.Text) = 0 Then
Call MsgBox("..................................", vbExclamation, " ... ... ")
Text5.SetFocus
Exit Sub
End If
Adodc4.Recordset.AddNew
Adodc4.Recordset.Fields!Name = Trim(Text1.Text)
Adodc4.Recordset.Fields!Nomberone = Trim(Text2.Text)
Adodc4.Recordset.Fields!Nombertwo = Trim(text3.Text)
Adodc4.Recordset.Fields!Date1 = Trim(date1.Value)
Adodc4.Recordset.Fields!Name2 = Trim(text4.Text)
Adodc4.Recordset.Fields!Nomberthree = Trim(text5.Text)
Adodc4.Recordset.Fields!Date2 = Trim(date2.Value)
Adodc4.Recordset.Update
Adodc4.Refresh
MsgBox Text1.Text & ", success.", vbInformation, " ... ........... ... "
Form1.Adodc1.Recordset.Update
Form1.Adodc3.Recordset.Update
Form1.Adodc1.Refresh
Form1.Adodc3.Refresh
Form1.DataGrid1.Refresh
Form1.DataGrid2.Refresh
Text1.SetFocus
isaac23
دوشنبه 24 فروردین 1394, 21:11 عصر
ببین دوست عزیز یه Adodc5 دیگه به فرم اضافه کن و برابر باشه با Adodc4 یعنی دستور اتصالش یکی باشه و اینجوری بنویس در صورتی که نام جدول من Name 1 هستش ولی باید خودت تغییر بدی
Adodc5.RecordSource = "SELECT * FROM Name1 WHERE Name='" & Trim(Text1) & "'"
Adodc5.Refresh
If Adodc5.Recordset.RecordCount > 0 Then
MsgBox (".داده تکرای "), vbInformation
Exit Sub
end if
و این دستور رو قبل از اضافه شدن به جدول قرار بدی
اگه باز هم متوجه نشدی سورسش رو قرار بده تا برات اصلاح کنم و براتون ارسال کنم
rojg@r
سه شنبه 25 فروردین 1394, 10:25 صبح
این هم سورسشه
لطفا یه چشمی بهش بندازید واسم خیلی ضروریه.
یه سوالی هم داشتم به جای دیتا گرید ویژوال از یک دیتا گرید که تو خودش یه چیزی شبیه کمبو باکس داشته باشه و کاربر به جای تکرار اسم از اون کمبو بتونه یک داده ی جدید وارد کنه و هنگامی که خواست, بازخوانیش بکنه؟ اگه داشتید لطفا اونو هم اضافه کنید. با این حالش هم یک اسم تکراری رو قبول نمیکنه. به درود...
130315
rojg@r
سه شنبه 25 فروردین 1394, 20:35 عصر
این ضمیمه شه دیگه. یکی کمک نمی کنه ؟ خیلی بهش احتیاج دارم.
isaac23
چهارشنبه 26 فروردین 1394, 14:24 عصر
دوست عزیز شما اومدید فیلد نام جدول رو به عنوان کلید اصلی تعریف کردید و دلیلش بخاطر اینه شما اون رو بردار بعدش میتونی فیلد های مشابه به هم وارد کنی با کلید اصلی رو به یکی از فیلد های دیگه تغییر بده ...
در ضمن کد های قبلی که دادم بود این بود که میومد اگر داده قبلا ثبت شده بود بهت پیغام داده تکراری میداد و مشکل شما برعکس بود...
فقط کلید اصلی رو از فیلد Name بردار مشکل حل میشه موفق باشید...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.