PDA

View Full Version : سوال: نحوه کپی چند فیلد از جدولی که با جدول دیگر Join هست



netfa.ir
جمعه 28 آبان 1389, 20:26 عصر
با سلام دوستان.
چطوری میشه مثلا از فیلد 1 تا 10 یک جدول رو در همون جدول که با کلید اصلی با جدول دیگه ای در ارتباط هست رو جوری کپی کرد که هم اطلاعات جدول اصلی در جدول اصلی کپی شه و هم اطلاعات جدولی که باهاش در ارتباطه هم کپی بشن. (با کد جدید که مثلا کد آخر 10 باشه به ترتیب فیلدهای کپی شده بهش 11-12-13 و ...)

امیدوارم رسونده باشم.

یا علی

Reza_Yarahmadi
شنبه 29 آبان 1389, 07:52 صبح
نميدونم به چه دليل قصد چنين كاري داريد ، اگر علت اين كار رو توضيح بديد ممكنه راه حل ديگ اي هم براش وجود داشته باشه.
براي كپي كردن توي خودش
Insert Into TableName (
ID,
Field1,
Field2,
...)
Values
Select
Id+10,
Field1,
Field2,
...
From
TableName
Where
Id in (1,2,3,4,5,6)
براي ساير جداول هم ميتونيد بصورت بالا عمل كنيد.

netfa.ir
شنبه 29 آبان 1389, 13:33 عصر
ممنون جناب Reza_Yarahmadi از پاسختون.
حقیقتش برای سیستمی که دارم می خوام قابلیت کپی درخواستهای یک کاربر رو بدم.
چون در سیستم من مثلا یک کاربر در هر ماه ممکنه 2 بار درخواست سیستم رو بده. واسه همین می خوام اپراوتر مجبور نباشه همش محتوی رو وارد کنه. بلکه این اطلاعات با کد جدید کپی بشن.

Reza_Yarahmadi
شنبه 29 آبان 1389, 13:56 عصر
بازم معلوم نشد دقيقا قصد چه كاري داريد!! كاربر كيه؟ چه دسترسي داره؟ اين درخواست چيه؟ درخواست براي چه چيزي يا چه كاريه؟ ...؟
اگر قصد داريد كاربر بتونه يك درخواست رو تكرار كنه تا فرضا مدير بتونه اونو توي ليست درخواستهاي جديد ببينه ، به جاي اينكه درخواست جديدي درست كنيد بهتر اينه كه يك فيلد براي اين كار بذاريد تا با توجه به اون فيلد درخواست ها به مدير نمايش داده بشه.
اگر هم ميخوايد كاربر از پر كردن فيلدها خلاص بشه بهتره اول پنجره درخواست باز بشه و فيلدهاي اونو با مقدار درخواست مورد نظر پركنيد بعد اگر كار تمايل به تغييري داشت كه اعمال ميكنه اگر هم نخواست دكمه ثبت رو بزنه. اينطوري احتمال خطاي برنامه و كاربر به حداقل ميرسه.
(اينهايي كه گفتم حدسيات من در مورد كارتون بود)

netfa.ir
شنبه 29 آبان 1389, 15:28 عصر
بازم معلوم نشد دقيقا قصد چه كاري داريد!! كاربر كيه؟ چه دسترسي داره؟ اين درخواست چيه؟ درخواست براي چه چيزي يا چه كاريه؟ ...؟
اگر قصد داريد كاربر بتونه يك درخواست رو تكرار كنه تا فرضا مدير بتونه اونو توي ليست درخواستهاي جديد ببينه ، به جاي اينكه درخواست جديدي درست كنيد بهتر اينه كه يك فيلد براي اين كار بذاريد تا با توجه به اون فيلد درخواست ها به مدير نمايش داده بشه.
اگر هم ميخوايد كاربر از پر كردن فيلدها خلاص بشه بهتره اول پنجره درخواست باز بشه و فيلدهاي اونو با مقدار درخواست مورد نظر پركنيد بعد اگر كار تمايل به تغييري داشت كه اعمال ميكنه اگر هم نخواست دكمه ثبت رو بزنه. اينطوري احتمال خطاي برنامه و كاربر به حداقل ميرسه.
(اينهايي كه گفتم حدسيات من در مورد كارتون بود)


باز هم ممنون از توجهتون.
کلا ببینید من می خوام این امکان رو بدم به اپراتور که مثلا با کلیک رو یک یا چند ردیف از دیتاگریدویو تو برنامم و زدن گزینه ی کپی این مقدارها (که از دیتا بیس استخراج شده) مجددا در دیتا بیس تکرار بشه البته با کد جدید.

فرض کنید من جدوالی مثل زیر دارم که با هم در ارتباط هستن:

Partner
با فیلدهای
ID Code Name
که Code کلید اصلی هست و با جدول زیر رابطه داره:

Request
با فیلدهی
ID Code Req

که اینهم با جدول Status رابطه داره.

حالا می خوام عمل کپی مثلا به این شکل انجام بشه.

از جدول Partner نام همکار انتخاب بشه و تمامی رکوردهاش و تمام رکوردهایی که در دیگر جدوال در ارتباط با این جدول هستن با یه کد جدید (و حالا تاریخ جدید (که اضافه خواهم کرد فیلد رو) مجددا به صورت همین روابط کپی بشن.

ممنون از توجهتون.

Reza_Yarahmadi
شنبه 29 آبان 1389, 15:44 عصر
اول بايد يك منطق براي درست كردن كد جديد داشته باشيد به طوري كه مديريت كردن اون مشكلي درست نكنه ، بعد توي يك حلقه براي تك تك كدهاي انتخابي كد جديد توليد كنيد و با استفاده از دستوري كه پست اول گفتم مقدار ركوردها رو (به اضافه داده هاي جديد) كپي كنيد.
ميشه گفت اصلي ترين بخش كار توليد كد جديد است. منطقي كه در پست اول گفتيد مشكلات زيادي در آينده به وجود مياره. يك راه حل ميتونه اين باشه كه در هر مرحله بزرگترين كد ذخيره شده رو پيدا كنيد و يكي بهش اضافه كنيد.