PDA

View Full Version : مبتدی: نحوه ذخیره در دیتابیس



raziyehbazargan
شنبه 24 تیر 1391, 10:52 صبح
سلام دوستان یه سوال دارم ممنون میشم راهنمایی کنید ..

یه جدول دارم برای تعریف شرکتها :شامل :کد و نام شرکت ها
جدول دوم برای تعریف نمایندگی های شرکت ها: کد و نام نمایندگی ها

جدول سوم هم جدول واسط هست شامل : کلید اصلی جدول شرکت ها و نمایندگی ها

سه تا فرم دارم: فرم اول برای تعریف شرکتها

فرم دوم برای تعریف نمایندگی ها توسط کاربر

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

الان نمیدونم که چطور باید اطلاعات این دوتا کمبو رو در جدول واسطم دخیر کنم..ممنون میشم راهنمایی کنید ...مرسی

Mahmoud.Afrad
شنبه 24 تیر 1391, 11:15 صبح
برای این کار باید نام و آی دی شرکت و نمایندگی ها رو به کمبو ها بایند کنید و خصوصیت valuemember رو برابر آیدی قرار بدید. موقع درج کافیه selectedvalue کمبوها که همون آیدی ها هست رو در جدول سوم درج کنید.
راهنمایی بیشتر میخواید باید کد پر کردن کمبو ها و نام فیلد های جدول ها رو بزارید.

raziyehbazargan
شنبه 24 تیر 1391, 11:49 صبح
مرسی از راهنماییتون

جدول شرکت ها : companyid, companyName

جدول نمایندگی ها: agencyid,agencyName

جدول واسط: id , Company_id , agency_id

Mahmoud.Afrad
شنبه 24 تیر 1391, 12:52 عصر
خودتون نام ها رو اصلاح کنید
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();

private void Form1_Load(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("select * from sherkat", connection);
da.Fill(dt1);
da = new SqlDataAdapter("select * from nemaiande", connection);
da.Fill(dt2);
comboBox1.DataSource = dt1;
comboBox1.DisplayMember = "namesherkat";
comboBox1.ValueMember = "idsherkat";
comboBox2.DataSource = dt2;
comboBox2.DisplayMember = "namenemaiande";
comboBox2.ValueMember = "idnemaiande";
da.Dispose();
da = null;
}

private void button9_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("insert tbl(idsherkat,idnemaiande) values(@idsherkat,@idnemaiande)", connection);
cmd.Parameters.AddWithValue("@idsherkat", comboBox1.SelectedValue);
cmd.Parameters.AddWithValue("@idnemaiande", comboBox2.SelectedValue);
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
cmd.Dispose();
cmd = null;
}منظور از tbl همون جدول سوم هست.

raziyehbazargan
شنبه 24 تیر 1391, 13:10 عصر
ممنونم خیلی لطف کردید....یه سوال دیگه هم دارم ممنون میشم راهنمایی کنید.

من برنامه ای در رابطه با خسارات کانتینر دارم که باید در یه قسمت بتونم از طریق دیتاگرید ویو نوع خسارت رو از کاربر بگیرم و دیتا بیسم ذخیره کنم ممنون میشم راهنماییم کنید اینکه چطور میشه اینکارو انجام دادو

سه تا جدول دارم :
جدول اول شامل محل خسارت مثل( top ,front,front) هست که شامل فیلدهای:id, Title
جدول دوم شامل نوع خسارت مثل( فرو رفتگی، تو رفتگی ،) هست که شامل فیلدهای id,DamageTitle

جدول سوم هم id,TitlePosition,DamageTitle

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

hosaini
شنبه 24 تیر 1391, 17:55 عصر
89696سلام سعی کنید از روشهای جدیدتر درج اطلاعات استفاده کنید هم کوتاهتره هم قابل فهم تر هم سریعتر مثل استفاده از linq یا کار مستقیم با دیتاست بعدشم برای جواب شما یه چیزی شبیه اینو می خاین اینم کوئریش
USE

[LobIranT]

GO

/****** Object: StoredProcedure [dbo].[UpdateQuerySanjesh] Script Date: 07/14/2012 18:19:41 ******/

SET

ANSI_NULLS ON

GO

SET

QUOTED_IDENTIFIER ON

GO

ALTER

PROCEDURE [dbo].[UpdateQuerySanjesh]

(

@I1
int,

@I2
int,

@I3
int,

@I4
int,

@I5
int,

@I6
int,

@Id
int



)

AS


SET NOCOUNT OFF;

If



(

Select COUNT(*) From Sanjeha Where Id = @Id) = 0

Begin


Insert into Sanjeha (Id) Values (@Id)

End



UPDATE

Sanjeha

SET

I1 = @I1, I2 = @I2, I3 = @I3, I4 = @I4, I5 = @I5, I6 = @I6

WHERE

(Id = @Id);



SELECT

IdSanjeh, Id, I1, I2, I3, I4, I5, I6 FROM Sanjeha WHERE (Id = @Id)

raziyehbazargan
چهارشنبه 28 تیر 1391, 10:59 صبح
کسی میتونه واضح تر راهنمایی کنه..
اول اینکه چطور میتونم دیتاگرید با تعداد سطر مشخص داشته باشم؟؟؟
دوم اینکه چطور این مقادیر چک باکس رو در جداولم که در بالا اردم درج کنم؟

raziyehbazargan
چهارشنبه 28 تیر 1391, 12:01 عصر
فکر میکنم باید توضیح کاملتری بدم:

سه تا جدول دارم :
جدول اول شامل محل خسارت مثل( top ,front,front) هست که شامل فیلدهای:id, Title
جدول دوم شامل نوع خسارت مثل( فرو رفتگی، تو رفتگی ،) هست که شامل فیلدهای id,DamageTitle

جدول سوم هم id,TitlePosition,DamageTitle

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

raziyehbazargan
پنج شنبه 29 تیر 1391, 10:23 صبح
واقعا کسی نیست راهنمایی کنه؟؟؟ خیلی لازم دارم ممنون میشم جواب بدید

Mahmoud.Afrad
پنج شنبه 29 تیر 1391, 11:32 صبح
اگر تعداد سطر و ستون دیتاگرید ثابت هست میتونید به راحتی در حالت دیزاین روی گرید ویو راست کلیک کنید و ستونهای مورد نیاز رو add کنید البته نوع ستونها رو از نوع datagridviewcheckboxcolumn انتخاب کنید. بعد هم سطرهای مورد نیاز رو اضافه میکنید. در هنگام درج در دیتابیس براساس اینکه شخص کدام تیک ها رو زده یا نزده مقادیر true و false رو در دیتابیس ذخیره کنید(نوع فیلدهای مورد نظر در دیتابیس رو از نوع bit تعریف کنید)

raziyehbazargan
پنج شنبه 29 تیر 1391, 12:15 عصر
ستون ها رو در حالت دیزاین اضافه کردم اما برای سطرها رو نمیدونم در حالت دیزاین چطور اضاه کنم؟

من دو جدول دارم برای ستون ها و سطرها چون میخوام بتونم بر اساس هر کدوم جداگانه جستجو کنم.

میشه برام یه مثال بیارید مخصوصا از قسمت دیتابیسش؟؟؟