PDA

View Full Version : مشکل در بانک اطلاعاتی



omidomidi123
شنبه 03 مرداد 1394, 18:00 عصر
دوستان من میخام فیلد کد بیمار بصورت اتوماتیک همیشه هنگام ثبت بیمار جدید توی textbox وجود داشته باشه و خودم دستی وارد نکنم(همیشه بزرگتر از آخرین کدبیمار که قبلا وارد کردیم).من با یک dataset
و کد SELECT ISNULL(MAX(patientId), 0) +1 FROM tbl_patientInfo , و تابع

private void MaxId()
{
DataSet1TableAdapters.tbl_patientInfoTableAdapter t = new DataSet1TableAdapters.tbl_patientInfoTableAdapter( );
txt_id.Text = t.GetMaxPatientId().ToString();
}

انجام دادم.اما به 2 تا مشکل خوردم.مشکل اول اینکه این فیلد کد بیمار تا 10 بیشتر نمیره.یعنی اگه فیلد کد بیمار 9 باشه و من بخوام ثبت جدید انجام بدم 10 میشه اما بعد 10 دیگه 11 نمیشه و روی 10 میمونه.دوم هم اینکه 1 تا9 پشت هم درج میشن اما به 10 که میرسه به جای اینکه بعد از 9 باشه میره بعد از 1.توی عکسمم مشخصه.
خواستم اگه میشه کمک کنید تا من این مشکلاتا یا با اصلاح این کدها یا کدهای دیگه برطرف کنم.با تشکر

davidrobert
شنبه 03 مرداد 1394, 19:49 عصر
دوست عزیز اطلاعات داخل دیتابیس بود شما روی دیتابیس تغییرات اعمال کردید
اگه این کار رو کرده باشید باعث شده که برنامه بزرگ ترین عدد تا 9 بیاره و وقتی به 9 رسید با مشکل بر خورد کنه.

systam
شنبه 03 مرداد 1394, 22:54 عصر
سلام
میتونی یه فیلد id داریم نوعش عددی هست identity رو هم فعال کنی
که شمارنده ی به صورت اتوماتیک با وارد شدن هر سطر اطلاعات اضافه بشه اینم یک نمونه براتون ضمیمه کردم
موفق باشی

systam
شنبه 03 مرداد 1394, 22:57 عصر
کار های زیادی میشه کرد
مثلا با کد ملی کار کنی که منحصر به فرده
با یک چک کننده ساده میتونی بنویسی برای جلوگیری از تکراری بودن
و کلاس های زیادی وجود داره برای تست قالب کدملی وارد شده

pbm_soy
یک شنبه 04 مرداد 1394, 01:19 صبح
اگر با نوشتن چنین کدی مشکل دارید و نمیتوانید برای هر رکورد جدید یک کد منحصربفرد تولید کنید من هم پیشنهاد دوستمون systam را میدهم از فیلد با مقدار اتوماتیک استفاده کنید
یعنی یک فیلد از نوع number بگیرید و خاصیت IsIdentity آنرا فعال کنید
حتی اگر بخواهید این شماره ها از عدد خاصی شروع شوند میتوانید خاصیت seed آنرا مقدار دهی کنید

بهترین روش همین روش است بدون نوشتن هیچ کدی کار شما را راه میاندازد ولی همانطور که دوستان گفتند برای رفع این مشکل راههای زیادی وجود دارد
* همان روش خودتون که هربار آخرین عدد را پیدا کنید و به آن یکی اضافه کنید
* استفاده از کد ملی بیمار
* استفاده از ترکیب تاریخ و کد بخشی که در آن بستری میشود و کد نوع جنسیت و یک مقدار دیگر (در واقع یک سیستم کدگذاری خودتان ابداع کنید مانند شماره های دانشجوئی در سیستمهای آموزش دانشگاهها)
و روشهای دیگر

pbm_soy
یک شنبه 04 مرداد 1394, 01:24 صبح
در ضمن اون isnull برای چیست؟

کافی بود همچین چیزی مینوشتید
select max(patientId) as mymax from myTable

حالا مقدار فیلد mymax را از dataset ویا هرچیز دیگه ای که دارید بگیرید و به آن یکی اضافه کنید و نمایش دهید. (فقط مطمئن شوید که مقدار آن عددی باشد)