ورود

View Full Version : سوال: شمارنده خود کار



nokhodi
شنبه 07 آبان 1390, 16:02 عصر
سلام
در بانک م یه فیلد بنام cods هست که میخوام شماره آخرین رکوردش رو در متغیری ذخیره کنم...
و برای ثبت رکورئ جدید یه دونه بهش اضافه کنم..
من دستورات زیر رو نوشتم اما...همش برام شماره رکورد رو میزنه 2 ( با اولین رکورد جمع میکنه)


Private Sub Form_Load()
Dim n As Long
Dim sSQL As String

.
.
.

n = dat1.Fields("cods")
Text1.Text = Str(n + 1)

End Sub

و یه سوال دیگه اینکه وقتی اطلاعاتم رو داخل دینا گیرید نشون میدوم...اطلاعاتم از آخر به اول میاد.چطوری میتونم ترتبش رو از اول به آخر بزارم...



سپاس

adib202
شنبه 07 آبان 1390, 16:23 عصر
ببين با اين كارت حل ميشه،با وجدي كه من نميدونم كانكشنت چيه!



Private Sub Form_Load()
Dim n As Long
Dim sSQL As String

.
.
.
dat1.Movelast

n = dat1.Fields("cods")
Text1.Text = Str(n + 1)

End Sub






با اينم مرتبش كن :



dat1.Sort = ("cods")

nokhodi
شنبه 07 آبان 1390, 17:35 عصر
بله حل شد...تشکر فراوان...

kitcat_m18
شنبه 07 آبان 1390, 18:06 عصر
آقا چه کاريه بنده خدا رو اذيت مب کني؟؟؟ :قهقهه:

از دستور MAX در SQL استفاده کني:

Rs.open"Select Max(ID) As MAxRecord From Table",CN
MsgBox Rs.Fiels!MAxRecord

موفق باشي :لبخندساده:

nokhodi
یک شنبه 08 آبان 1390, 17:36 عصر
یه مشکل دیگه :(
اگه رکوردی در بانک نباشه err میده...
نمینویسه که اولین رکورده که قرار ثبت بشه؟!!!
ینو چیکارش کنم؟!!!

nokhodi
یک شنبه 08 آبان 1390, 17:59 عصر
آقا چه کاريه بنده خدا رو اذيت مب کني؟؟؟ :قهقهه:

از دستور MAX در SQL استفاده کني:

Rs.open"Select Max(ID) As MAxRecord From Table",CN
MsgBox Rs.Fiels!MAxRecord

موفق باشي :لبخندساده:


این دستور sql که گذاشتین مشکل رکورد اول رو حل میکنه؟!

M.T.P
یک شنبه 08 آبان 1390, 20:12 عصر
این دستور sql که گذاشتین مشکل رکورد اول رو حل میکنه؟!

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

kitcat_m18
یک شنبه 08 آبان 1390, 22:03 عصر
شما با تابع IsNull چک کن اگه رکورد مقدار تهي يا همون Null رو نداشت شروط مربوطه رو اجرا کن در غير اينصورت يک رو براي شماره ID رديفت قرار بده.
موفق باشي:لبخندساده:

vbhamed
دوشنبه 09 آبان 1390, 11:09 صبح
سلام

با اجازه kitcat_m18 عزيز اين يك اصلاحيه تا با اولين ركورد هم مشكل نداشته باشيد
Rs.open"Select Max(ID) As MAxRecord From Table",CN
MsgBox Val(Rs.Fiels!MAxRecord & "") + 1

kitcat_m18
سه شنبه 10 آبان 1390, 19:32 عصر
خواهش مي کنم آقا حامد :لبخندساده:

اينم يه کمي اصولي ترش:
Rs.open "Select Max(ID) As MAxRecord From Table", CN
If IsNull(Rs.Fiels!MAxRecord) = False Then MsgBox Rs.Fiels!MAxRecord

vbhamed
چهارشنبه 11 آبان 1390, 07:21 صبح
سلام

البته من به اون شكل كه نوشتم چه ركوردي ثبت شده باشه چه نشده باشه هميشه آخرين شماره آزاد برمي گرده اما تو روش شما اگر مقدار برگشتي NULL نبود اون رو نشون مي‌ده كه باز برنامه نويس مجبور ميشه براي اين حالت يك شماره اوليه در نظر بگيره و كدنويسي مجددي انجام بده

kitcat_m18
چهارشنبه 11 آبان 1390, 11:32 صبح
البته من به اون شكل كه نوشتم چه ركوردي ثبت شده باشه چه نشده باشه هميشه آخرين شماره آزاد برمي گرده اما تو روش شما اگر مقدار برگشتي NULL نبود اون رو نشون مي‌ده كه باز برنامه نويس مجبور ميشه براي اين حالت يك شماره اوليه در نظر بگيره و كدنويسي مجددي انجام بده

سلام حامد جان،

بله حق با شماست من يه مقدار آينده نگري کردم، اگه اين دوستمون بخواد شماره رکورد شروع رو خودش به برنامه معرفي کنه در روش شما امکان پذير نيست. مثلا شايد بخواد برنامش رو تو شعبه هاي مختلف با کد هاي شروع مختلف نصب کنه. :لبخندساده:

به نظر من اينجا همون بحث ديدگاه ما به پروسه کاريمون در مبحث تحليل سيستم (oo) پيش مياد . ممکنه من بخوام رابطه ماشين به چرخ رو 1 به n تعريف کنم ممکن هم هست بخوام براي اين موضوع چند تا رابطه بنويسم. :لبخندساده:

موفق باشين :چشمک:

nokhodi
چهارشنبه 11 آبان 1390, 15:34 عصر
سلام

با اجازه kitcat_m18 عزيز اين يك اصلاحيه تا با اولين ركورد هم مشكل نداشته باشيد
Rs.open"Select Max(ID) As MAxRecord From Table",CN
MsgBox Val(Rs.Fiels!MAxRecord & "") + 1






سلام
مرسی از راهنمایاتون...

من کد شما رو در برنام م متناسب با متعیر هام تعییر دادم..اما خطا میده!!!!


dat1.Open "Select Max(cods) As MAxRecord From student"

Text1.Text = Val(dat1.Fields!MAxRecord & "") + 1


پارامتر CN اینحا برای چیه؟؟؟

kitcat_m18
چهارشنبه 11 آبان 1390, 18:17 عصر
من تو اين کد از يک کتابخانه به نام ADODB استفاده کردم
RS رکورد ست من هست و CN هم کانکشن من
براي استفاده از اين کد بايد در قسمت Referencese گزينه Microsoft ActiveX Data Object 2.8 Library رو انتخاب کن و اين ها رو هم تو برنامت تعريف کن:

Dim Rs As New ADODB.Recordset
Dim CN As New ADODB.Connection

البته همش همين نيست تنظيمات ديگه اي هم هست که بايد انجام بدي که اونارو از لينک زير مطالعه کن:

http://barnamenevis.org/showthread.php?147578-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A8%DB%8C%D8%B3%DB%8C%DA%A9-%D8%B4%D8%B1%D9%88%D8%B9-%D8%AA%D8%A7-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86

موفق باشي :لبخندساده:

nokhodi
پنج شنبه 12 آبان 1390, 00:02 صبح
من تو اين کد از يک کتابخانه به نام ADODB استفاده کردم
RS رکورد ست من هست و CN هم کانکشن من
براي استفاده از اين کد بايد در قسمت Referencese گزينه Microsoft ActiveX Data Object 2.8 Library رو انتخاب کن و اين ها رو هم تو برنامت تعريف کن:

Dim Rs As New ADODB.Recordset
Dim CN As New ADODB.Connection

البته همش همين نيست تنظيمات ديگه اي هم هست که بايد انجام بدي که اونارو از لينک زير مطالعه کن:

http://barnamenevis.org/showthread.php?147578-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A8%DB%8C%D8%B3%DB%8C%DA%A9-%D8%B4%D8%B1%D9%88%D8%B9-%D8%AA%D8%A7-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86

موفق باشي :لبخندساده:




تمام تنظیمات پروژه درست هست...
چون تا قبل از اینکه این کد رو بزارم در کانکت شدن با دیتا بیسم مشکلی نداشت...
کد زیر واسه لود فرم هستش همراه دستوراتی که گذاشتن...
اولین دستور Open رو خطا میگیره؟؟!!


Private Sub Form_Load()
Dim n As Long
Dim sSQL As String
sSQL = "select * from student Order by cods"
Set dat1 = New Recordset
dat1.CursorLocation = adUseClient
dat1.Open sSQL, dfwConn, adOpenDynamic, adLockOptimistic



dat1.Open "Select Max(cods) As MAxRecord From student", dfwConn
n = Val(dat1.Fields!MAxRecord & "") + 1
Text1.Text = Str(n)

End Sub


متغیر های تغریف شده در پابلیک

Public dat1 As ADODB.Recordset
Public dfwConn As ADODB.Connection



سپاس

nokhodi
پنج شنبه 12 آبان 1390, 00:49 صبح
دستور open اول رو خذف کردم..مشکل خطا برطرف شد...

اما به دستور کانکشن دوم به پایگاه وصل میشه اما...چیزی رو اضاقه نمیکنه :(

هنگ کردم دیگه :((((

vbhamed
پنج شنبه 12 آبان 1390, 08:54 صبح
سلام

چيزي اضافه نمي‌كنه يعني چي ؟
شما دستور اضافه كردني ننوشتيد كه چيزي اضافه بشه

nokhodi
پنج شنبه 12 آبان 1390, 09:02 صبح
این که فقط واسه لود فرم هستش...
داخل پروژه رو اگه نگاه کنید...در فرم دوم برنامه نوشته شده برای اضافه کردن رکورد ها به دیتا بیس هستش...
اما با کدی که الان بهش اضاقه کردم هیچ رکوردی ثبت نمیشه...

kitcat_m18
پنج شنبه 12 آبان 1390, 11:28 صبح
فقط يه چيز دارم بگم:
لقمرو بد جوري دور گردنت پيچوندي :چشمک:
شما به جاي اينکه بياي بزرگترين شماره رو بگيري مي تونستي فيلد cods رو AutoNumber انتخاب کني.
و يا ساير کد هات
کد نويسيت هم خيلي به هم ريختست سعي کن يه مقدار مرتب برنامه هاتو بنويسي
اسم اشياء رو هم عوض کن نه اينکه از اسم پيش فرض خودشون ستفاده کني (From1,From2,From3,...)

موفق باشي :لبخندساده:

nokhodi
پنج شنبه 12 آبان 1390, 11:47 صبح
فقط يه چيز دارم بگم:
لقمرو بد جوري دور گردنت پيچوندي :چشمک:
شما به جاي اينکه بياي بزرگترين شماره رو بگيري مي تونستي فيلد cods رو AutoNumber انتخاب کني.
و يا ساير کد هات
کد نويسيت هم خيلي به هم ريختست سعي کن يه مقدار مرتب برنامه هاتو بنويسي
اسم اشياء رو هم عوض کن نه اينکه از اسم پيش فرض خودشون ستفاده کني (From1,From2,From3,...)

موفق باشي :لبخندساده:


سپاس از کمکتون...
کم تجربگیو 1001 دردسر...
حق با شماست...
در مورد اتو نامبر هم میتونم بگم که نمیشد...چون دیتا بیس رو از خود vb ساختم...و نشد براش تعریف کنم...

nokhodi
پنج شنبه 17 آذر 1390, 18:07 عصر
یکم تغییرات توی فرم های برنامه دادم...
و کدی که لطف کرده بودین و گذاشنتین الان کار نمیکنه...

میشه لطفا یه نگاه بندازین ببینن مشکلش چیه؟!

سپاس...

kitcat_m18
دوشنبه 21 آذر 1390, 15:10 عصر
سلام،
ببخشيد يه مدت نبودم و الان پيغامتو ديدم.
مشکل خاصي نديدم جزء يه سري تنظيمات تو ديتاگريد.
برات پيغام خصوصي گذاشتم تا بتونم در خصوص تنظيمات ديتاگريد بيشتر راهنماييت کنم
نمونه برنامه هم اصلاح کردم و تو ضميمه برات گذاشتم.

nokhodi
دوشنبه 21 آذر 1390, 15:25 عصر
سلام،
ببخشيد يه مدت نبودم و الان پيغامتو ديدم.
مشکل خاصي نديدم جزء يه سري تنظيمات تو ديتاگريد.
برات پيغام خصوصي گذاشتم تا بتونم در خصوص تنظيمات ديتاگريد بيشتر راهنماييت کنم
نمونه برنامه هم اصلاح کردم و تو ضميمه برات گذاشتم.

سلام...
سپاس فراوان...

مشکلم تو نشون دادن دیتا گرید بود...
اون کدی که تو سمپل صفحه قبل گذاشته بودین یکم error میده...

الان وفتی چیزی اضافه میکنیم تو دیتا گرید ها نشون نمیده اصلا...؟؟!! :(

kitcat_m18
دوشنبه 21 آذر 1390, 16:10 عصر
تو سمپل خودتون نمي تونم کمکي کنم آخه راه رو اشتباه رفتين در حقيقت کار شما جواب ميده اما اصولش اين نيست درست کردن نمونه شما هم هيچ کمکي بهتون نمي کنه و بيشتر باعث سردرگمي شما ميشه نمونه تو سايت زياده براي اين موضوع اماب ه نظر من قبلش يه کم راهنمايي نياز دارين.
موفق باشين :لبخندساده:

kitcat_m18
دوشنبه 21 آذر 1390, 17:29 عصر
بيا اين نمونه رو روش کار کن
موفق باشي

nokhodi
دوشنبه 21 آذر 1390, 19:21 عصر
مرسی از سمپل...
این سمپل رو کامل متوجه شدم...

دستتون درد نکنه...