PDA

View Full Version : سوال: خواندن نام ستون جدول دیتابیس و تابع SUM



morteza271
دوشنبه 10 آبان 1389, 11:37 صبح
سلام دوستان...
من توی برنامم گذاشتم وقتی یه کاربر اضافه میشه یه ستون به یکی از جدولای دیتابیسم اضافه بشه،که اسم ستون رو هم id همون کاربر میذارم...
حالا برای این که تشخیص بدیم این ستون مال کدوم کاربر باید اسم ستون رو داشته باشم،چطوری میشه این کارو کرد؟

یه سوال دیگه هم داشتم در مورد تابع SUM از SQL...
من وقتی تابع SUM رو بر روی یکی از ستون های جدولم صدا میزنم خطلای Owerflow میده که دلیلشم اینه که مجموع داده های داخل اون ستون خیلی زیاد میشه!!!باید چیکار کنم؟

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

sokote_bi_payan
دوشنبه 10 آبان 1389, 15:16 عصر
به نام خدا
سلام
بعد اون موقع اگه 3000000 تا کاربر داشته باشی می خوای چیکار کنی ؟ ستون اضافه می کنی یا رکورد ؟
اصلا واسه چی این کارو می کنی؟

dataking
دوشنبه 10 آبان 1389, 15:20 عصر
سلام
دوستمون صحیح می فرمایند
با feildname نام فیلد قابل دسترسیه

morteza271
چهارشنبه 12 آبان 1389, 09:54 صبح
بعد اون موقع اگه 3000000 تا کاربر داشته باشی می خوای چیکار کنی ؟ ستون اضافه می کنی یا رکورد ؟


ممنونم...
تعداد كاربرا ماكزيمم به 30 نفر ميرسه و بيشتر نميشه!!!
خوب به نظرتون چيكار كنم؟؟؟

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

morteza271
چهارشنبه 12 آبان 1389, 10:08 صبح
براي اين منظورم رو بهتر توضيح داده باشم اين عكس رو ميذارم!
من ميخوام جدول كالاها به صورت زير باشه...
البته ستون هاي كاربرا بعد از اضافه شدن كاربر به جدول اضافه ميشه و پيش فرض مقدار صفر رو دارند...
ممنون ميشم كمكم كنيد...
http://www.pic.iran-forum.ir/images/uhk5bkwxs0lsq3r1io9d.jpg

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 10:09 صبح
به نظر من اگه يك جدول درست كنيد كه فيلدهاي زير رو داشته باشه كارايي بالاتري داره
شناسه كاربر ، شناسه (يا نام) كالا ، تاريخ واگذاري ، تاريخ برگشت ، ...
اينطوري هميشه يگ گزارش كامل از روند اين عمليات داريد.
ولي اگر قصد داريد به روش خودتون عمل كنيد دستور زير ليست فيلدهاي يك جدول رو بهتون ميده و با join كردن اين جدول با جدول كاربران ميتونيد به اطلاعات ديگه كاربر دست پيدا كنيد.

Declare @TableId bigint
Select @TableId = Object_Id From sys.objects Where type = 'U' AND Name = 'TableName'
Select Name From sys.Columns Where Object_Id = @TableId

mahdi87_gh
چهارشنبه 12 آبان 1389, 10:28 صبح
به نظر من اگه يك جدول درست كنيد كه فيلدهاي زير رو داشته باشه كارايي بالاتري داره
شناسه كاربر ، شناسه (يا نام) كالا ، تاريخ واگذاري ، تاريخ برگشت ، ...
اينطوري هميشه يگ گزارش كامل از روند اين عمليات داريد.
ولي اگر قصد داريد به روش خودتون عمل كنيد دستور زير ليست فيلدهاي يك جدول رو بهتون ميده و با join كردن اين جدول با جدول كاربران ميتونيد به اطلاعات ديگه كاربر دست پيدا كنيد.

Declare @TableId bigint
Select @TableId = Object_Id From sys.objects Where type = 'U' AND Name = 'TableName'
Select Name From sys.Columns Where Object_Id = @TableId

روش اصولی برای هدفی که شما دارین رو جناب Reza_Yarahmadi توضیح دادن. داده ها رو بشکل صحیح ذخیره کنید تا بتونید بشکل صحیح ازشون گزارش بگیرید

morteza271
یک شنبه 16 آبان 1389, 09:16 صبح
دوستان ازتون ممنونم با توجه به راهنماییتون مشکلم حل شد...
ولی در مورد تابع SUM چیزی نگفتین!!!
مشکلم این بود که وقتی تابع SUM رو روی یکی از ستونهای جدولم صدا میزنم خطا میده و میگه که از Int32 بزرگتر شده!!!
قبلا به این مشکل برنخوردم،باید چیکار کنم؟؟
حالا یه سوال دیگه هم دارم:
چطوری میشه یه MessageBox رو طوری تنظیم کرد که بعد از چند ثانیه خودش بسته بشه و نیازی نباشه حتما کاربر دکمه Ok رو بزنه؟
ممنونم

Reza_Yarahmadi
یک شنبه 16 آبان 1389, 09:49 صبح
مشکلم این بود که وقتی تابع SUM رو روی یکی از ستونهای جدولم صدا میزنم خطا میده و میگه که از Int32 بزرگتر شده!!!
قبلا به این مشکل برنخوردم،باید چیکار کنم؟؟
فيلد مورد نظر رو از نوع bigint بگيريد ، اگر بازهم مشكل پيدا ميكنه بايد راه حل ديگه اي براش پيدا كنيد (فرضا اينكه بصورت رشته اي دخيره كنيد و يك تابع بنويسيد كه كار Sum رو انجام بده)

چطوری میشه یه MessageBox رو طوری تنظیم کرد که بعد از چند ثانیه خودش بسته بشه و نیازی نباشه حتما کاربر دکمه Ok رو بزنه؟
براي MessageBox دات نت فكر نميكنم بشه چون بصورت ShowDialog نمايش ميده (توي اين حالت تا وقتي Messagebox در حال نمايش است كدهاي بعد از Show اجرا نميشن چه برسه ...) مگر اينكه هندل پنجره MessageBox و بدست بياريد و با استفاده از SendMessage اونو ببنديد (چندان روش جالبي نيست!).
ولي ميتونيد به راحتي يك MessageBox سفارشي براي خودتون درست كنيد كه اين قابليت رو داشته باشه.

morteza271
یک شنبه 16 آبان 1389, 11:18 صبح
ولي ميتونيد به راحتي يك MessageBox سفارشي براي خودتون درست كنيد كه اين قابليت رو داشته باشه.

ممنونم...
میشه بگید چطوری میشه MessageBox سفارشی درست کرد؟میشه کدشو برام بذارید؟ممنون میشم...

Reza_Yarahmadi
یک شنبه 16 آبان 1389, 11:33 صبح
MessageBox سفارشی چيزي جز يك يوزر كنترل (در واقع يوزر فرم) نيست! توي همين سايت چندين نمونه ازش وجود داره. به يكيشون يك نگاه بندازيد بعد به راحتي ميتونيد اونو تغيير بديد.
نميدونم به چه دليل ميخوايد اين كار رو انجام بديد ولي فكر كنم يوزر كنترل زير بتونه به نوعي كارتون رو راه بندازه.
http://barnamenevis.org/forum/showpost.php?p=1126016&postcount=603
براي استفاده يك پنل با آيتمهايي كه ميخوايد درست كنيد و توسط كنترل بالا نمايش بديد بعد از چند ثانيه هم اونو ببنديد.

robat7
یک شنبه 16 آبان 1389, 15:49 عصر
اگر می خواهی فقط متنی را به کاربر برای مدتی نشان دهی چرا از notifyIcon استفاده نمی کنی؟

کامیاب باشی