PDA

View Full Version : حذف رکوردتکراری



reza850101
چهارشنبه 19 مهر 1385, 13:21 عصر
باسلام
شاید باید این سوال را از بخش اس کول کرد اما چون تابااس کول کارنکردم ترجیح دادم اینجا مطرح کنم جدولی داریم که شامل کد و تاریخ است میخواهم بااین شرط که رکوردهایی که کد و تاریخشان تکراری است بجز یکی ازآنها بقیه راحذف کند - ناگفته نماند دربخش کوئری جدول راآوردم اما کد حذف رانمیدانم تا ران کنم اگر یکی ازدوستان زحمت بکشه ممنون میشم

reza850101
پنج شنبه 20 مهر 1385, 12:43 عصر
حداقل این ارور رابرطرف کنید
http://barnamenevis.org/forum/showthread.php?t=8943

mohammadgij
پنج شنبه 20 مهر 1385, 13:15 عصر
فایل پیوست دارای یک Query برای پیدا کردن رکوردهای تکراری هستش . رکوردی تکراری محسوب میشه که هم نام و هم فامیلش تکراری باشه ,و Query دوم هم بر اساس تاریخ و یه کد دیگه هستش

حال اگر میخوای که این دستور در SQL بنویسی و جدولت توی SQL هستش باز هم از همون دستور می تونی استفاده کنی




'تاریخ
SELECT tblList.EXPDATE, tblList.UNITCODE, tblList.nvcNam
FROM tblList
WHERE (((tblList.EXPDATE) In (SELECT [EXPDATE] FROM [tblList] As Tmp GROUP BY [EXPDATE],[UNITCODE] HAVING Count(*)>1 And [UNITCODE] = [tblList].[UNITCODE])))
ORDER BY tblList.EXPDATE, tblList.UNITCODE







'نام و نام خانوادگی
SELECT tblName.txtName, tblName.txtFamily, tblName.intAutoCode, tblName.txtAddress
FROM tblName
WHERE (((tblName.txtName) In (SELECT [txtName] FROM [tblName] As Tmp GROUP BY [txtName],[txtFamily] HAVING Count(*)>1 And [txtFamily] = [tblName].[txtFamily])))
ORDER BY tblName.txtName, tblName.txtFamily

reza850101
شنبه 22 مهر 1385, 09:04 صبح
باتشکر از شما اول اینکه این کد در اس کیو سرور2000 کارایی دارد دوم اینکه دستورو کد حذف رکود تکراری بیشتر مد نظر است که ازهررکورد تکراری یکی باقی بماند بقیه حذف شود خواهشا کد این قسمت هم زحمت بکشیدکه باران کردن کوئری حذف عمل شود قبلا اززحمات شما تشکرمیکنم
--------------------
باتشکر از شما اول اینکه این کد در اس کیو سرور2000 کارایی دارد دوم اینکه دستورو کد حذف رکود تکراری بیشتر مد نظر است که ازهررکورد تکراری یکی باقی بماند بقیه حذف شود خواهشا کد این قسمت هم زحمت بکشیدکه باران کردن کوئری حذف عمل شود قبلا اززحمات شما تشکرمیکنم

mohammadgij
شنبه 22 مهر 1385, 10:23 صبح
این کد در اس کیو سرور2000 کارایی دارد

به هیچ وجه، این نظر درس نیست و این دستور توی خود اکسس بوسیله Duplicate Query ساخته شده

reza850101
سه شنبه 25 مهر 1385, 11:45 صبح
منظورشمااین است که این کد جستجو رکورد تکراری همراه باکد حذف میباشد؟

moustafa
چهارشنبه 26 مهر 1385, 22:09 عصر
ابتدا یه کپی بدون اطلاعات از جدولتون بگیرید وبه ان یه فیلد اضافه کنید نوع ان تکست و خاصیت اندیکس یکانی را برای ان تنظیم کنید
یه کوئری الحاقی بسازید که اطلاعات جدول اصلی را به جدول کپی شده الصاق کند به فیلد اندیکس یگانی
ترکیب تمام فیلدها را به این شکل

f1 &f2&.....&fn
حال یه کوئری حذفی بسازید که اطلاعات جدول اصلی را حذف وبا کوئری الحاقی دیگر اطلاعات جدول کپی شده را به جدول اصلی اپند کنید
تمام کوئری ها را با دستورات وی بی ا نیز می توان نوشته
برای کم کردن حجم فایل می تونید اطلاعات جدول کپی را حذف کنید یه جدول کپی را در یه فایل دیگه ایجاد کنید

در نمونه برنامه ارسالی اطلاعات تکراری وارد کنید و دکمه را کلیک کنید اطلاعات تکراری حذف میشوند


Private Sub Command6_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "t1 to t2", acViewNormal, acEdit
DoCmd.OpenQuery "delt1", acViewNormal, acEdit
DoCmd.OpenQuery "t2 to t1", acViewNormal, acEdit

DoCmd.Requery

End Sub

reza850101
شنبه 29 مهر 1385, 13:29 عصر
ممنون ار فایل نمونه ات
میشه لطف کنی این کد را اصلاح بفرمایید کدرادر اسکیوسرور نوشته ام اما بجای حذف رکورد تکراری همه رکوردهای راحذف کرده
DELETE PersonnelDossier
SELECT COUNT(*) AS Expr5, C_PersonCode AS Expr1, CommandNo AS Expr2, StartDate AS Expr3, EndDate AS Expr4
FROM PersonnelDossier
GROUP BY C_PersonCode, CommandNo, StartDate, EndDate
HAVING (COUNT(*) > 1)

reza850101
جمعه 05 آبان 1385, 16:31 عصر
با سلام و آرزوی قبولی طاعات شما
امیدوارم باعنایت شما زودتر به ÷اسخ برسم چرا همه رکوردهاحذف میشه ایرادازکچاست

karmand
دوشنبه 08 آبان 1385, 12:58 عصر
برای اینکه از هر رکورد یکی بماند بسیار راحت است
یک کواری از نوع make tableبسازید groupbyرا فعال کنید و فیلد هایی که میخواهید فقط یکی شود را group کنید بقیه را firstانتخاب کن

reza850101
دوشنبه 08 آبان 1385, 14:39 عصر
جناب کارمند بسیارمتشکرم از توجه جنابعالی - همانطوریکه که گفتید عمل شد و به نتیجه رسید فقط چند جاش اشکال دارم - اول اینکه وقتی گروپ را انتخاب میکنم همه فیلدهای انتخابی به طبع آن گروپ میشوند چطوربقیه را فرست انتخاب کنم
دوم اینکه با انتخاب تمام فیلدها ساخت تیبل جدید ارور میدهد چطور میشود تمام فیلدهای تیبل جاری را تیبل جدید داشته باشد

reza850101
پنج شنبه 11 آبان 1385, 08:17 صبح
دوم اینکه با انتخاب تمام فیلدها ساخت تیبل جدید ارور میدهد چطور میشود تمام فیلدهای تیبل جاری را تیبل جدید داشته باشد[/QUOTE]

باسلام مجدد درخصوص مورد دوم اشکال به این ترتیب برطرف شد که یک فیلد تکس وجود داشت که انرا انتخاب نکردم وپس ساخت تیبل بطوردستی اضافه کردم
ولی یک مشکل دیگم دارم اینکه یکی از فیلدها پریمرکی (کلید) است اما درتیبل جدید اجازه ایجادکلید رانمیده واین ارور رامیده اما هریک ار دوستان میتونه کمک کنه


'PersonnelDossier4' table
- Unable to create index 'PK_PersonnelDossier4'.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1. Most significant primary key is '10040903D'.
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors.
[Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.

reza850101
یک شنبه 14 آبان 1385, 15:26 عصر
ظاهرا" فعالیت در این بخش هم بطور چشمگیری کاهش پیدا کرده ازرفقای قدیمی کسی نیست