ورود

View Full Version : بهترین راه حل برای ساخت یک ردیف چی هست؟؟



isaac23
جمعه 11 اردیبهشت 1394, 17:32 عصر
سلام به همگی


شاید دیده باشید فایل اکسس زمانی که داری فیلد تعریف میکنید قسمتی داره بنام Auto Number و کارش رو می دونید چیه میاد شماره گذاری میکنه و مشکلی هست نداره اما مشکل اینجا پیش میاد به فرض مثال شما یک ردیف دارید به این ترتیب.
1
2
3
4
5
و حالا شما ردیف سوم رو حذف میکنید . و این ردیف به این صورت در میاد ..
1
2
4
5

از دوستان سوالم اینه چطوری این ردیف رو به بهترین حالت ممکن میشه درست که که به این صورت در بیاد .
1
2
3
4
من از این کد استفاده میکنم مشکلی نداره اما زمانی که اطلاعات زیاد میشه مدت زمانی زیادی طول میکشه تا این ردیف ها درست بشه ممنون میشم راهنمایی کنید .. بانک اکسس 2003 یا sql2005

On Error Resume Next
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveFirst
For i = 1 To Adodc1.Recordset.RecordCount
Adodc1.Recordset.Fields("id") = Str(i)
Adodc1.Recordset.MoveNext
Next i

ahmad abdoli
جمعه 11 اردیبهشت 1394, 20:01 عصر
سلام

من توی برنامه های خودم بجای اینکه شماره ردیف رو توی دیتا بیس ذخیره کنم از فیلد RecordNumber

توی گزارش ساز crystal reports استفاده می کنم

isaac23
شنبه 12 اردیبهشت 1394, 07:29 صبح
اما من واسه گزارش گیری نمی خوام توی محیط برنامه هستش و خیلی لازمش دارم.

ali44970315
شنبه 12 اردیبهشت 1394, 17:23 عصر
بوسيله كد find ميتوني ركورد مورد نظرت رو پيدا كني اينطوري مثلا اگر 100 ركورد داري و ميخواي ركورد 80 رو حذف كني بعد از حذف مستقيم مستقيما ميري ركورد 80
ريز كد رو شب مي نويسم
مطلب دوم اينكه در ديتابيست autonumber رو به number تبديل كن و براي رديف زدن در باتون ذخيره از كد زير استفاده كن
adodc1.recordset.fields("radif")=adodc1.recordset.recordcount

كدی که شما نوشتي اگر در سيستم روش اكسس نصب نباشه اجرا بشه رديف نمي زنه در واقع شما برنامه ات رو وابسته به نصب بودن اكسس کردی
البته ناگفته نمونه كه شناختن بانك اكسس توسط وي بي نيازي به نصب بودن اكسس نداره ولي اگر اكسس نصب نباشه خواص اكسس اجرا نميشه

ali44970315
شنبه 12 اردیبهشت 1394, 23:16 عصر
Dim a as integer
a=adodc1.recordset.fields("radif")
adodc1.recordset.delete
if adodc1.recordset.eof then goto z
adodc1.recordset.find "radif=' " & (a+1) & " ' "
for i =1 to adodc1.recordset.recordcount - (a-1)
adodc1.recordset.fields (" radif") = a
adodc1.recordset.update
adodc1.recordset.movenext
a=a+1
next I
Z:

isaac23
یک شنبه 13 اردیبهشت 1394, 17:20 عصر
من که متوجه منظورت نشدم اگه بتونی تو یه سورس پیادش کنی ارسال کنی ممنون میشم از لطفت.

vbhamed
یک شنبه 13 اردیبهشت 1394, 18:24 عصر
سلام

برای بانک اکسس راه حل خاصی وجود نداره بهتره یک فیلد ردیف در دیتابیس بزارید و همون موقع نمایش تنها رکوردهایی که روی صفحه توی گراید هستن رو شماره بزنید، اینطوری زمان هم نمیگیره

در مورد Sql خودش می‌تونه با کوئری یک شماره ردیف بهتون بده که فیلدی هم در جدول نمی‌خواد، خودتون بیشتر تحقیق کنید