PDA

View Full Version : سوال: دستور UPDATE پیشرفته برای شماره گذاری مجدد فیلد ردیف در جدولی که تعداد زیادی رکورد دارد؟



مهدی د
جمعه 29 فروردین 1393, 03:56 صبح
سلام
در جدول tblEa یک فیلد به نام EaAb وجود دارد. در این جدول تعداد زیادی رکورد نیز موجود است ، برای اینکه مقدار فیلد EaAb از عدد 1 به ترتیب شماره گذاری شود ، دستور UPDATE را چگونه باید نوشت؟ چیزی شبیه این:

.CommandText = "UPDATE tblEa SET EaAb +=1"
یا


Dim s As Long = 0
.CommandText = "UPDATE tblEa SET EaAb=s"
s += 0

zahedi121
جمعه 29 فروردین 1393, 10:43 صبح
سلام
اینجا (http://barnamenevis.org/showthread.php?396789-compact-and-repair-database-بانک-access-در-محیط-vb-net) را ببینید .
موفق باشید

مهدی د
یک شنبه 31 فروردین 1393, 06:38 صبح
سلام
دوستانی که اطلاعاتی دارند لطفاً راهنمایی کنند. باتشکر

majidnazari65
یک شنبه 31 فروردین 1393, 10:13 صبح
سلام.
من از این کد استفاده کردم جواب داد:
with toupdate as (
select [Table_1].*, row_number() over (order by id) as seqnum
from [Table_1]
)
update toupdate
set [test_id] = seqnum


جدول با نام Table_1 و فیلدهای id , test_id هست. بعد از اجرای کوئری test_id به ترتیب شماره گذاری میشه.

مهدی د
جمعه 05 اردیبهشت 1393, 21:52 عصر
سلام
چگونه می توانم از روش بالا استفاده کنم؟ باتوجه به اینکه در برنامه از CommandText و ExecuteNonQuery استفاده می کنم.

majidnazari65
جمعه 05 اردیبهشت 1393, 23:19 عصر
همین کوئری رو توی
CommandText بریز و از ExecuteNonQuery استفاده کن. مثل بقیه کوئری هایی که اجرا میکنی.

مهدی د
دوشنبه 08 اردیبهشت 1393, 22:53 عصر
سلام
انجام دادم ولی خطا می دهد:
CommandText = "select [tblEa].*, row_number() over (order by EaAa) as seqnum from [tblEa] ) Update(toupdate) [EaAb] = seqnum"
متن خطا:

Syntax error in query expression '(SELECT ROW_NUMBER() Over(order by EaAa asc) AS Row FROM tblEa )'.

majidnazari65
سه شنبه 09 اردیبهشت 1393, 10:30 صبح
یه پرانتز اضافه بستی بعد از from [tblEa]
همچنین کوئری که استفاده کردی کامل نیست.