PDA

View Full Version : شمارنده



mr_moghimkhani
سه شنبه 20 آذر 1386, 11:47 صبح
میبینم که این مدیرها حسابی جذبه دارن:چشمک:، این اواخر هر تاپیکی رو که باز میکنی بلا استثنا نوشته ("جون مامانم من جستجو کردم نبود:لبخند:") فکر کنم یه تبصره باید به قوانین اضافه بشه که از بکار بردن این نوع جملات هم خودداری بشه(البته قصد دخالت و جسارت نداشتم).
به هر حال :
من نمیدونم شما هم به این مشکل برخوردین یا نه؟ ولی من اکثر مواقع میخوام وقتی چیزی رو Select میکنم در کنارش هم یک ستون باشه که به ترتیب شماره ردیف داشته باشه. اینکار توی SQL انجام میشه (خود به خود اونم روی SelectRow) ولی تابعی، فرمانی، چیزی نذاشته که خودمون توی دستور Select بتونیم فراخوانیش کنیم. شما با این مشکل چه جوری برخورد میکنین؟:متفکر: مثلا هنگام نمایش تو گرید

hassan razavi
سه شنبه 20 آذر 1386, 11:56 صبح
فعلا برا قسمت اول مطلبتون :
دوست عزیز منهم با مدیران سایت کاملا موافق هستم و تازه پیشنهاد میکنم که قانون جستجو کردن رو سخت تر و تذکرها رو جدی تر هم بکنند. چون اگه اینجوری پیش بره فروممون میشه پر از تاپیکهای تکراری. برای مثال همین 5 دقیقه پیش یکی از دوستان پستی ایجاد کرده بنام :

مخفی کردن ddl های برنامه

در صورتی که یک ماه پیش دوست عزیزم همین مطلب رو بیان کرده بودند و کلی بحث خوب هم توی اون تاپیک مطرح شده بود. تنها فرقش هم این بود که عنوان این تاپیک بجای "مخفی کردن" ، "مخفی نمودن" بود.

اَرژنگ
سه شنبه 20 آذر 1386, 12:34 عصر
به هر حال :
من نمیدونم شما هم به این مشکل برخوردین یا نه؟ ولی من اکثر مواقع میخوام وقتی چیزی رو Select میکنم در کنارش هم یک ستون باشه که به ترتیب شماره ردیف داشته باشه. اینکار توی SQL انجام میشه (خود به خود اونم روی SelectRow) ولی تابعی، فرمانی، چیزی نذاشته که خودمون توی دستور Select بتونیم فراخوانیش کنیم. شما با این مشکل چه جوری برخورد میکنین؟:متفکر: مثلا هنگام نمایش تو گرید
سوالتان را درک نمیکنم، منظورتان از "اینکار توی SQL انجام میشه (خود به خود اونم روی SelectRow) ولی تابعی، فرمانی، چیزی نذاشته که خودمون توی دستور Select بتونیم فراخوانیش کنیم" چی هست؟
با کدام مشکل ؟ یک مثال ساده بزنید

mr_moghimkhani
سه شنبه 20 آذر 1386, 12:45 عصر
جناب رضوی، قسمت اول صحبت بنده طنزی بیش نبود که مدیران قوانین رو خیلی شفاف و واضح بنویسن. کسی مخالف بیان شما نیست. ولی گویا جستجوگر سایت هم بلا اشکال نمی باشد، البته نوع و کلمات جستجو هم مهم هستند.من خودم مطالبم رو چندین بار با کلمات متفاوت به زبان فارسی و انگلیسی جستجو میکنم. شاید بهتر باشد نحوه جستجو و کلمات کلیدی لااقل برای تازه وارد ها توضیح داده شود.
طنز من بیشتر مربوط بود به جملات "جستجو کردم نشد" آخه این صیغه جدیده که داره تو سایت باب میشه.
در ضمن دوستان لطف کنن و جواب قسمت دوم را بدهند. قسمت اول مربوط به مدیران می باشدو جواب دادنی نیست.

mr_moghimkhani
سه شنبه 20 آذر 1386, 12:55 عصر
ببینید وفتی یک Viewe میسازیم یا Table ای را در SQL باز میکنیم، پس از اجرا جوابها در داخل یک جدول نمایش داده میشه که در کنار هر سطر یک شماره ردیف وجود دارد. حال اگر بخواهیم این شماره سطر را خودمان در دستور Select ایجاد کنیم، اینکار عملی نیست.
یا اینکه حداقل هنگام نمایش در Grid بتوانیم این شماره سطر ها را قرار دهیم.

babak23
سه شنبه 20 آذر 1386, 13:47 عصر
ببینید وفتی یک Viewe میسازیم یا Table ای را در SQL باز میکنیم، پس از اجرا جوابها در داخل یک جدول نمایش داده میشه که در کنار هر سطر یک شماره ردیف وجود دارد. حال اگر بخواهیم این شماره سطر را خودمان در دستور Select ایجاد کنیم، اینکار عملی نیست.
یا اینکه حداقل هنگام نمایش در Grid بتوانیم این شماره سطر ها را قرار دهیم.

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

به این موارد نگاه کن
http://barnamenevis.org/forum/showthread.php?t=25798
http://barnamenevis.org/forum/showthread.php?t=17672&highlight=%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB% 8C%D8%AF
http://barnamenevis.org/forum/showthread.php?t=27730&highlight=%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB% 8C%D8%AF

اَرژنگ
سه شنبه 20 آذر 1386, 13:56 عصر
1 البته میتونی یک فیلد در دیتاگرید ویو ایجاد کنی و از این فیلد بعنوان شماره سطر استفاده کنی
2 تو خود SQl این کار را انجام بدی

به این موارد نگاه کن
http://barnamenevis.org/forum/showthread.php?t=25798
http://barnamenevis.org/forum/showthread.php?t=17672&highlight=%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB% 8C%D8%AF
http://barnamenevis.org/forum/showthread.php?t=27730&highlight=%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB% 8C%D8%AF
تمام لیکنها ربطی به داتا گرید ویو نداشند،
۲ استفاده از اس‌کیوال برایه این کار درست نیست، اگر از برنامه نویسیه ۳ لایه استفاده میشه.
مثال ضمیمه است:

babak23
سه شنبه 20 آذر 1386, 14:02 عصر
استفاده از اس‌کیوال برایه این کار درست نیست، اگر از برنامه نویسیه ۳ لایه استفاده میشه.
مثال ضمیمه است:


معمولا دیتابیسها برای Primary Key از AutoNumber استفاده میکنند. خوب اگر بانک شما هم این ستون رو داره بهترین راه حل اینه که از نمایش همون ستون در گرید استفاده کنی در غیز این صورت میتونی به ابتدای جدولی که میخواهی در گرید نمایش بدی یک ستون اضافه کنی (که البته در بانک وجود ندارد) و با تنظیم ویژگیهای AutoSeed و AutoIncrement اون ونیز ReadOnly کردن ستون مذکور به نتیجه ای که میخواهی برسی

:لبخند::لبخند::لبخند:

اَرژنگ
سه شنبه 20 آذر 1386, 14:12 عصر
تناقضی بین آنچه که من گفتم و omid_Ahmadi بیان کردند وجود نداره چونکه من گفتم :
"، اگر از برنامه نویسیه ۳ لایه استفاده میشه. ":لبخند:

babak23
سه شنبه 20 آذر 1386, 14:28 عصر
جمله شما مفهوم دیگری را بیان میکرد
به این مورد نگاه کنید:
بخشش لازم نیست ادامش کنید.

از جمله بالا چه نتیجه ای میگیرید؟

استفاده از اس‌کیوال برایه این کار درست نیست، اگر از برنامه نویسیه ۳ لایه استفاده میشه.

تصحیح جمله ی بالا:
لازم بذکر است که اگر از برنامه نویسی ۳ لایه استفاده میکنید استفاده از اس‌کیوال برای اینکار جایز نیست


:لبخند:
لازم بذکر است که اگر از برنامه نویسی ۳ لایه استفاده میکنید ( که بعید میدونم ) استفاده از
اس‌کیوال برای اینکار درست نیست:لبخند:

someCoder
سه شنبه 20 آذر 1386, 15:06 عصر
اگر از SQL Server 2005 استفاده میکنی، با ROW_NUMBER (http://msdn2.microsoft.com/en-us/library/ms186734.aspx) میتونی این کار رو بکنی.

ali_md110
جمعه 07 دی 1386, 12:21 عصر
سلام
شما از این دو کد vb.net استفاده کنید
Public Sub Radif_datagrid(ByVal Dgview As DataGridView)
Dim I As Integer
Dim J As Integer
For I = 0 To Dgview.Rows.Count - 1
For J = 0 To I - 1
Dgview.Rows.Item(J).HeaderCell.Value = (J + 1).ToString
Next J
Next I
End Sub
یا از کد زیر


Public Sub headercell_Radif(ByVal Dgview As DataGridView)
Dim rownumber As Integer = 1
Dim row As DataGridViewRow

For Each row In Dgview.Rows
'If row.IsNewRow = True Then
row.HeaderCell.Value = rownumber.ToString
rownumber = rownumber + 1
' End If

Next
End Sub

اَرژنگ
جمعه 07 دی 1386, 22:51 عصر
سلام
شما از این دو کد vb.net استفاده کنید


تالار سی شارپ، چرا کد وی بی دات نت؟
از تگ کد استفاده کنید.




Public Sub Radif_datagrid(ByVal Dgview As DataGridView)
Dim I As Integer
Dim J As Integer
For I = 0 To Dgview.Rows.Count - 1
For J = 0 To I - 1
Dgview.Rows.Item(J).HeaderCell.Value = (J + 1).ToString
Next J
Next I
End Sub


۱)چرا این کد ۲ تا For دارد؟ ساده‌اش کنید.
۲)این روش را باید هر بار بعد از پر کردن گرید ویو کال کرد، این روش درست نیست.
۳)از مثالی که فرستادم استفاده کنید و روشهایه بهتر بفرستید



یا از کد زی
ر
Public Sub headercell_Radif(ByVal Dgview As DataGridView)
Dim rownumber As Integer = 1
Dim row As DataGridViewRow

For Each row In Dgview.Rows
'If row.IsNewRow = True Then
row.HeaderCell.Value = rownumber.ToString
rownumber = rownumber + 1
' End If

Next
End Sub


۱)این روش را باید هر بار بعد از پر کردن گرید ویو کال کرد، این روش درست نیست.
۲)از مثالی که فرستادم استفاده کنید و روشهایه بهتر بفرستید