PDA

View Full Version : بدست آوردن ID دیتا بیس در sql



tc1000
پنج شنبه 12 دی 1387, 08:37 صبح
چطور میشه ID جدول رو توی دیتا بیس بدست آورد توی اکسل که خیلی راحته ولی اینجا رو نمی دونم
بیا تشکر

mahdi_farhani
پنج شنبه 12 دی 1387, 08:42 صبح
یعنی چی ID جدول ؟ منظورت نام فیلد Id هست ، یا مقدار ID یک رکورد و یا ....

tc1000
پنج شنبه 12 دی 1387, 09:33 صبح
ببینید توی اکسس وقتی جدول پر میشد یک فیلد به نام ID همراه جدول می ومد که کلید جدول بر روی اون بود و هیچ وقت تکراری نمی شد حالا تویSQL هم همچین چیزی وجود داره و میخوام بدونم چطوری پیداش کنم اون فیلد رو و بتونم عدد های داخل اون رو استخراج کنم

mahdi_farhani
پنج شنبه 12 دی 1387, 09:38 صبح
منظورت Autonumber اکسس هست و Identity Incerement در SQL هست ؟

@@Identity

Select_Scope

tc1000
پنج شنبه 12 دی 1387, 09:42 صبح
میشه این عدد رو در دیتا بیس هم سرچ کرد؟

mahdi_farhani
پنج شنبه 12 دی 1387, 10:07 صبح
این عدد زیاد مهم نیست ، چون شما یک فیلد ایجاد کردید و هر کاری که دلت بخواهد باهاش انجام بدی (البته اگر حذف شد دیگه هیچ وقت چیزی جایگزینش نمیشه )

iman_ad
پنج شنبه 12 دی 1387, 10:38 صبح
از query استفاده کن مثلا select ID form TableName where Field=FieldValue

milade
پنج شنبه 12 دی 1387, 15:37 عصر
سلام دوست عزیز
برا اینکه بتونی یه فیلد داشته باشی مثل اکسل باید یه فیلد بسازی با نام ID .
حالا روی اون کلید (داخل منجنت) کلیک کن (فیلد ایدی باید از نوع Int و در حالت انتخاب باشه) تا اون paramtry key بشه .
بعد از توی خصوصیات is identity رو برابر Yes قرار بده .
به این روش دیگه هیچ فیلدی row ی دارای ایدی برابر نیست .
برا جستجو هم میتونی استفاده کنی
موفق باشی

nazila_jon
پنج شنبه 12 دی 1387, 18:22 عصر
بچه ها منم یه همچین مشکلی دارم

ببینید، من یک صفحه ی ثبت نام دارم، خب؟

و یک فیلد کلید که آتو نامبر هست به نام کد رهگیری

حالا میخوام با زدن دکمه ی ثبت نام، پیغامی داده بشه که کد رهگیری شما فلان است.

حالا باید این کد رو از جایی وارد label کنم

یعنی بنویسم


Lbl1.text =......

از طرفی باید یک stor procedure داشته باشیم، که مقدار کد رهگیری رو بیاره، که من به این صورت اون رو نوشتم :


select max(Code) From Register
و داخل data set هم ادش کردم

حالا میخوام ببینم که باید جلوی لیبل چی بنویسم؟؟ که به این فیلد دسترسی بتونم داشته باشم؟؟

milade
پنج شنبه 12 دی 1387, 18:33 عصر
سلام
sp رو به این تغییر بده:

select max(Code) as give From Register
این طوری که من متوجه شدم شما نمیتونید مقدار رو از دیتاست بخونید که میشه:


lbl1.Text = ds.Tables(0).Rows(0).Item("give").ToString

احتمال میدم این جور خونده بشه چون همش من با Datareader میخونم !
موفق باشی !

nazila_jon
پنج شنبه 12 دی 1387, 20:10 عصر
به ds ایراد میگیره

اصلا .table نداره

milade
پنج شنبه 12 دی 1387, 21:30 عصر
این رو باید با Sqldatadeader بخونی
قبلا یکی خواسته بود یکی با datareader ساختم براش . توی پستهای قبلیم کلمه "دانلود" رو سرچ کن شاید نتیجه داد
موفق باشی

merlin_vista
پنج شنبه 12 دی 1387, 21:39 عصر
اين كارها لازم نيست .
همان طور كه دوست عزيزم مهدي فراهاني گفت از

@@Identity
يا

Select_Scope
استفاده كن و نتيجه را با ExcuteScaler بگير و نمايش بده !

nazila_jon
جمعه 13 دی 1387, 13:12 عصر
از راهنماییهاتون ممنونم

مرلین جون میشه بیشتر توضیح بدی برام؟ همشهری هم که هستیم انگار :)

merlin_vista
جمعه 13 دی 1387, 14:32 عصر
دوست من اگه جستجو ميكردي زودتر به نتجه ميرسيدي .


try
{
SqlCommand cmd_insert = new SqlCommand("insert into tbl_names (f_name,f_famil) VALUES (@f_name,@f_famil)select @@IDENTITY", con);
cmd_insert.CommandType = CommandType.Text;
cmd_insert.Parameters.AddWithValue("@f_name", this.txt_name.Text.Trim());
cmd_insert.Parameters.AddWithValue("@f_famil", this.txt_famil.Text.Trim());
con.Open();
int result = Convert.ToInt32(cmd_insert.ExecuteScalar());
this.lbl_ViewId.Text = result.ToString();
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
con.Close();
}

اين كد id ركوردي را كه تازه به ثبت رسيده برگشت داده و در متغير result ذخيره ميكند كه در اينجا آن را در ليبل نمايش داده ايم .
فيلد id به صورت IDENTITY در جدول تعريف شده است .

در ضمن ، لازم به ذكر است كه ميشه يك پارامتر خروجي براي يك Sp در نظر گرفت و مقدار را به پارامتر خروجي داد و در برنامه با استفاده از Direction دريافت كرد و نمايش داد . ولي فكر كنم راه بالا براي شما كفايت ميكنه !

nazila_jon
جمعه 13 دی 1387, 14:40 عصر
ممنون

با وی بی هم هست؟؟

سرچ کنم select_Scope ؟؟؟؟

merlin_vista
جمعه 13 دی 1387, 14:54 عصر
كد VB :

Try
Dim cmd_insert As New SqlCommand("insert into tbl_names (f_name,f_famil) VALUES (@f_name,@f_famil)select @@IDENTITY", con)
cmd_insert.CommandType = CommandType.Text
cmd_insert.Parameters.AddWithValue("@f_name", Me.txt_name.Text.Trim())
cmd_insert.Parameters.AddWithValue("@f_famil", Me.txt_famil.Text.Trim())
con.Open()
Dim result As Integer = Convert.ToInt32(cmd_insert.ExecuteScalar())
Me.lbl_ViewId.Text = result.ToString()
Catch ex As Exception
Response.Write(ex.Message.ToString())
Finally
con.Close()
End Try

براي تبديل كد ها از اين ابزار استفاده كن :

http://www.developerfusion.com/tools/convert/csharp-to-vb/

milade
جمعه 13 دی 1387, 15:50 عصر
سلام مهرداد جان .
نمیدونم (موضوع پیچ خورد) ولی فکر کنم nazila_jon (http://barnamenevis.org/forum/member.php?u=83004) در مورد پست شماره 9 سوال کرد (به دست اوردن MAX ) و این طوری غلط میشه کد شما .
البته نمیدونم کد شما در مورد کدوم پست بود
موفق باشی

nazila_jon
جمعه 13 دی 1387, 16:23 عصر
درسته، من میخوام که داخل لیبل، آخرین کد، که همون بزرگترینش هست؛ (چون آتو نامبره) رو نشون بده

میلاد جان، از کد شما استفاده کردم ولی همونطور که گفتم به ds ایراد میگیره و ds اصلا .table نداره

که شما گفتی این رو باید با Sqldatadeader بخونم

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

و دانلود رو هم سرچ کردم شونصد تا صفحه آورد

حالا چیکار کنم؟

آقا میلاد فکر کنم حالا حالا ها باید مزاحمت بشم، باید ببخشید :)

milade
جمعه 13 دی 1387, 16:51 عصر
سلام دوست عزیز
واقعا جستجو سخت بود
ولی یافتم ;)
http://barnamenevis.org/forum/showpost.php?p=642122&postcount=2
البته این برا sum هست که میاد کل قیلها رو جمع میکنه
با کمی تغییر به max تغییر بده
موفق باشی

mahdi_farhani
جمعه 13 دی 1387, 17:04 عصر
دوست عزیز بهتره از همون روشی که آقا مهرداد گفت استفاده کنی .کاربرد MAX چیزه دیگه ای هست

merlin_vista
شنبه 14 دی 1387, 09:47 صبح
سلام مهرداد جان .
نمیدونم (موضوع پیچ خورد) ولی فکر کنم nazila_jon (http://barnamenevis.org/forum/member.php?u=83004) در مورد پست شماره 9 سوال کرد (به دست اوردن MAX ) و این طوری غلط میشه کد شما .
البته نمیدونم کد شما در مورد کدوم پست بود
موفق باشی

بچه ها منم یه همچین مشکلی دارم

ببینید، من یک صفحه ی ثبت نام دارم، خب؟

و یک فیلد کلید که آتو نامبر هست به نام کد رهگیری

حالا میخوام با زدن دکمه ی ثبت نام، پیغامی داده بشه که کد رهگیری شما فلان است.

حالا باید این کد رو از جایی وارد label کنم
..............................

milade
شنبه 14 دی 1387, 10:26 صبح
سلام
درست میگید ولی من Max رو از اینجا گفتم:

از طرفی باید یک stor procedure داشته باشیم، که مقدار کد رهگیری رو بیاره، که من به این صورت اون رو نوشتم :


کد:
select max(Code) From Register

و داخل data set هم ادش کردم
که گفتم حتما دیگه sp رو درست دادن برا همین منم راهنمایی در مورد Max کردم
هرچند مه مهرداد جان درست میگن ;)
موفق باشید