PDA

View Full Version : بزرگترین id در جدول database



negar222
شنبه 27 شهریور 1395, 21:05 عصر
سلام
من داخل tableAdapter کدی نوشتم که بزرگترین id جدول رو نشون میده و یکی بهش اضافه میکنه ولی فقط تا id 9 رو تشخیص میده..


SELECT ISNULL(MAX(CodeCustomer),0)+1 FROM tbl_customer



ممنون میشم راهنماییم کنید..

mrprestige
شنبه 27 شهریور 1395, 21:21 عصر
عرض سلام و وقت بخیر خدمت شما ، شما از این طریق میتونید بزرگترین مقدار ستون رو بهتون نمایش و در انتها یک واحد به اون اضافه کنید

SELECT MAX(CodeCustomer)+1 FROM tbl_customer;

negar222
شنبه 27 شهریور 1395, 21:29 عصر
عرض سلام و وقت بخیر خدمت شما ، شما از این طریق میتونید بزرگترین مقدار ستون رو بهتون نمایش و در انتها یک واحد به اون اضافه کنید

SELECT MAX(CodeCustomer)+1 FROM tbl_customer;



سلام، ممنون از پاسختون.. ولی تنها تا id 9 رو تشخیص میده و یکی بهش اضافه میکنه.. توی جدولِ دیتابیس بعد از یک 10، 11، 12، و... و بعد از دو 20، 21، 22و... و همینطور تا آخر قرار میگیره که شاید بخاطر همین بزرگترین رو بعد از 9 پیدا نمیکنه که البته مقادیر دیتابیس رو نزولی مرتب کردم و یکی به اولین ستون مربوط به id اضافه کردم که باز هم تا 9 رو تشخیص داد...

mrprestige
شنبه 27 شهریور 1395, 21:41 عصر
متوجه فرمایشتون نشدم . یعنی چی بعد از
بعد از یک 10، 11، 12،و بعد از دو 20، 21، 22و... این یک و دو. چی هستن ؟

negar222
شنبه 27 شهریور 1395, 21:54 عصر
متوجه فرمایشتون نشدم . یعنی چی بعد از
بعد از یک 10، 11، 12،و بعد از دو 20، 21، 22و...
این یک و دو. چی هستن ؟


ببینید من یک جدول توی دیتابیس دارم که اطلاعات مشتریان داخلش هستش که هرکدوم id مخصوص به خود دارند... توی برنامه هم یک فرم دارم که کاربر اطلاعات مشتریان رو وارد میکنه که من میخوام هربار که این فرم باز میشه در قسمت کد مشتری آخرین id از جدول خونده بشه و یکی بهش اضافه بشه و دیگه لازم نباشه کاربر کد مشتری رو وارد کنه.. که برای این کار کد بالارو نوشتم که بعد از اینکه کاربر مثلاً اولین مشتری رو وارد کرد کد مشتری 2 میشه و تا آخر.. ولی این کد تا id 9 رو تشخیص میده..

ممنون که وقت میگذارید..

mrprestige
شنبه 27 شهریور 1395, 22:44 عصر
خب در اینطوری نمیشه تشخیص داد که مشکل از کجاس بعد اینکه اون دستور اولتون حس میکنم اشتباهه چون برای من اصلا اجرا نشد دستور صحیح همونی بود که در پست قبل فرستادم ولی باز میفرمایید مشکل برطرف نشد . شما یه Capture از دیزاین جدولتون به همراه کد کاملی که مربوط به این قسمت هست رو بفرستید تا جزئی تر بنده یا باقی دوستان وارد این قسمت بشیم تا ببینیم مشکل از کجاست شاید باقی دوستان راهکارهای مناسبتری رو ارائه دادند .


پیروز و موفق باشید .

reza_ali202000
شنبه 27 شهریور 1395, 23:03 عصر
سلام
من داخل tableAdapter کدی نوشتم که بزرگترین id جدول رو نشون میده و یکی بهش اضافه میکنه ولی فقط تا id 9 رو تشخیص میده..


SELECT ISNULL(MAX(CodeCustomer),0)+1 FROM tbl_customer



ممنون میشم راهنماییم کنید..
id از نوع nvarchar هست احتمالا برا همین max میاد بزرگترین رشته رو بر اساس اولین حرف پیدا میکنه.

negar222
شنبه 27 شهریور 1395, 23:04 عصر
private void frmCustomer_Load(object sender, EventArgs e)
{
this.tbl_moshtariTableAdapter.Fill(this.dataSet1.t bl_moshtari);
CodeCustomer.Text = tbl_moshtariTableAdapter.MaxIDCustomer().ToString( );
}
private void btnInsertCustomer_Click(object sender, EventArgs e)
{
try
{
if (CodeCustomer.Text == "")
errorProvider1.SetError(CodeCustomer, "لطفاً کد مشتری را وارد نمائید..");
else if (FamiliCustomer.Text == "")
errorProvider1.SetError(FamiliCustomer, "لطفاً فامیلی مشتری را وارد نمائید..");
else
{
MessageBox.Show("مشخصات مشتری با موفقیت ثبت گردید..", "ثبت مشتری", MessageBoxButtons.OK, MessageBoxIcon.Information);
tbl_moshtariTableAdapter.InsertQuery1(CodeCustomer .Text, NameCustomer.Text, FamiliCustomer.Text, TellCustomer.Text, AddressCustomer.Text);
tbl_moshtariTableAdapter.Fill(dataSet1.tbl_moshtar i);
AddressCustomer.ResetText();
NameCustomer.ResetText();
FamiliCustomer.ResetText();
CodeCustomer.Text = tbl_moshtariTableAdapter.MaxIDCustomer().ToString( );
TellCustomer.ResetText();
errorProvider1.Clear();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}


جدول:

142660

mr.sirwan
شنبه 27 شهریور 1395, 23:17 عصر
private void frmCustomer_Load(object sender, EventArgs e)
{
this.tbl_moshtariTableAdapter.Fill(this.dataSet1.t bl_moshtari);
CodeCustomer.Text = tbl_moshtariTableAdapter.MaxIDCustomer().ToString( );
}
private void btnInsertCustomer_Click(object sender, EventArgs e)
{
try
{
if (CodeCustomer.Text == "")
errorProvider1.SetError(CodeCustomer, "لطفاً کد مشتری را وارد نمائید..");
else if (FamiliCustomer.Text == "")
errorProvider1.SetError(FamiliCustomer, "لطفاً فامیلی مشتری را وارد نمائید..");
else
{
MessageBox.Show("مشخصات مشتری با موفقیت ثبت گردید..", "ثبت مشتری", MessageBoxButtons.OK, MessageBoxIcon.Information);
tbl_moshtariTableAdapter.InsertQuery1(CodeCustomer .Text, NameCustomer.Text, FamiliCustomer.Text, TellCustomer.Text, AddressCustomer.Text);
tbl_moshtariTableAdapter.Fill(dataSet1.tbl_moshtar i);
AddressCustomer.ResetText();
NameCustomer.ResetText();
FamiliCustomer.ResetText();
CodeCustomer.Text = tbl_moshtariTableAdapter.MaxIDCustomer().ToString( );
TellCustomer.ResetText();
errorProvider1.Clear();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}


جدول:

142660

سلام، همونطور که دوست خوبمون reza_ali202000 (http://barnamenevis.org/member.php?62953-reza_ali202000) فرمودن چون ستون از نوع رشته هست برای همین به محض اینکه اولین کاراکتر مقایسه شد و یکی بزرگتر از بقیه بود اونرو برمیگردونه، شما باید بیاین ستون هارو بصورت نزولی مرتب کنین بر اساس همین فیلدتون و اولین مقدار رو برگردونین، به این صورت:


SELECT TOP 1 CodeMoshtari FROM tbl_Customer ORDER BY CodeMoshtari DESC

mrprestige
یک شنبه 28 شهریور 1395, 17:44 عصر
عرض ادب و احترام ، دوستان تمام و کمال توضیح دادند فقط نکته ای که باقی می مونه و به احتمال زیاد دوستان یادشون رفت که بگن اینه وقتی که فیلدی که دارید که ورودی اون باید از نوع عدد باشه اصلا از نوع رشته انتخاب نکنید مثلا الان شما کد مشتری رو از نوع Nvarchar قرار دادید و اصلا اصولی نیست در واقع این Data Type رشته ی داده ای Unicode رو برمیگردونه درواقع کاربردش زمانی که شما داده ای رو بغیر از زبان انگلیسی وارد کنید . به نظرم شما ورودی داده اتون زمانی که باید از نوع عدد باشه رو از نوع int یا small int یا Big int یا Tiny int یا Money یا Small Money و یا برای اعشار Numeric و Decimal بگیرید بهتر باشه.

پیروز و موفق باشید

reza_ali202000
دوشنبه 29 شهریور 1395, 01:37 صبح
سلام از کد زیر استفاده کنید.

select max(CONVERT(decimal,isnull(code,0)))+1 from Table1

البته اگه پروژتون در مرحله مقدماتی هست و هزینه سنگینی نداره نوع فیلد رو به نظرم از نوع decimal بزارید.

windowsyar
دوشنبه 29 شهریور 1395, 15:18 عصر
ببخشید من گیج شدم :متعجب:
من نوع یک ستون با نام id دارم و نوع داده ام bigint است
می شود به عنوان جمع بندی بحث
یک نمونه کد به من بدهید که بزرگترین id در یک لیبل نمایش داده شود ؟

hamid_hr
دوشنبه 29 شهریور 1395, 16:22 عصر
اگر نوع داده عددی باشه
select isnull(max(id),1)+1 from table1

daniyaltjm
سه شنبه 30 شهریور 1395, 00:09 صبح
اگه نوع داده Char باشه برای پیدا کردن کد های آزاد هم میشه به این صورت نوشت، مثلا فرض کنید آیدی جدولت از یک تا ده باشه حالا میاید و آیدی مثلا 8 رو پاک میکنید خوب با این کد برای بار بعدی که می خواید اینسرت بشه کد 8 رو پیدا میکنه و جای اون رکورد وارد میشه:

declare @ID Char(3) set @ID='0' while exists(select * from Tbl_Test where @ID=ID) begin set @ID=@ID+1 End