PDA

View Full Version : مبتدی: اشکال فنی در برنامه



mnasrin
دوشنبه 09 آذر 1388, 19:58 عصر
یک برنامه دارم می نویسم که یک قسمتش به این شکل است که یک فیلد دارد به نام شماره قبض که
شماره قبض ها يكي يكي به ترتيب بالا مي رود .اگر راننده انتخابي بومي بود اولين قبض شماره اش باشد 1
اگر غير بومي بود اولين قبض شماره اش باشد 100و به همين ترتيب شماره قبض راننده دوم غير بومي 101و همینطوری شماره قبض ها یکی یکی بالا رود
مشکل من اینجاست که برای شماره قبض تنها یک فیلد داریم واین که از کجا بدونم آخرین شماره قبض بومی و یا غیر بومی چی بوده است؟

دوستان لطفا کمک کنید.
یا یک برنامه نمونه برایم بگذارید.
ممنون

mnasrin
دوشنبه 09 آذر 1388, 20:38 عصر
دوستان کمک کنید لطفا

slashslash2009
دوشنبه 09 آذر 1388, 20:51 عصر
شما باید با یک دستور select بزرگترین مقدار را پیدا کتید ولی فکر کنم قبلا به شما یا یه کی دیگه که همین مشکلو داشت و میخواست برنامه تاکسی تلفنی بنویسه اینو گفته باشم به هر حال:
اینم از کدش


dt5 = consql5.MySelect("select MAX(factor)maximum from output");
comboBox14.DataSource = dt5;
comboBox14.DisplayMember = "maximum";

h_zamani
دوشنبه 09 آذر 1388, 21:13 عصر
سلام دوست عزیز . من این برنامه رو براتون نوشتم ، البته تو محیط کنسول . فقط یک نکته ، این برنامه ای که شما میگین تا هنگامی کارایی داره که تعداد کاربران بومی از 100 نفر کمتر باشه یعنی اگه تعدادشون به بیشتر از صد نفر برسه اونوقت ممکنه با غیر بومیها قاطی بشن واسه همین من دستور while رو تو برنامه طوری قرار دادم که تا هنگامی کار کنه که تعداد کاربران بومی حداکثر 99 تا باشه و به محض اینکه تعداد کاربران بومی به مرزی رسید که امکان مشابهت در شماره ی قبض با افراد غیر بومی شد برنامه کارش تموم بشه ..برنامه با yes و no کار میکنه، در صورتی که y , وارد شد یعنی بومی و در صورتی که n یعنی غیر بومی:


using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char answer;
int i = 1, j = 100;
while (i <100 )
{
Console.Write("are you local or not?(y/n)");
answer = Convert.ToChar(Console.ReadLine());
if (answer == 'y' || answer == 'Y')
{
Console.WriteLine("{0}",i);
++i;

}
else
if (answer=='n' || answer =='N')
{
Console.WriteLine("{0}",j);
++j;
}
}
}
}
}

shahab_ss
سه شنبه 10 آذر 1388, 08:35 صبح
شما باید یک فیلد کمکی استفاده کنی که مشخص کنه قبضی که ثبت میشه مربوط به نوع بومی هست یا خیر.
بعد از دستور Max در SQL به اینصورت استفاده کنی که آخرین ID رو برای هر کدوم اونها برگردونه.

mnasrin
پنج شنبه 19 آذر 1388, 14:55 عصر
دوستان اشکال من هنوز رفع نشده
کسی دیگه نظری در این مورد نداره؟؟؟؟؟؟؟

Sirwan Afifi
پنج شنبه 19 آذر 1388, 15:48 عصر
سلام دوست عزیز اینکه کاری نداره
فقط کافیه آخرین فیلدتو با استفاده از دستور Last چک کنی و با یه دستور if چکش کنی که مقدارش چقدره
البته از آخرین مقدار فیلدت یه Query بگیر

mahdi87_gh
پنج شنبه 19 آذر 1388, 15:53 عصر
همانطور که دوستمان shahab گفتن شما باید از یک فیلد کمکی استفاده بکنید.میتونی نوعش رو bit انتخاب کنی که فقط دوحالت قبول میکنه. مثلا 0 برای بومی و 1 برای غیربومی.موقع ثبت کردن افرادت هم میتونی بومی و غیر بومی رو توی یه کومبوباکس بزاری و مقدار selectedIndex رو واسه اون فیلد ثبت کنی.
برای پیدا کردن بزرگترین مقدار به ازای بومی ها کافیه یه شرط توی دستور select بزاری به این ترتیب
select max( faktor) from table where bomi=0
یا برای غیر بومی ها مقدار رو با 1 مقایسه کنی.
موفق باشی

hojjatshariffam
پنج شنبه 19 آذر 1388, 17:37 عصر
دوست عزیز شما باید تو فرمت یک چک باکس یا هر کنترل دیگری برای بومی یا غیر بومی بودن رانندت بزاری و برحسب اون کنترل دو نوع دستور اس کیو ال رو اجرا کنی
اولی برای بومی که میشه این


Select Max(Code) From Tbl_Name Where Code <100

و برای دومی می تونی از کد زیر استفاده کنی


Select Max(Code) From Tbl_Name Where Code >100

دستر اولی ماکزیمم کدهای کمتر از 100 رو برمیگردونه و دمی ماکزیمم کد های بیشتر از 100 رو
بعدش میتونی یکی به آن اضافه کنی و سپی ردیف جدید رو با اون کد درج کنی
البته باید آینده نگری داشته و بازه کد ها را بیشتر کنی چون صد تا ممکه به همین زودیا پر بشه

ولی در کل این روش برای کد بندی ، روش خوبی نیست
روش بهتر همون استفاده از یک فیلد دیگر بنام نوع راننده است که می تونی بعدا در نمایش ها و لیست گیری هات با توجه به اون فیلد ، لیستتو مرتب کنی

موفق باشی

mnasrin
جمعه 20 آذر 1388, 09:56 صبح
دوستان عزیز
کسی نمونه برنامه ای از این جور مسئله نداره؟
پیشاپیش ممنون

slashslash2009
جمعه 20 آذر 1388, 10:51 صبح
مثل اینکه هیچ تلاشی نکردی برایه رفع مشگلت اینهمه بچه ها مثال زدن برات

mahdi87_gh
جمعه 20 آذر 1388, 22:07 عصر
خوب بود حداقل یکم تلاش میکردید
اگر بازهم نتونستید براتون مثال می زنیم