PDA

View Full Version : ارسال تعداد زیادی پارامتر به جدول فرزند



blake_daniel
جمعه 22 مرداد 1395, 22:26 عصر
درود خدمت دوستان عزیز
مشکل من اینجاست که یه جدول قبض دارم که هر شماره قبض میتونه تعداد زیادی قطعه داشته باشه(جدول پدر قبض و جدول قطعه فرزند)
هر قطعه یه سری مشخصات داره که با CheckBox مشخص میشه و برا ارسال این مشخصات به SQL باید اونا رو تبدیل به String کنم و وقتی میخام
این اطلاعات با استفاده از پارامتر و Stored Procedure به دیتابیس ارسال کنم(در یک Transaction)باید دستورات زیادی هم توی C# و هم توی SQL بنویسم
میخاستم ببینم راه حل این کار چیه و چگونه میشه مثلا با استفاده از تعریف 10 پارامتر هر 10 تا قطعه رو یکباره ارسال کرد(به جای تعریف 100 پارامتر!!!)
توی انجمن هم سرچ کردم یه سری تاپیک در مورد پاس دادن از یه تیبل و حلقه و این چیزا اومد ولی فکر میکنم کاری که من میخام از این روشها قابل انجام شدن نیست!
ممنون میشم اگر از دوستان کسی نظری داره مطرح کنه
بدرود

blake_daniel
شنبه 23 مرداد 1395, 18:14 عصر
کسی نبود جواب بده سوال ما رو؟؟!!

blake_daniel
یک شنبه 24 مرداد 1395, 11:50 صبح
همچنان منتظریم!!!!

hamid_hr
یک شنبه 24 مرداد 1395, 11:57 صبح
خب طرح جدولا رو بزار
یه عکس از صفحه نرم افزار هم بزار
هیچکی نمیتونه حدس بزنه جدولات چطوریه یا صفحه ای که میخوای ذخیره کنی چطوریه

blake_daniel
یک شنبه 24 مرداد 1395, 12:29 عصر
خب طرح جدولا رو بزار
یه عکس از صفحه نرم افزار هم بزار
هیچکی نمیتونه حدس بزنه جدولات چطوریه یا صفحه ای که میخوای ذخیره کنی چطوریه

درود
این عکس جدولی که میخام اطلاعات رو درونش ذخیره کنم (http://uupload.ir/files/1amz_1.jpg)
اینم عکس قسمتی از نرم افزار که اطلاعات این جدول رو ذخیره می کنه (http://uupload.ir/files/vpqy_2.jpg)
اگر بخوام با ارسال پارامتر میتونم این کار رو انجام بدم ولی تعداد خیلی زیادی پارامتر هم درون نرم افزار و هم پروسیجر میشه!!!
به نظرم انجام این کار با دیتا تیبیل هم یه کار اضافه هست(که یه جدول اضافه توی دیتابیس ایجاد کنم که باز دوباره از اونجا پاس بدم به پروسیجر و درون جدول اصلی ذخیره بشه!)

blake_daniel
دوشنبه 25 مرداد 1395, 08:03 صبح
همچنان منتظر نظر و پاسخ دوستان هستیم

En_MK
دوشنبه 25 مرداد 1395, 09:07 صبح
تمام کارهایی که میگم یکبار انجام میشه برای همیشه
1-در سورس برنامه تون یک Entity تعریف م کنید شامل فیلدهایی که ستونهاتون رو پوشش بده
2-لیستی از این Entity را پر میکنید و در یک حلقه هربار یک رکوردشو به SP پاس میدید
تعداد ستونها کلااااا یازده تاست...جوری گفتید زیاد من قبل از باز کردن عکس فکر کردن 30-40 تا ستون دارید
بااین حال من سرچ کردم فقط امکانش هست برای یک پاارمتر در SP چندین Value را بصورت XML فرستاد اما چیزی برای چندین پارامتر پیدا نکردم

blake_daniel
دوشنبه 25 مرداد 1395, 09:21 صبح
تمام کارهایی که میگم یکبار انجام میشه برای همیشه
1-در سورس برنامه تون یک Entity تعریف م کنید شامل فیلدهایی که ستونهاتون رو پوشش بده
2-لیستی از این Entity را پر میکنید و در یک حلقه هربار یک رکوردشو به SP پاس میدید
تعداد ستونها کلااااا یازده تاست...جوری گفتید زیاد من قبل از باز کردن عکس فکر کردن 30-40 تا ستون دارید
بااین حال من سرچ کردم فقط امکانش هست برای یک پاارمتر در SP چندین Value را بصورت XML فرستاد اما چیزی برای چندین پارامتر پیدا نکردم

درود
ممنونم بابت پاسخ
در مورد تعداد زیاد پارامتر،شما اگر به عکس نرم افزار توجه کنین 6 عدد قطعه هست حالا شما فرض کنین یک مشتری 11 تا قطعه برا ثبت بیاره اونوقت 11 * 11 = 121 پارامتر!!!!
تازه برای تمام Checkbox ها هم باید یه استرینگ تعریف بشه اونوقت متوجه میشین که چی رو دارم میگم!
و اونجایی که گفتین لیستی از Entity ها رو هربار برا SP ارسال کنم یعنی منظورتون این هست که یه حلقه تعریف میکنم به تعداد قطعات و هر سری
اطلاعات هر قطعه رو درون پارامترها قرار میدم و Execute میکنم؟؟؟
اونوقت چندین بار باز و بسته کردن کانکشن مشکلی ایجاد نمیکنه(از لحاظ امنیتی)؟؟!!

En_MK
دوشنبه 25 مرداد 1395, 10:12 صبح
نه نه
یه Entity اینطوری تعریف میکنید که Id , ParentId,ItemName,param1,param2 معادل ستونهای جدولتون در دیتابیس هست



public class Entity
{
[DataMember]
public int Id { get; set; }
[DataMember]
public int ParentId { get; set; }
[DataMember]
public String ItemName { get; set; }
[DataMember]
public bool param1 { get; set; }
[DataMember]
public int param2 { get; set; }


}


شما یه لیست از این Entity که مثلا مشخصات 110 تا قطعه درش هست را میفرست به لایه DataAccess و یه بار کانکشن باز میکنید
این اطلاعات را در قالب XML میفرستید برای SP (http://www.c-sharpcorner.com/UploadFile/a5470d/using-xml-serialization-with-C-Sharp-and-sql-server/)

blake_daniel
دوشنبه 25 مرداد 1395, 11:29 صبح
نه نه
یه Entity اینطوری تعریف میکنید که Id , ParentId,ItemName,param1,param2 معادل ستونهای جدولتون در دیتابیس هست



public class Entity
{
[DataMember]
public int Id { get; set; }
[DataMember]
public int ParentId { get; set; }
[DataMember]
public String ItemName { get; set; }
[DataMember]
public bool param1 { get; set; }
[DataMember]
public int param2 { get; set; }


}


شما یه لیست از این Entity که مثلا مشخصات 110 تا قطعه درش هست را میفرست به لایه DataAccess و یه بار کانکشن باز میکنید
این اطلاعات را در قالب XML میفرستید برای SP (http://www.c-sharpcorner.com/UploadFile/a5470d/using-xml-serialization-with-C-Sharp-and-sql-server/)

امتحان میکنم و بهتون اطلاع میدم
بازم ممنون بابت وقتی که گذاشتین

blake_daniel
چهارشنبه 27 مرداد 1395, 21:44 عصر
نه نه
یه Entity اینطوری تعریف میکنید که Id , ParentId,ItemName,param1,param2 معادل ستونهای جدولتون در دیتابیس هست



public class Entity
{
[DataMember]
public int Id { get; set; }
[DataMember]
public int ParentId { get; set; }
[DataMember]
public String ItemName { get; set; }
[DataMember]
public bool param1 { get; set; }
[DataMember]
public int param2 { get; set; }


}


شما یه لیست از این Entity که مثلا مشخصات 110 تا قطعه درش هست را میفرست به لایه DataAccess و یه بار کانکشن باز میکنید
این اطلاعات را در قالب XML میفرستید برای SP (http://www.c-sharpcorner.com/UploadFile/a5470d/using-xml-serialization-with-C-Sharp-and-sql-server/)

درود
دوست عزیز من کاری که گفتین رو انجام دادم ولی بر خلاف اون چیزی که فکر میکردم روش شما یه پیچیدگی هم به مشکلی که من داشتم اضافه کرد!!!! :لبخند:
من مشکلم اینه که نمیخام برا یه قطعه ۱۰ بار پارامتر تعریف کنم(یا ۱۰ تا Entity رو ارسال کنم!)
بذارین با یه مثال بگم من مشکلم کجاست
فرض کنین یه جدول دانش آموز داریم و یه جدول درس(که ارتباط یک به چند دارن یعنی هر دانش آموز میتونه تعداد زیادی درس داشته باشه)
من میخام کدنویسی جوری باشه که برا اضافه کردن ۱۰ تا درس واسه یه دانش آموز نیاز به تعریف ۱۰ تا پارامتر نباشه
یعنی یک پارامتر درس تعریف کنم و هر ۱۰ تا درس رو توسط همون یدونه پارامتر در یکبار ذخیره شدن به SP بفرستم تا ذخیره بشه
نمیخام هم توی برنامه و هم توی SP تعداد تعریف پارامتر ها زیاد بشه
چیزی برا این مورد به ذهنتون میرسه
ممنون و بدرود

blake_daniel
پنج شنبه 28 مرداد 1395, 12:20 عصر
بازم منتظر نظر دوستان هستیم! :لبخندساده:

general67
جمعه 29 مرداد 1395, 20:34 عصر
سلام.
شما باید از روش کد دهی باینری استفاده کنید.
خیلی هم راحته:لبخندساده:
بزار واسط یه مثال بزنم.فرض کن تو دیتا بیس یه جدول داریم که مربوط به مشتریان است.اگر بخواهیم فعال بودن و مقدار خرید بیش از 100000 و در ماه اخیر شفارشی را انجام داده است و یا ....
باید به هرکدوم یک فیلد تعریف کنیم.اما با روش که flag نام داره به راحتی میتونیم با تعریف تنها یک فیلد از نوع باینری این کار رو انجام بدیم.
مثال:اگر به ترتیب 1 و 0 و 1 و 0 باشد.در واقع اینطوری در جدول ذخیره بشه.میتونی در کدت به اینصورت که تبدیل کنی به ده دهی میتونی بفهی که مشتری چه کار کرده.

blake_daniel
شنبه 30 مرداد 1395, 16:20 عصر
سلام.
شما باید از روش کد دهی باینری استفاده کنید.
خیلی هم راحته:لبخندساده:
بزار واسط یه مثال بزنم.فرض کن تو دیتا بیس یه جدول داریم که مربوط به مشتریان است.اگر بخواهیم فعال بودن و مقدار خرید بیش از 100000 و در ماه اخیر شفارشی را انجام داده است و یا ....
باید به هرکدوم یک فیلد تعریف کنیم.اما با روش که flag نام داره به راحتی میتونیم با تعریف تنها یک فیلد از نوع باینری این کار رو انجام بدیم.
مثال:اگر به ترتیب 1 و 0 و 1 و 0 باشد.در واقع اینطوری در جدول ذخیره بشه.میتونی در کدت به اینصورت که تبدیل کنی به ده دهی میتونی بفهی که مشتری چه کار کرده.

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