PDA

View Full Version : سوال: آپديت يک باره رکوردها



Hossis
چهارشنبه 26 خرداد 1389, 13:25 عصر
براي آپديت يکباره رکوردهاي ديتابيس (بدون استفاده از حلقه For و باز و بسته کردن مکرر کانکشن) چه راهي رو پيشنهاد مي دهيد؟

ricky22
چهارشنبه 26 خرداد 1389, 15:07 عصر
سلام
واضح تر لطفا!
رکورد های یک جدول؟
چند جدول؟

Hossis
چهارشنبه 26 خرداد 1389, 21:20 عصر
سلام
واضح تر لطفا!
رکورد های یک جدول؟
چند جدول؟
واضحه ، رکوردهاي يک جدول رو مي گم
مثلا فرض کنيد تمام رکوردها رو در ديتاگريد ريختيم و پس از تبديل حروف بزرگ به کوچک يا مانند آن، مي خواهيم همه را ذخيره و جدول و بانک را آپديت کنيم

ashkan209
چهارشنبه 26 خرداد 1389, 22:20 عصر
UPDATE TABLE_NAME SET COL1=Lower(COL1)

Open-Source
پنج شنبه 27 خرداد 1389, 10:19 صبح
براي آپديت يکباره رکوردهاي ديتابيس (بدون استفاده از حلقه For و باز و بسته کردن مکرر کانکشن) چه راهي رو پيشنهاد مي دهيد؟

خوب چرا نمیخوای از For استفاده کنی؟!
چرا هر رکورد رو که اضافه میکنی Connection رو میبندی؟

اگه رکورد هات همه به هم وابسته اند، (یعنی حتما باید یک باره در بانک ذخیره شوند) از SqlTransaction استفاده کن.(یه سرچ بزنی خیلی چیزی گیرت میاد).

Hossis
پنج شنبه 27 خرداد 1389, 16:06 عصر
UPDATE TABLE_NAME SET COL1=Lower(COL1)

اين متغير چه مقداري رو شامل مي شه؟؟ و چي هست؟؟


lower(col1)

Hossis
پنج شنبه 27 خرداد 1389, 16:14 عصر
خوب چرا نمیخوای از For استفاده کنی؟!
چرا هر رکورد رو که اضافه میکنی Connection رو میبندی؟

اگه رکورد هات همه به هم وابسته اند، (یعنی حتما باید یک باره در بانک ذخیره شوند) از SqlTransaction استفاده کن.(یه سرچ بزنی خیلی چیزی گیرت میاد).
من هم مايل به همين کار هستم ولي گفتم شايد راه ساده تري باشه
مگه از متد

dataAdapter.Update(...)
نميشه استفاده کرد؟؟

ashkan209
پنج شنبه 27 خرداد 1389, 18:40 عصر
اين متغير چه مقداري رو شامل مي شه؟؟ و چي هست؟؟


lower(col1)

Col همون Column یا فیلد هستش
Lower هم که یعنی حروف حروف این ستون کوچک بشه
منظور همون دستور آپدیت کلی برای اعمال بر روی یک ستونه که خواسته بودید

Hossis
جمعه 28 خرداد 1389, 08:03 صبح
Col همون Column یا فیلد هستش
Lower هم که یعنی حروف حروف این ستون کوچک بشه
منظور همون دستور آپدیت کلی برای اعمال بر روی یک ستونه که خواسته بودید
منظورم اين بود که اين فيلد رو از کجا مي آريد؟؟ از ديتاگريد وارد ديتابيس مي‌کنيد يا از جاي ديگه
چون اگه يک فيلد از يک جدول رو مستقيم به جدول بفرستيد ،‌منطقي به نظر نمي‌رسه ،‌ اول بايد محتويات فيلد وارد يک کنترل و متغير شده و تغييرات لازم روش اعمال بشه بعد مجدد به جدول برگردونده شده و آپديت بشه

ashkan209
جمعه 28 خرداد 1389, 16:44 عصر
اگه يک فيلد از يک جدول رو مستقيم به جدول بفرستيد ،‌منطقي به نظر نمي‌رسهچرا منطقی نیست ؟
Col اسم همو فیلد موجود درون Tableهستش
وقتی دستور Update رو اجرا میکنید و کانکشن به دیتابیس باز میکنید، یک Table مجازی از Table اصلی با شرطی که گفتید، واکشی میشه به حافظه کلاینت و فرمان مورد نظر روی رکوردهای Table مجازی اجرا میشه و نهایتا تغییرات از Table مجازی به Table اصلی برگردانده و اعمال میشه .
دیتا گرید توی این عملیات کاره ای نیست

Hossis
شنبه 29 خرداد 1389, 08:05 صبح
چرا منطقی نیست ؟
Col اسم همو فیلد موجود درون Tableهستش
وقتی دستور Update رو اجرا میکنید و کانکشن به دیتابیس باز میکنید، یک Table مجازی از Table اصلی با شرطی که گفتید، واکشی میشه به حافظه کلاینت و فرمان مورد نظر روی رکوردهای Table مجازی اجرا میشه و نهایتا تغییرات از Table مجازی به Table اصلی برگردانده و اعمال میشه .
دیتا گرید توی این عملیات کاره ای نیست
خوب نگفته بوديد کجا و چجوري تغييرات رو اعمال مي‌کنيد؟؟ اول بايد به نحوي جدول مجازي رو تغيير بدم،‌ خوب اين تغيير کجا صورت مي‌گيره؟

ashkan209
شنبه 29 خرداد 1389, 11:40 صبح
متوجه منظورتون نشدم ، اما یه چیزی شبیه این بنویسین


Dim comm As New OleDbCommand("update table1 set col1=lower(col1)", Conn)
comm.ExecuteNonQuery()