PDA

View Full Version : به روز رسانی یک table به واسطه یک view



sadaf_
چهارشنبه 24 اسفند 1390, 09:48 صبح
من یک view دارم که 27 دستور select رو union کردم
و برای گزارشاتم استفاده می کنم
چطوری می تونم table ی بسازم که به واسطه view به روز بشه و من گزارشاتم را از table بگیرم
یک راهش اینه که من table را بسازم و هر موقع که خواستم از view یک select بگیرم و بریزم توی table این روش خوبی نیست و در هر صورت هم زمان بر می شه و هم حتما باید به واسطه کاربر انجام بشه

آیا روشی هست که بشه بین view و table ارتباطی برقرار کرد که هرچی از select view به وجود می یاد در table ریخته بشه

baktash.n81@gmail.com
چهارشنبه 24 اسفند 1390, 14:46 عصر
خوب اگه همچین کاری می شد کرد ... که دیگه چرا بحث View مطرح شد ... در واقع View همون کاریه که شما می خواین انجام می ده ... امکان دیگه ای که SQL در اختیار شما می ذاره Table Value Function ها هستند توابعی که یه Table بر می گردونن و می تونی ازشون Select بگیری یا نتیجه رو با یه جدول دیگه Join کنی ... می تونید دستورات رو داخل یک SP هم قرار بدید ...

البته یکی از مباحثی که در این مورد مطرح می شه بحث Olap ها هست ... ولی اگه به همون View ها مشکلتون رو حل می کنه نیاز به وارد شدن تو این مبحث نیست ...

sadaf_
چهارشنبه 24 اسفند 1390, 15:35 عصر
اشکالی که view ها داره اینه که حتما باید select بشه به خاطر همین زمان را از دست می ره
حالا من دنبال راهی هستم که بتونم نتیجه Select ویوها را در یک table بریزم

یوسف زالی
پنج شنبه 25 اسفند 1390, 00:34 صبح
سلام. منظور شما کمی گنگه.
مثلا با دستور زیر می تونی این کارو کنی:
select * into TBL from VIEW

یا دستورهای مشابه.
برای چه کاری دقیقا لازم دارید؟

mohsen.net
پنج شنبه 25 اسفند 1390, 08:39 صبح
دستورات inset - update روی view هم امکان پذیر است به چند شرط
یکی اینکه ویو نباید به 2تا جدول رفرنس داشته باشد . دیگر اینکه ستونها مثل ستونهای جدول باشد

sadaf_
پنج شنبه 25 اسفند 1390, 10:24 صبح
شاید من نتونستم منظورم را دقیق بگم عذر می خوام
view من 27 تا select داره
و برای اینکه گزارش را بگیرم مجبورم همه را دوباره select کنم
حالا من دنبال روشی هستم که دیگه نیازی به select نباشه و نتیجه یک select را در جایی داشته باشم
مثل یک table
بله با دستورات insert update می شه اما کاربر مجبوره این کار را انجام بده
اما من می خوام table ی که از نتیجه view پر می شه خودش هر لحظه در حال update باشه
و من برای گزارشاتم از table استفاده کنم

shocraneh
پنج شنبه 25 اسفند 1390, 22:27 عصر
رفیق خوب وقتی شما ویو داری دیگه چرا دوباره سلکت کنی؟؟!
add new item_ dataset حالا یه دیتا تیبل درست کنDT1 دقیقا فیلدهاش هم نام و هم نوع فیلدهای ویوتون .حالا روی فرم گزارش گیری یه dataSet11 بزارو کد زیر رو اجرا کن

public void Select( )
{

SqlCommand Cmd = new SqlCommand("select * from view1", DALBase.GetConnectionString());
try
{
DALBase.Open_Connection();
Cmd.ExecuteNonQuery();
}
finally
{
DALBase.Close_Connection();
}
using (SqlDataAdapter DA = new SqlDataAdapter(Cmd))
{
DA.Fill(dataSet11.DT1);
}
}
اطلاعات که تو ویو داری رو می گیری ،دیگه سلکت چی می خای؟؟
از دیتا تیبل هم که تو محیط طراحی گزارشت استفاده می کنی.موفق باشید

baktash.n81@gmail.com
شنبه 27 اسفند 1390, 07:41 صبح
خوب میزان تراکنش و تغییر اطلاعات روی جداول اصلی ویوتون چقدر هست و چقدر online بودن گزارش براتون مهمه ؟! مثلا اگه گزارش اطلاعات 2 ساعت پیش رو نشون بده مشکلی به وجود می آد ؟؟

sadaf_
شنبه 27 اسفند 1390, 10:31 صبح
خوب میزان تراکنش و تغییر اطلاعات روی جداول اصلی ویوتون چقدر هست و چقدر online بودن گزارش براتون مهمه ؟! مثلا اگه گزارش اطلاعات 2 ساعت پیش رو نشون بده مشکلی به وجود می آد ؟؟
بله اطلاعات در لحظه باید به روز باشه
من وقتی این select از می ریزم توی یک table و از table یک select می گیرم 125000 رکورد در 2 ثانیه می یاره
ولی وقتی از view اصلی select می گیرم 20 ثانیه زمان می بره
به خاطر همین من دنبال یک روشی هستم که بدون اینکه کاربر متوجه بشه اطلاعات را از یک table بخونم
یعنی نتیجه view در tableی باشه که من select کنم