PDA

View Full Version : سوال: پروژه شاید سخت!!! ردیف گزاری برای افراد مختلف در یک جدول



lorzadehj
یک شنبه 23 مهر 1391, 10:20 صبح
با سلام
اساتید محترم کمک کنند
چگونه می توانم برای هر کسی با id مشخص در یک جدول شماره ردیف مجزا درست کنم
با تشکر فراوان

foo0z0ool
یک شنبه 23 مهر 1391, 16:38 عصر
نمیدونم من اشتباه میکنم یا واقعا اینطوریه
متاسفانه من اصلا درون پروژه شما رو نمیتونم ببینم

lorzadehj
دوشنبه 24 مهر 1391, 11:34 صبح
باسلام
من دوباره چک کردم درست بود درضمن فکر می کنم سوالم واضح باشه
با تشکرفراوان

lorzadehj
سه شنبه 25 مهر 1391, 14:35 عصر
با سلام
اساتید محترم کمک کنند

com12151337
سه شنبه 25 مهر 1391, 15:05 عصر
سلام
نمونهای که گذاشته اید مشکل دارد احتمالا" در آپلود کردن مشکلی پیش آمده

lorzadehj
چهارشنبه 26 مهر 1391, 05:34 صبح
دوباره آپلود کردم

lorzadehj
پنج شنبه 27 مهر 1391, 14:55 عصر
کسی نمی تونه این مشکل رو حل کنه؟؟؟؟؟؟؟؟؟؟؟؟

Abbas Amiri
پنج شنبه 27 مهر 1391, 18:07 عصر
سلام
ابتدا خصوصیت Indexed فیلد ردیف را مانند تصویر زیر تغییر دهید ونوع آنرا Number قراردهید
94134
بعد روال زیر را دریک ماژول کپی کنید و آنرا صدا بزنید . ردیف گزاری انجام میشود.


Sub createRow()
On Error GoTo errh
Dim rs As Recordset, i As Integer
Set rs = CurrentDb.OpenRecordset("SELECT id FROM sss GROUP BY id Order BY id")
While Not rs.EOF
i = i + 1
CurrentDb.Execute "UPDATE sss SET radif=" & i & " WHERE ID=" & Nz(rs(0), 0)
rs.MoveNext
Wend
Set rs = Nothing
MsgBox "ردیف گزاری انجام شد"
Exit Sub
errh:
MsgBox Err & " " & Err.Description
End Sub


البته رکوردهایی که ID آنها نول هست مقداری نمیگیرند .

lorzadehj
جمعه 28 مهر 1391, 02:15 صبح
با سلام جناب امیری عزیز
شماره ردیف برای هر id به ترتیب از یک الی .... آغاز شود
باتشکر فراوان

Abbas Amiri
جمعه 28 مهر 1391, 10:12 صبح
ازاین زیرروال استفاده کنید


Sub createRowForEachID()
On Error GoTo ErrH
Dim rs As Recordset, i As Integer
Dim rs2 As Recordset

Set rs = CurrentDb.OpenRecordset("SELECT id FROM sss GROUP BY id Order BY id")
While Not rs.EOF
i = 0
Set rs2 = CurrentDb.OpenRecordset("SELECT id,radif FROM sss WHERE id=" & Nz(rs(0), 0) & " ORDER BY data")
While Not rs2.EOF
i = i + 1
rs2.Edit
rs2("radif") = i
rs2.Update
rs2.MoveNext
Wend
rs.MoveNext
Wend
Set rs = Nothing
Set rs2 = Nothing

MsgBox "ÑÏíÝ ÐÇÑí ÇäÌÇã ÔÏ"
Exit Sub
ErrH:
MsgBox "Error " & Err & "." & vbCr & Err.Description
End Sub

lorzadehj
جمعه 28 مهر 1391, 15:35 عصر
با سلام
جناب امیری خیلی ممنون درست شد اما برای 35000 رکورد 5دقیقه طول می کشه آیا راهی که سریعتر باشه هست؟
باتشکر فراوان

Abbas Amiri
جمعه 28 مهر 1391, 17:54 عصر
به علت حجم بالای رکوردها واجبار دراستفاده از رکوردست زمان پردازش به درازا میکشد . بهترین راه مقداردهی به ردیف درفرم مربوطه ودهنگام ایجاد رکورد است . به این شکل عمل کنید


radif=Nz(DMax("radif", "sss", "id=" & Me.id), 0)+1

alirezabahrami
جمعه 28 مهر 1391, 19:18 عصر
سلام
نمونه ضمیمه را ببین!
موفق باشید

lorzadehj
یک شنبه 30 مهر 1391, 06:06 صبح
با سلام
جناب بهرامی عالی بود فقط یک سوال
آیا می شودکدی را نوشت که بعد از این که ردیف گزاری انجام شد و بعدا اطلاعات دیگری وارد شد به جای اینکه از اول دوباره ردیف گزاری کند برود و ردیف های خالی رو پیدا کرده و ادامه ردیف های قبلی را انجام دهد
با تشکر فراوان

alirezabahrami
یک شنبه 30 مهر 1391, 14:57 عصر
با سلام
جناب بهرامی عالی بود فقط یک سوال
آیا می شودکدی را نوشت که بعد از این که ردیف گزاری انجام شد و بعدا اطلاعات دیگری وارد شد به جای اینکه از اول دوباره ردیف گزاری کند برود و ردیف های خالی رو پیدا کرده و ادامه ردیف های قبلی را انجام دهد
با تشکر فراوان


سلام
بستگي به نحوه ورود و ذخيره اطلاعات در جدول مربوطه مي باشد . اگر فرم ورود اطلاعات در حالت bound است (مستقيماً اطلاعات در جدول ثبت و ذخیره ميشود) از كد جناب اميري در پست شماره 12 استفاده شود ولي اگر فرم ورود اطلاعات در حالت unbound ميباشد بفرمائيد تا راهنمائی لازم بعمل آید.


موفق باشيد