PDA

View Full Version : درج در چندین جدول بطور همزمان



raziyehbazargan
یک شنبه 01 مرداد 1391, 08:54 صبح
سلام دوستان

من چندین جدول دارم مثل جدول شهرها و کشورها و....
و یه جدول اصلی که کلید تمام جدول های دیگه در اون هست...فرمی که طراحی کردم شامل کمبو و تکست باکس های مختلفی هست که هر کدام دیتا برای یک جدول دیگه ارو شامل میشه و باید درجدول مخصوص خودش این دیتا درح بشه..چطور میتونم کار درج رو همزمان در چندین جدول انجام بدم؟؟؟

همچنین یه رادیوباتن هم در فرم دارم که کاربر با کلیک روی اون در فرم دیگه ای که باز میشه اطلاعات دیگه و عکسها رو وارد میکنه...در
حالی که اطلاعات فرم دیگه هم ادامه همین فرم و جدول اصلی هست.
نمیدونم چطور میشه عمل درج رو در چندین حدول و با دو فرم همزمان انجام بدم؟؟؟ ممنون میشم راهنمایی کنید خیلی کارم گیره این موضوع هست مرسی....

Farshid007
یک شنبه 01 مرداد 1391, 10:19 صبح
جدول ها تو دیتا بیس های مختلف هستن یا همشون تو یه دیتا بیس هستند؟

raziyehbazargan
یک شنبه 01 مرداد 1391, 10:25 صبح
همه جداو تو یک دیتابیس هستند

Farshid007
یک شنبه 01 مرداد 1391, 10:51 صبح
منظورت چیه دو فرم هم زمان ! مگه میشه کاربر رو دو فرم کار کنه!
باید اطلاعات فرم یک رو بفرسی تو فرم 2 سپس از اونجا همراه با اطلاعات فرم 2 اینسرت کنی تو جدول هات

برای چند تا جدول مختلف هم مشکلی نیست پشت سر هم ExecuteNonQuery بزن

raziyehbazargan
یک شنبه 01 مرداد 1391, 11:03 صبح
یه توضیح بیشتر هم بدم اینه که: من باید یه سری عکس از کاربر بگیرم.... و برای اینکه سرعت کاهش پیدا نکنه یه جدول دارم برای عکسها...که کلید اون در جدول اصلی هست .(به عنوان کلید خارجی) باید بتونم عکس رو بگیرم و در جدول تصاویر دهیره کنم و کد خارجی مربوط به اون هم در جدول اصلیم درج بشه...برای گرفتن عکس از کاربر هم با کلیک روی یه رادیوباتن فرم دیگه ای باز میشه و اونجا عکسا رو وارد میکنه میخوام بعد از ذخیره عکسها دوباره به فرم اصلی برگردم و اونجا با زدن دکمه sAVE تمام اطلاعات در جداول درج بشه

بقیه جداول مثل شهرها و... یکبار در جداولشون تعریف شدن و تو فرم اصلی کمبو باکس گذاشتم که از طریق انتخاب گزینه مربوطه کد مروبط به اون گزینه از کمبوباکس در جدول اصلیم درج بشه

نمیدونم واضح توضیح دادم یا نه....در واقع من دو حالت رو لازم دارم که نمیدونم به چه صورت باید کار درج رو انجام بدم.

tooraj_azizi_1035
یک شنبه 01 مرداد 1391, 11:11 صبح
سلام دوست من شما باید با TableAdapterManager که با متد UpdateAll همه جداول مرتبط رو ذخیره می کنه کار کنی.
این کامپوننت به طور خود کار هنگام درگ جداول از Data Sources به روی فرم اضافه میشه.
به این عمل Hierarchical Update گفته میشه.

TableAdapterManager.UpdateAll(this.DataSetName);

راهنمای گام به گام:
Walkthrough: Saving Data from Related Data Tables (Hierarchical Update) (http://msdn.microsoft.com/en-us/library/bb384432)

raziyehbazargan
یک شنبه 01 مرداد 1391, 11:23 صبح
مرسی از راهنماییت دوست عزیز

اما این لینک باز نمیشه و پیغام میده...اما همین که مبحثش و گفتین ممنونم

raziyehbazargan
یک شنبه 01 مرداد 1391, 11:47 صبح
یه سوال دیگه ام ممنون میشم راهنمای کنید....من یه دیتاگریدویو دارم و باید از کاربرا ورودی بگیرم....که شکلشو براتوم میزارم....بهترین حالت برای ذخیره این مدل چی هست؟؟؟ باید ماتریس

* کاربر باید نوع خسارت و اینکه خسارت در کدام قسمت هست (top-left,...) مشخص کنه..90075

alias136790
دوشنبه 02 مرداد 1391, 01:50 صبح
سلام
میتونین برای ورود اطلاعات بهتره بجای استفاده از چند تا فرم ،از یه فرم با TabControl استفاده کنین و اطلاعات هر جدول رو تو یه TabPage قرار بدین
و برای حرکت کردن بین TabPageها ، دو تا باتن ، به اسم : بعدی و قبلی، بزارین که با استفاده از این باتن ها به Tab بعدی یا قبلی بره.

کد مربوط به محدود کردن TabControl و حرکت بین TabPageها که از یه سایت گرفتم ،تو زیر قرار داره:

همانطور که می دانیم در #c امکانی به نام TabControl وجود داره که کاربران با کلیک بر روی نام Tabpage ها می تونند بین صفحات حرکت کنند حال فرض کنید که یه فرم دارید که باید یک سری اطلاعات پشت سر هم رو از کاربر دریافت کنید و تا زمانی که اطلاعات تب 1 پر نشده نباید به تب 2 بره برای این کار یک روش این است که امکان حرکت بین تب ها را از طریق کلیک غیر فعال کنیم و کنترل های لازم رو در یک Button که به تب بعدی اشاره می کنه انجام بدیم

برای این کار :
ابتدا یه متغییر سراسری از نوع Boolean تعریف می کنیم و در زیر قسمت InitializeCompnents() مقدار اون رو برابر False قرار می دیم اسم این متغییر رو Ok می گذاریم بعد این کد رو می نویسیم:در ایونت selecting تب کنترل

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (tabControl1.SelectedIndex == 1 && !ok)
e.Cancel = true;
else if (tabControl1.SelectedIndex == 2 && !ok)
e.Cancel = true;
else if (tabControl1.SelectedIndex == 3 && !ok)
e.Cancel = true;
else if (tabControl1.SelectedIndex == 4 && !ok)
e.Cancel = true;
else
e.Cancel = false;
}

private void tabPage2_Enter(object sender, EventArgs e)
{
ok = false;
}
و در دکمه next این کد رو اضافه می کنیم :

private void button3_Click(object sender, EventArgs e)
{
try
{
ok = true;

tabControl1.SelectTab(tabControl1.SelectedIndex + 1);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
برای دکمه Previos هم میشه این کار رو انجام داد . با این کار میشه کنترل های لازم از قبیل خالی نبودن فیلد ها رو در دکمه بعدی انجام داد