PDA

View Full Version : سوال: ثبت موقت در مدت محدود و ثبت نهایی



hossein3p2p
دوشنبه 12 آبان 1393, 00:03 صبح
با سلام خدمت دوستان عزیزم
بنده برنامه ای نوشتم با زبان 2010#C و SQL SERVER 2008 R2
و تکنولوژی : Stored Proceduer

قصد دارم اطلاعاتی رو از بنده بگیره و اونها رو توی یک دیتاگرید به صورت موقت ثبت کنه و سپس بعد از اعمال ویرایش در صورت تکمیل اطلاعات به صورت کامل با زدن دکمه ثبت نهایی اطلاعات رکورد مورد نظر به طور کامل از گرید موقت انتقال پیدا کنه و درون دیتاگرید نهایی ثبت بشه
ممنون میشم کمکم کنید؟
تصویر زیر نمونه ای برای تجسم سوالم هستش امیدوارم سوالم کاملا مفهوم باشه واستون؟؟؟

http://8pic.ir/images/7xbo6wvysgomdrhvx3qh.jpg (http://8pic.ir/)

danialafshari
دوشنبه 12 آبان 1393, 00:13 صبح
با سلام
برنامه ی فاکتور هم چنین کاری انجام میدهد
نیازی به 2 تا گرید نیست
ابتدا اطلاعات را به دیتاگرید Add کنید
سپس با زدن دکمه نهایی تمام دیتاگرید با حلقه در بانک Add کنید
هر موقع کد به ID نسبت داده شد یعنی اطلاعات ثبت شده و همون 1 گرید کفایت می کنه
قبلاً هم توضیح دادم و موجوده
موفق باشید

hossein3p2p
دوشنبه 12 آبان 1393, 00:29 صبح
داداش لطف کن لینک این برنامه فاکتور که میگی رو واسم بزار

mreram
دوشنبه 12 آبان 1393, 02:04 صبح
سلام
شما فقط به دو for احتیاج دارید تا تمام ستون های دیتاگرید رو پیمایش کنه مثلا:

foreach (DataGridViewRow rows in dataGridView1.Rows) {
foreach (DataGridViewCell cells in rows.Cells)
{
//ذخیره در دیتابیس
db.tbl1.Add(cells.Value);
}

}

rasoolf
دوشنبه 12 آبان 1393, 09:54 صبح
(http://barnamenevis.org/showthread.php?394135-%DA%86%DA%AF%D9%88%D9%86%DA%AF%D9%8A-%D8%B0%D8%AE%D9%8A%D8%B1%D9%87-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1%D8%A7%D8%AA-Datagridview-%D8%AF%D8%B1-%D8%AF%D9%8A%D8%AA%D8%A7%D8%A8%D9%8A%D8%B3%D8%9F/page2)
سلام ببین لینک زیر کمکت میکنه

http://barnamenevis.org/showthread.p...B3%D8%9F/page2 (http://barnamenevis.org/showthread.php?394135-%DA%86%DA%AF%D9%88%D9%86%DA%AF%D9%8A-%D8%B0%D8%AE%D9%8A%D8%B1%D9%87-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1%D8%A7%D8%AA-Datagridview-%D8%AF%D8%B1-%D8%AF%D9%8A%D8%AA%D8%A7%D8%A8%D9%8A%D8%B3%D8%9F/page2)

danialafshari
دوشنبه 12 آبان 1393, 21:16 عصر
سلام
شما فقط به دو for احتیاج دارید تا تمام ستون های دیتاگرید رو پیمایش کنه مثلا:

foreach (DataGridViewRow rows in dataGridView1.Rows) {
foreach (DataGridViewCell cells in rows.Cells)
{
//ذخیره در دیتابیس
db.tbl1.Add(cells.Value);
}

}

با سلام
فقط یک حلقه for کافیه


داداش لطف کن لینک این برنامه فاکتور که میگی رو واسم بزار
در سایت دنبال برنامه صدور فاکتور بگردید

موفق باشید

hossein3p2p
سه شنبه 13 آبان 1393, 00:47 صبح
دوستان عزیزم ممنونم از همه ی راهنمایی هاتون
بنده برنامه رو اینجا میزارم و زحمت بکشید کاملش کنید البته به همراه دیتابیسش
ممنونم...

دانلود برنامه (http://s5.picofile.com/file/8149502026/WindowsFormsApplication1.zip.html)

hossein3p2p
چهارشنبه 14 آبان 1393, 00:35 صبح
دوستان لطفا کمکم کنید...؟؟

mojtaba0912433
چهارشنبه 14 آبان 1393, 11:36 صبح
مي توني يه تيبل موقت بزاري با تمام مشخصات تيبل اصلي موقع ثبت از تيبل موقت منتقل كني به تيبل دائمي و از روي تيبل موقت حذف كني

hossein3p2p
پنج شنبه 15 آبان 1393, 07:03 صبح
اگه میشه واسم برنامه رو کامل کنید با تشکر فایل برنامه رو دانلود کنید

abdullah20
پنج شنبه 15 آبان 1393, 10:08 صبح
بذارید یه بار دیگه مسئله را مطرح کنیم
شما با سه عدد تکست باکس میخواید به گرید سطراضافه کنید به امکان ویراش توسط گرید اول باانتخاب سطرمورد نظر را داشته باشید درسته؟
بعد می خواید کل اینهارا وارد گرید دیگر کنید درسته ؟
بعد گرید 2 را را به صورت یکجا می خواید وارد جدول کنید درسته؟

mahlake
پنج شنبه 15 آبان 1393, 12:35 عصر
این کد برای دکمه ثبت موقت:

dataGridView2.ColumnCount = 3;
dataGridView2.Columns[0].Name = "ردیف";
dataGridView2.Columns[1].Name = "نام";
dataGridView2.Columns[2].Name = "نام خانوادگی";
string[] row = new string[] { textBox1.Text, textBox2.Text, textBox3.Text };
dataGridView2.Rows.Add(row);

mahlake
پنج شنبه 15 آبان 1393, 12:48 عصر
این کد برای دکمه ثبت نهایی:

int i = 0;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=(local);Initial Catalog=اسم دیتابیس;Integrated Security=True";




for (; dataGridView2.RowCount - 1 > i; i++)
{
if (dataGridView2.DataSource != "")
{
SqlCommand com = new SqlCommand();
com.Connection = conn;
com.CommandText = "Insert Into [sanad] Values(@radif ,@nam ,@famil )";
com.Parameters.AddWithValue("radif", dataGridView2.Rows[i].Cells[0].Value.ToString().Trim());
com.Parameters.AddWithValue("nam", dataGridView2.Rows[i].Cells[1].Value.ToString().Trim());
com.Parameters.AddWithValue("famil", dataGridView2.Rows[i].Cells[2].Value.ToString().Trim());


com.ExecuteNonQuery();
com.Parameters.Clear();
dataGridView2.DataSource = "";
}
else if(dataGridView2.DataSource =="")
{
MessageBox.Show("برای ثبت ابتدا اطلاعات را اضافه کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

mahlake
پنج شنبه 15 آبان 1393, 12:52 عصر
برای دکمه ویرایش:
اگه کدش رو ننوشتی خودت رو خسته نکن یه توضیحات بنویس که هر کس میخواد هر فیلد گریدویو رو ویرایش کنه فقط کافیه روی اون دابل کلیک کنه و ویرایش رو انجام بده و بعد اینتر بزنه :چشمک:

abdullah20
پنج شنبه 15 آبان 1393, 13:10 عصر
حالا اومدیم 1000 تا رکورد اضافه کرد به دیتاگرید اون موقع چی ؟باید با حلقه این 1000 تا رکورد ر وارد دیتابیس کنیم؟
این روش خوب نیست

mahlake
پنج شنبه 15 آبان 1393, 15:00 عصر
حالا اومدیم 1000 تا رکورد اضافه کرد به دیتاگرید اون موقع چی ؟باید با حلقه این 1000 تا رکورد ر وارد دیتابیس کنیم؟
این روش خوب نیست

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

sajadsobh
پنج شنبه 15 آبان 1393, 15:25 عصر
من نظرم اینه که وقتی میخوای یه چیز رو بصورت موقت ذخیره کنی میتونی واسه رکوردت یه فیلد وضعیت بذاری. برای مثال یه فیلد که مقدار true یا false بگیره. در صورتی که رکورد ثبت نهایی شد می تونی اون فیلد رو true کنی. دیگه نیاز یه table جدا هم نیست. :لبخندساده:

mahlake
پنج شنبه 15 آبان 1393, 18:08 عصر
من نظرم اینه که وقتی میخوای یه چیز رو بصورت موقت ذخیره کنی میتونی واسه رکوردت یه فیلد وضعیت بذاری. برای مثال یه فیلد که مقدار true یا false بگیره. در صورتی که رکورد ثبت نهایی شد می تونی اون فیلد رو true کنی. دیگه نیاز یه table جدا هم نیست. :لبخندساده:

تا جایی که من فهمیدم تو ثبت موقت نیازی به جدول نیست همون گرید ویو کافیه...

تازه اگر نیاز باشه و این فیلد اضافه بشه در جست و جو توی ابعاد وسیع یا گزارشگیری های خاص سرعت رو میاره پایین.. ۲ تا جدول منطقی تره ((البته اگه نیاز به ثبت در جدول دیگه ای باشه.))
البته این نظره منه باز هم صاحب نظران هرچیز که بگویند ما کسب تجربه میکنیم...

FastCode
پنج شنبه 15 آبان 1393, 19:13 عصر
سلام.
کم کم دیگه میخواستم تصمیم خودکشی بگیرم.

وقتی دیدی سخته اول از خودت بپرس چرا دارم این کار رو میکنم؟
میخواهی همش با هم ذخیره بشه؟
راهش transaction ه.

hossein3p2p
جمعه 16 آبان 1393, 13:46 عصر
توضیحات :
دوستان برنامه ای که دارم روش کارمیکنم برنامه ی ثبت ماموریت های پرسنل و کارمندان شرکت مخابرات هستش
توی روز تقریبا روزی 10 تا ماموریت داریم این ماموریت ها باید همه ثبت بشن توی شکل زیر فرم رو میبینید
125399
دراین فرم که میبینید باید تمام فیلد ها پر شن که ماموریت کامل ثبت بشه هر فیلدی که خالی بمونه ایراد میگیره که فیلد مورد نظر خالی مونده (مثل فیلد ساعت برگشت از ماموریت) که برای وارد کردن این فیلد حتما باید انتظار بکشیم تا شخص از ماموریت برگرده و ساعتش اعلام بشه (برای این کار تمام اطلاعات فیلدهای ماموریت رو توی دفتر یادداشت میکردیم بعد در آخر همه اطلاعات رو یکجا ثبت میکردیم) که حالا مدیران درخواست داشتن کلا دفتر حذف بشه و برنامه این امکان رو داشته باشه که تمام فیلدها رو ذخیره کنه در یک گرید موقت، بعد که شخص از ماموریت برگشت و ساعت و تاریخ پایان کارش رو اعلام کرد با زدن دکمه ویرایش فیلدهایی رو که ناقص موندن وارد کنیم و وقتی خواستیم اعمال ویرایش کنیم دیگه توی گرید 1 یا همون موقت ذخیره نشه و اون رکورد مستقیم توی گرید 2 یا ثبت نهایی دخیره بشه.
بازم اگه توضیح بیشتر یا سوالی داشتین مطرح کنید تا توضیح بدم خدمتتون...

danialafshari
جمعه 16 آبان 1393, 14:12 عصر
با سلام
خب با توضیحاتتون مشخص شد که باید اطلاعات موقت هم ذخیره بشن
ممکنه تا چندین ساعت یا چندین روز ماموریت طول بکشه ....
روشی که خدممتون عرض کردم بعد از بسته شدن برنامه اطلاعات از بین میرن مگر اینکه ثبت نهایی بشن
یک راهی که می تونید انجام بدید اینه که یک فیلد Bool قرار بدید تا ماموریت و بازگشت از ماموریت متمایز بشن
اگر فیلد مثلاً true بود از ماموریت برگشته و می تونید اطلاعات رو مشاهده و اگر false بود می تونید اطلاعاتش رو کامل کنید
موفق باشید

abdullah20
جمعه 16 آبان 1393, 14:12 عصر
اخر من نفهمیدم میخواید داخل دیتابیس ذخیره کنید یا نه
سوال شما کدنویسیش خیلی ساده است فقط متوجه نشدم چی می خواید

sajadsobh
جمعه 16 آبان 1393, 23:27 عصر
توضیحات :
دوستان برنامه ای که دارم روش کارمیکنم برنامه ی ثبت ماموریت های پرسنل و کارمندان شرکت مخابرات هستش
توی روز تقریبا روزی 10 تا ماموریت داریم این ماموریت ها باید همه ثبت بشن توی شکل زیر فرم رو میبینید
125399
دراین فرم که میبینید باید تمام فیلد ها پر شن که ماموریت کامل ثبت بشه هر فیلدی که خالی بمونه ایراد میگیره که فیلد مورد نظر خالی مونده (مثل فیلد ساعت برگشت از ماموریت) که برای وارد کردن این فیلد حتما باید انتظار بکشیم تا شخص از ماموریت برگرده و ساعتش اعلام بشه (برای این کار تمام اطلاعات فیلدهای ماموریت رو توی دفتر یادداشت میکردیم بعد در آخر همه اطلاعات رو یکجا ثبت میکردیم) که حالا مدیران درخواست داشتن کلا دفتر حذف بشه و برنامه این امکان رو داشته باشه که تمام فیلدها رو ذخیره کنه در یک گرید موقت، بعد که شخص از ماموریت برگشت و ساعت و تاریخ پایان کارش رو اعلام کرد با زدن دکمه ویرایش فیلدهایی رو که ناقص موندن وارد کنیم و وقتی خواستیم اعمال ویرایش کنیم دیگه توی گرید 1 یا همون موقت ذخیره نشه و اون رکورد مستقیم توی گرید 2 یا ثبت نهایی دخیره بشه.
بازم اگه توضیح بیشتر یا سوالی داشتین مطرح کنید تا توضیح بدم خدمتتون...


با این توضیحاتی که دادی اون روشی که من گفتم بیشتر به کارت میاد. همونطور که danialafshari (http://barnamenevis.org/member.php?68467-danialafshari) اشاره کرد بهش.

hossein3p2p
یک شنبه 18 آبان 1393, 11:04 صبح
من که آخرش به جوابم نرسیدم دوستان
یه برنامه نویس قدرتمند جوابمو بده لطفا
اگه قصد دارید تعداد پستاتونو زیاد کنید این تاپیک جاش نیست
این تاپیک یه تاپیک حرفه ای و کمیابه
متشکر از دوستان

danialafshari
یک شنبه 18 آبان 1393, 12:24 عصر
من که آخرش به جوابم نرسیدم دوستان
یه برنامه نویس قدرتمند جوابمو بده لطفا
اگه قصد دارید تعداد پستاتونو زیاد کنید این تاپیک جاش نیست
این تاپیک یه تاپیک حرفه ای و کمیابه
متشکر از دوستان

با سلام
به جای تحریک کردن کمی جستجو کنید
اینجا جای قرار دادن کد نیست

کار با بانک اطلاعاتی رو باید بلد باشید
فقط یک فیلد نیاز دارید که توضیح دادم
موفق باشید

mreram
یک شنبه 18 آبان 1393, 19:47 عصر
من که آخرش به جوابم نرسیدم دوستان
یه برنامه نویس قدرتمند جوابمو بده لطفا
اگه قصد دارید تعداد پستاتونو زیاد کنید این تاپیک جاش نیست
این تاپیک یه تاپیک حرفه ای و کمیابه
متشکر از دوستان
دوست عزیز تشکر نمیکنید توهین نکنید ...
این تاپیک به هیچ عنوان حرفه ای نیست و به عنوان یک دوست بهتون پیشنهاد میکنم دست از کار بکشید کمی مطالعه کنید ...

MOHSEN1230
دوشنبه 17 آذر 1393, 14:08 عصر
سلام من این با mysql نوشتم ولی فقط یک سط را ذخیره میکنه
لطفا اساتید راهنمایی فرمایید


int i = 0;
MySqlConnection connect = new MySqlConnection("SERVER=localhost; USERID=root; PASSWORD=123321; DATABASE=hotel;charset=utf8;");
MySqlCommand cmd = new MySqlCommand();
MySqlDataAdapter da = new MySqlDataAdapter();
DataTable dt = new DataTable();

connect.Open();
cmd.Connection = connect;

da.SelectCommand = cmd;

for (; dataGridView2.RowCount - 1 > i; i++)
{
if (dataGridView2.DataSource != "")
{

cmd.Connection = connect;
cmd.CommandText = "Insert Into room(nog) Values(@radif)";
cmd.Parameters.AddWithValue("radif", dataGridView2.Rows[i].Cells[0].Value.ToString().Trim());
cmd.Parameters.AddWithValue("nam", dataGridView2.Rows[i].Cells[1].Value.ToString().Trim());
cmd.Parameters.AddWithValue("famil", dataGridView2.Rows[i].Cells[2].Value.ToString().Trim());


i = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();
dataGridView2.DataSource = "";
}
else if (dataGridView2.DataSource == "")
{
MessageBox.Show("برای ثبت ابتدا اطلاعات را اضافه کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

hossein3p2p
دوشنبه 17 آذر 1393, 15:26 عصر
بچه ها این تاپیک خیلی مهمه لطفا کمک کنید؟؟؟

حسین.کاظمی
سه شنبه 18 آذر 1393, 10:07 صبح
بچه ها این تاپیک خیلی مهمه لطفا کمک کنید؟؟؟

سلام
دوست عزیز
منم همچین نرم افزاری واسه یه شرکتی نوشتم
همونطوری که استادان فرمودند شما در جدولت نیاز به یک فیلد از نوع بولین ویا نامبر دارید که موقع ثبت موقت مثلا falseیا 0 ثبت بشه پس از ویرایش اون فیلد true یا 1 بشه این بهترین راه حله
موفق باشی

hossein3p2p
پنج شنبه 20 آذر 1393, 21:34 عصر
سلام
دوست عزیز
منم همچین نرم افزاری واسه یه شرکتی نوشتم
همونطوری که استادان فرمودند شما در جدولت نیاز به یک فیلد از نوع بولین ویا نامبر دارید که موقع ثبت موقت مثلا falseیا 0 ثبت بشه پس از ویرایش اون فیلد true یا 1 بشه این بهترین راه حله
موفق باشی

دوست عزیز میتونی یه نمونه مثال عملی بزنی که این کارو اونجا انجام بدی ؟؟

MOHSEN1230
پنج شنبه 20 آذر 1393, 22:04 عصر
دوست عزیز من این امشب با my sqlنوشتم ببین عکس اش اگه به دردت خورد فایل برات ارسال میکنم
126507

hossein3p2p
جمعه 21 آذر 1393, 22:34 عصر
محسن جان من میخوام اطلاعاتی که ناقص ثبت شدند توی گرید یک ثبت بشن جداگانه
بعدش وقتی که تمام اطلاعات بدستم رسید به صورت کامل ،روی دکمه ویرایش بزنم، نواقص رو کامل کنم و وقتی ثبت نهایی رو زدم داخل گرید دوم ثبت نهایی بشن

iceweek
جمعه 21 آذر 1393, 22:46 عصر
من که آخرش به جوابم نرسیدم دوستان
یه برنامه نویس قدرتمند جوابمو بده لطفا
اگه قصد دارید تعداد پستاتونو زیاد کنید این تاپیک جاش نیست
این تاپیک یه تاپیک حرفه ای و کمیابه
متشکر از دوستان
ادم تو برنامه نویسی وقتی هیچی بلد نیست فکر میکنه برنامش مثل اماتوراست.یکم که کار کنه فکر میکنه شده خدای برنامه نویسی.وقتی واقعا وارد شدی میفهمی بازم هیچی بلد نیستی.الان توی مرحله دومی .:متفکر:
تاپیکت هم تاپیکیه که وقتی یه نفر داره اولین برنامشو مرتبط با پایگاه داده مینویسه این مشکلات براش پیش میاد.
جوابت هم داده شد.
یه فیلد بولین میخوای.اطلاعات باید مرحله اول وارد بشه.بعد بزنی اینسرت بشه.و مقدار بولین false باشه.طرف وقتی برگشت این سطر فراخوانی میشه و سایر الاعات پر میشه و سطر اپدیت میشه و مقدار بولین هم true میشه.خیلی سادست.اگر باز مشکل داری برو یکم درباره طراحی پایگاه داده مطالعه کن.برنامه نویسی مراتب داره.اگر رعایت نکنی وسط کارات دایم به مشکل میخوری.اگر اصولی پیش بری خیلی روون جلو میری.

hossein3p2p
سه شنبه 25 آذر 1393, 21:28 عصر
میشه بیشتر توضیح بدی؟