PDA

View Full Version : سوال: Update همزمان بر روی یک ستون



vb-sosol
پنج شنبه 28 اسفند 1393, 12:25 عصر
سلام دوستان
من یک فیلدی دارم که مقدار 1 و 0 رو میخوام درونش نگه دارم
مثلا دکمه ای طراحی کردم که اگر کاربر روی اون کلیک کرد اون فیلد بشه 1 به شرطی که تاریخ اون رکورد برابر با تاریخ امروز باشه ولی بقیه رکوردها بشه 0 بشرطی که تاریخ امروز مخالف تاریخ اون فیلد باشه
یعنی در کل باید یک رکورد مقدار 1 رو نگه داره
آپدیت همزمان رو چطوری بنویسم؟

اینطوری مینویسم ولی همش رو میکنه صفر
ocmp.CommandText = "UPDATE DRName SET BirthDayPerson='1' WHERE DateShamsi=@DateShamsi";
ocmp.CommandText = "UPDATE DRNameSET BirthDayPerson='0' WHERE DateShamsi<>@DateShamsi";

Mofid.m
پنج شنبه 28 اسفند 1393, 12:44 عصر
شما نمیتونی دوتا Commandtext رو یجا تعریف کنی
علت صفر شدنش اینه که فقط commandtext دوم رو میخونه.
یا از storedprocedure استفاده کن یا دوبار sqlcommand رو اجرا کن یه بار با دستور اول و یه بار با دستور دوم

vb-sosol
پنج شنبه 28 اسفند 1393, 12:53 عصر
شما نمیتونی دوتا Commandtext رو یجا تعریف کنی
علت صفر شدنش اینه که فقط commandtext دوم رو میخونه.
یا از storedprocedure استفاده کن یا دوبار sqlcommand رو اجرا کن یه بار با دستور اول و یه بار با دستور دوم


دو بار اجراش کردم
اینجا دو تا command که توی برنامه نوشته بودم گذاشتم پشت سر هم

کلا نمیشه دستور update نوشت که بگم این فیلد رو ست کن به 1 به شرطی که DateShamsi=@DateShamsi و بقیه رو بکن 0 ؟

Mofid.m
پنج شنبه 28 اسفند 1393, 13:02 عصر
دوست عزیز شما یه stored procedure بنویس هر تو تا رو با هم برات اجرا میکنه
خیلی راحت تره تا اینکه بخوای سر دوبار اجرا کنی و سر بار اضافی داشته باشی تو برنامت.

در ضمن چرا اجرا نمیشه؟
اجرا میشه
اگه خطایی ازت نمیگیره پس علت اینه که شما پارامتری که بهش میدی با DateShamsi یکی نیست واسه همین چون شرط برقرار نیست نمیشه هیچ رکوردی تغییر نمیکنه.

vb-sosol
پنج شنبه 28 اسفند 1393, 13:06 عصر
مشکل اینجاس که با sql کار نمیکنم که بخوام پروسیجر بنویسم
با اکسس در ارتباط هستم

vb-sosol
پنج شنبه 28 اسفند 1393, 13:21 عصر
من وقتی میخوام آپدیت بزنم روی رکوردی آپدیت میزنم که تاریخش با تاریخ امروز برابر هست
بنابراین این دستورم درسته

ocmp.CommandText = "UPDATE DRName SET BirthDayPerson='1' WHERE DateShamsi=@DateShamsi";



حالا باز میخوام فیلدهای آپدیت بشه که تاریخ اون رکوردها با تاریخ امروز برابر نباشند
خب این دستور منم از لحاظ منطقی درسته
ocmp.CommandText = "UPDATE DRNameSET BirthDayPerson='0' WHERE DateShamsi<>@DateShamsi";


حتی اگر پست سر هم بنویسم چون شرط DateShamsi<>@DateShamsi برقرار نیس هیچ وقت نباید روی رکوردی که الان 1 شده اعمال بشه
ولی میشه!!!

Mofid.m
پنج شنبه 28 اسفند 1393, 13:28 عصر
من اخرین باری که با Access داشتم برنامه مینوشتم برمیگرده ب تقریبا 6 تا 7 سال پیش.
با VB6 و رکورد ست ها مینوشتیم.
نمیدونم چی بگم.
اما دستوراتت ظاهرا درسته.
فقط تو دستور دوم SET چسبیده به اسم جدولت که فکر کنم اشتباه تایپی باشه.
غیر از این دستورت مشکلی نداره

Apache66
پنج شنبه 28 اسفند 1393, 13:32 عصر
من اخرین باری که با Access داشتم برنامه مینوشتم برمیگرده ب تقریبا 6 تا 7 سال پیش.
با VB6 و رکورد ست ها مینوشتیم.
نمیدونم چی بگم.
اما دستوراتت ظاهرا درسته.
فقط تو دستور دوم SET چسبیده به اسم جدولت که فکر کنم اشتباه تایپی باشه.
غیر از این دستورت مشکلی نداره
شاید مشکلت همین باشه

vb-sosol
پنج شنبه 28 اسفند 1393, 13:34 عصر
نه توی برنامه درسته
توی ادیتور اینجا به هم چسبیده

Mahmoud Zaad
پنج شنبه 28 اسفند 1393, 13:36 عصر
سلام
یه کوئری مثل زیر بنویسید:
UPDATE DRName SET BirthDayPerson = Switch(
DateShamsi = @DateShamsi, '1',
DateShamsi <> @DateShamsi, '0'
);