PDA

View Full Version : جمع دو فیلد و ثبت در فیلد سوم



کاربر مبتدی
شنبه 15 بهمن 1390, 21:47 عصر
با سلام خدمت سروران گرامی برنامه ای به زبان sql میخوام که یک فیلد مثل نام را با فیلدی مثل نام خانوادگی جمع کنه و حاصل رو به صورت اتوماتیک در فیلد نام و نام خانوادگی ثبت کنه . تو ضیح نمی خواهم فیلد compute درست کنم و میخوام بتونم از فیلد سوم به عنوان پرایمری کی یا فوریگان کی بتونم استفاده کنم . متاسفانه در بقیه جوابها به این مساله اشاره نشده بود . نمی دونم منظورم را رسوندم یا نه در ضمن نمی خوام از تریگر استفاده کنم.:خجالت:

baktash.n81@gmail.com
یک شنبه 16 بهمن 1390, 07:40 صبح
سلام

شما با SQL که نمی تونید برنامه بنویسید ... Query می نویسید

شما 4 روش دارید :

1- فیلد محاسباتی
2-تریگر
3-اضافه کردن یک کد که بلافاصله بعد از انجام Insert اجرا بشه ( یا در همون دستور insert ) که این فیلد رو پر کنه
4-یک job که هر چند وقت Run بشه و این کارو انجام بده ...

اگه می خواهید به صورت دستی این کارو انجام بدید یا کاربر با زدن یک کلید این کارو انجان بده Query آن شبیه حالت 4 خواهد بود.

شما روش خودتون رو انتخاب کنید ... و تعریفتون از اتوماتیک رو بیان کنید ...

کاربر مبتدی
یک شنبه 16 بهمن 1390, 13:35 عصر
با تشکر روش اول که نمی شود چون قابل بازیافت به عنوان فورگان کی نیست روش دو هم که نه منظورم از اتوماتیک این بود که بلافاصله بعد از وارد کردن دو فیلد اول فیلد سوم پر شه و غیر قابل تغییر باشه مگر اینکه فیلد اول و دوم تغییر کنه مثل فیلد محاسباتی ولی بدون محدودیتهای اون درضمن من ناشی هستم و اگر بشه سورس برنامه را بنویسید.

in_chand_nafar
یک شنبه 16 بهمن 1390, 13:56 عصر
توی این لینک قبلا توضیح دادم
http://barnamenevis.org/showthread.php?326040-%D9%BE%D8%B1%D9%83%D8%B1%D8%AF%D9%86-%D9%8A%D9%83-%D8%B3%D8%AA%D9%88%D9%86-%D8%A8%D8%B1%D8%A7%D8%B3%D8%A7%D8%B3-%D8%AF%D9%88-%D8%B3%D8%AA%D9%88%D9%86-%D8%AF%D9%8A%DA%AF%D8%B1
برای تکمیل هم به این لینک مراجعه کن
http://www.mssqltips.com/sqlservertip/1702/how-to-create-indexes-on-computed-columns-in-sql-server/
بعد از اینکه Perssitd کردی روی اون فیلد یک Unique Index بساز تا بتونی توی جداول فرزند ازش استفاده کنی در ضمن معمولا از این کار استفاده نمی شود ممکن است ساختار جداولتون نیاز به بازنگری داشته باشه

کاربر مبتدی
یک شنبه 16 بهمن 1390, 17:15 عصر
با تشکر از راهنماییتون:تشویق: کاشکی ساختار این دستور رو هم راهنمایی می کردید.به هر حال باید برم امتحانش کنم و سپاسگذارم.

کاربر مبتدی
چهارشنبه 19 بهمن 1390, 11:29 صبح
توی این لینک قبلا توضیح دادم
http://barnamenevis.org/showthread.php?326040-%D9%BE%D8%B1%D9%83%D8%B1%D8%AF%D9%86-%D9%8A%D9%83-%D8%B3%D8%AA%D9%88%D9%86-%D8%A8%D8%B1%D8%A7%D8%B3%D8%A7%D8%B3-%D8%AF%D9%88-%D8%B3%D8%AA%D9%88%D9%86-%D8%AF%D9%8A%DA%AF%D8%B1
برای تکمیل هم به این لینک مراجعه کن
http://www.mssqltips.com/sqlservertip/1702/how-to-create-indexes-on-computed-columns-in-sql-server/
بعد از اینکه Perssitd کردی روی اون فیلد یک Unique Index بساز تا بتونی توی جداول فرزند ازش استفاده کنی در ضمن معمولا از این کار استفاده نمی شود ممکن است ساختار جداولتون نیاز به بازنگری داشته باشه
با تشکر مجدد کاش همه مثل شما پاسخ آدم را بدهند امتحان کردم کار کرد یه ایرادای کوچیکی داشت ولی دستور جالبی بود

انیشتین
چهارشنبه 19 بهمن 1390, 12:22 عصر
سلام..
دو تا کار دیگه هم میتونی انجام بدید...
1- فیلد اول و دوم رو تو اینترفیس با هم جمع کنی و بعد به دیتا بیس بفرستی... که البته به شخصه خیلی توصیه نمیکنم...
2- روش بهتر این هست که یک روال ذخیره شده بنویسی که دو تا متغیر رو به عنوان آرگومان بگیره و متغیر سوم رو داخل خود روال تعریف کنی و جمع فیلد اول و دوم رو داخل متغیر سومت بذاری و بعد هر سه تا رو با هم اینسرت کنی..البته عمل اینسرت رو هم خود همون روال انجام بده...