PDA

View Full Version : تعداد رکوردهای تاثیر یافته



کیوان معینی
جمعه 25 خرداد 1386, 18:42 عصر
هنگامی که از Ado برای Update یا Delete یک جدول ( در SQL Server ) استفاده میکنیم ،
چطور تعداد رکورد های تاثیر یافته از این عمل رو بدست بیاریم ؟! ( نتیجه برگشتی )

ممنون

benighted.boy
جمعه 25 خرداد 1386, 22:05 عصر
اگر درست متوجه منظورت شده باشم میتونی یه شمارنده بزاری که به ازای هر رکورد که تغییر پیدا میکنه یه عدد اضافه کنه.مثلا هر بار که فرمان delete برروی هر رکورد اعمال میشه یه عدد به شمارنده اضافه کنه

کیوان معینی
شنبه 26 خرداد 1386, 00:37 صبح
اگر درست متوجه منظورت شده باشم میتونی یه شمارنده بزاری که به ازای هر رکورد که تغییر پیدا میکنه یه عدد اضافه کنه.مثلا هر بار که فرمان delete برروی هر رکورد اعمال میشه یه عدد به شمارنده اضافه کنه


با تشکر از توجه شما دوست عزیز

باید بگم که منظور من تغییر یا حذف رکورد به رکورد نیست ، بلکه تغییرات با دستورات SQL است .

reza_rad
شنبه 26 خرداد 1386, 07:03 صبح
یک سوال رو در یک تاپیک بپرسید.

http://barnamenevis.org/forum/showthread.php?t=70648

CodeMasterX
شنبه 26 خرداد 1386, 14:54 عصر
تاپیکی آقای راد معرفی کردن که جواب رو داده، ولی توی ADO 2.x همچین قابلیتی رو ندارین.
اگر دات نت بود قضیه فرق میکرد چون دیتاست ها،DataTables,DataRows همچین امکانی رو فراهم م یکنند.

کیوان معینی
پنج شنبه 31 خرداد 1386, 00:45 صبح
delete from table1 where id<10
Select @@ROWCOUNT
جناب راد ممنون از شما،
باید بگم توضیح شما در حالتی قابل استفاده است که هر دو خط در یک سطح هم تراکنش باشند ( مثل پروسیجرها ، یه Quary محیط Query Analyzer ).
در صورتیکه منظور من استفاده از حالت Adcmdtext مربوط به Ado است که هر SQL جداگانه از یه اینترفیسی مثل VB برای MS SQL فرستاده میشه .

(بخاطر همین موضوع ، تاپیک مشابه ای رو در تالار MS SQL ایجاد کردم )

باز هم سپاسگزارم .

Fagat_tanhaie
پنج شنبه 31 خرداد 1386, 01:44 صبح
dim Cnn as new adodb.connection
dim ReordsAffected as long
cnn.connectionstring="..."
cnn.open
cnn.execute "select * from table1",RecordsAffected
msgbox RecordsAffected

CodeMasterX
پنج شنبه 31 خرداد 1386, 02:59 صبح
این دستورات تعداد رکوردهایی رو برمیگردونه که بارگذاری شدن، تو ADO 2.x نمیشه تعداد رکوردهایی که هنگام به روز رسانی تحت تاثیر قرار گرفتن رو مشخص کرد.

حامد مصافی
پنج شنبه 31 خرداد 1386, 11:07 صبح
دو دستور SQL رو با شرایط مساوی (در قسمت WHERE) صادر کن.
اولی با عنوان SELECT و دومی با عناوین ویرایشی (مثل DELETE یا UPDATE).
یعنی ایتدا تعداد رکورد های قابل ویرایش رو مشخص کن سپس اونها رو ویرایش کن.

کیوان معینی
پنج شنبه 31 خرداد 1386, 12:31 عصر
جناب Black Del ممنون از توجه شما ،
یعنی برای هر Update یا delete یه Select هم گرفته شه ؟! بیچاره SQL !!!
بحث سربار اضافی چی میشه ؟!

کیوان معینی
پنج شنبه 31 خرداد 1386, 12:32 عصر
جناب Black Dal ممنون از توجه شما ،
یعنی برای هر Update یا delete یه Select هم گرفته شه ؟! بیچاره SQL !!!
بحث سربار اضافی چی میشه ؟!

حامد مصافی
پنج شنبه 31 خرداد 1386, 18:47 عصر
همونطوری که دوستان هم اشاره کردند وقتی از ADO استفاده می کنید امکان اجرای بیش از یک دستور رو ندارید.

کیوان معینی
جمعه 01 تیر 1386, 11:56 صبح
جناب CodeMasterX باید به عرض برسونم که کدی که دوست عزیزمون faghat_tanhaie دادند ، درست کار میکنه و تعداد رکوردهای Update و Delete شده رو برمیگردونه . ( در ADO 2.8)

mehdi.mousavi
جمعه 01 تیر 1386, 12:22 عصر
هنگامی که از Ado برای Update یا Delete یک جدول ( در SQL Server ) استفاده میکنیم ،
چطور تعداد رکورد های تاثیر یافته از این عمل رو بدست بیاریم ؟! ( نتیجه برگشتی )

ممنون

سلام.
از فرمان @@ROWCOUNT در SQL Server استفاده کنید. مثلا SQL زیر رو در نظر بگیرید:



DELETE * FROM WhateverTable WHERE WhateverClause
SELECT @@ROWCOUNTبه این ترتیب تعداد رکوردهای تاثیر یافته از آخرین دستور به شما برگردونده میشه. در ADO نیز میتونید از Property ی RecordsAffected استفاده کنید که همین مقدار رو برمیگردونه.

CodeMasterX
جمعه 01 تیر 1386, 12:36 عصر
مساله فقط تعداد رکوردهای ویرایش و حذف نیست.
اگر شما مثلا 10 تا کاربر همزمان به دیتابیستون وصل بشن و 100 تا رکورد رو همزمان ویرایش کنن، ADO امکان جالب و درستی برای ویرایش چند رکورد بصورت همزمان و اعلام رکوردهای تحت تاثیر قرار گرفته رو نمیده.
اگر کد ایشون منظور قطعی شما بوده و جوابگو هست که حله.

mehdi.mousavi
شنبه 02 تیر 1386, 10:52 صبح
مساله فقط تعداد رکوردهای ویرایش و حذف نیست.
اگر شما مثلا 10 تا کاربر همزمان به دیتابیستون وصل بشن و 100 تا رکورد رو همزمان ویرایش کنن، ADO امکان جالب و درستی برای ویرایش چند رکورد بصورت همزمان و اعلام رکوردهای تحت تاثیر قرار گرفته رو نمیده.
اگر کد ایشون منظور قطعی شما بوده و جوابگو هست که حله.

سلام.
لطفا بیشتر توضیح بدید. هر کاری که توی مثلا SQL Server انجام میشه، یه SCOPE ای داره. برای خوندن و نوشتن و .... چند نوع Lock وجود داره. متوجه نمیشم منظورتون از "امکان جالب و درست" چیه. 100 رکورد اول که توسط کاربر یک Update میشه، یه ROWCOUNT بر میگردونه و واسه کاربر دوم یه ROWCOUNT دیگه چون تو دو Scope متفاوت دارن این دستورات اجرا میشن.

safasoft
سه شنبه 26 تیر 1386, 10:45 صبح
یک سوال
من می خواهم شماره سطر رکورد های تغییر یافته را برگردانم چه کار کنم ؟
ممنونم