View Full Version : قرار دادن کد دلخواه در یک فیلد
look20
یک شنبه 11 بهمن 1388, 21:00 عصر
با سلام خدمت دوستان بخصوص xxxxx_xxxxx (http://barnamenevis.org/forum/member.php?find=lastposter&t=202673) عزیز
فکر نکنین می خوام لقمه آماده برام بگیرید
یه سوال دارم
مشکل من اینه که مثلا اگه فیلد من عدد 20 رو نشنون میده وقتی رکورد جدید میسازم فیلدم 1+20 رو بطور خودکار در رکورد جدیدی که میسازم قرار بده
راستش توی VBA اکسس بلدم چطور تعریف کنم ولی نمی دونم توی ویژوال چه کدی استفاده کنم همونطور که خودتون میدونید VBA با VB تا حدودی تفاوت داره!
ممنون میشم کمک کنید
polisoftco
یک شنبه 11 بهمن 1388, 23:02 عصر
این موضوع بحث شده اگه بگردین پیدا میکنین.
اگه دیتابیس دارین خب آخرین و بزرگترین رکورد رو بگیر و یکی بهش اضافه کن، اگه دیتابیس ندارین یک فایل ترتیبی بساز و توش ذخیره کن.
look20
یک شنبه 11 بهمن 1388, 23:39 عصر
دوست عزیز چه کلمه ای رو سرچ کنم چون سرچ کردم ولی پیدا نکردم لطف کنید راهنمایی کنید
look20
دوشنبه 12 بهمن 1388, 13:11 عصر
توی اکسس از کدی مثل این استفاده کردم
Sub MaxNumberCounter()
Dim CounterNum As Long
CounterNum = DMax("[Counter]", "[table2]")
Counter = CounterNum + 1
End Sub
ولی توی ویژوال چطور استفاده کنم بلد نیستم
لطفا راهنمایی کنید
polisoftco
دوشنبه 12 بهمن 1388, 19:16 عصر
Sub MaxNumberCounter()
Dim CounterNum As Long
CounterNum = DMax("[Counter]", "[table2]")
Counter = CounterNum + 1
End Sub
Sub MaxNumberCounter()
Dim CounterNum As Long
ADODC1.RecordSource.open "SELECT max(counter) FROM Table2"
CounterNum = ADODC1.Recordset.Fields(0)
Counter = CounterNum + 1
End Sub
اگه از ADODC استفاده میکنین به این شکل میشه بزرگترین مقدار کانتر رو بدست آورد و بعدش یکی بهش اضافه کرد.
موفق باشین
look20
دوشنبه 12 بهمن 1388, 23:36 عصر
Sub MaxNumberCounter()
Dim CounterNum As Long
CounterNum = DMax("[Counter]", "[table2]")
Counter = CounterNum + 1
End Sub
Sub MaxNumberCounter()
Dim CounterNum As Long
ADODC1.RecordSource.open "SELECT max(counter) FROM Table2"
CounterNum = ADODC1.Recordset.Fields(0)
Counter = CounterNum + 1
End Sub
اگه از ADODC استفاده میکنین به این شکل میشه بزرگترین مقدار کانتر رو بدست آورد و بعدش یکی بهش اضافه کرد.
موفق باشین
با تشکر ولی ببخشید چطور این MaxNumberCounter رو توی فرمم صدا کنم یه مثال می زنید
polisoftco
سه شنبه 13 بهمن 1388, 01:12 صبح
خب این کد دیگه مال خود بود که ...
هرجا خاستی صدا بزنی اینو بنویس.
Call MaxNumberCounter
موفق باشین
look20
سه شنبه 13 بهمن 1388, 13:00 عصر
با سلام مجدد
من نتونستم روی فرمم MaxNumber رو اجراش کنم
فایلم رو گذاشتم اگه زحمتی نیست یه نگاهی بندازید ببینید چه مشکلی داره من کد رو توی قسمت newبالای فرمم قرار دادم
polisoftco
سه شنبه 13 بهمن 1388, 22:41 عصر
سلام
دوست عزیز من کدهاتو تغییری ندادم فقط جاهایی که نوشتی مشکل دارم رو تغییر دادم (کد خودکار)
ببینین من برای اتصال به دیتابیس و جداول از کدهای زیر استفاده کردم.
قسمت General برنامه :
Dim strCon As New ADODB.Connection
Dim rsTbl1 As New ADODB.Recordset
Dim rsTbl2 As New ADODB.Recordset
توی قسمت Form Load برنامه هم این رو نوشتم :
strCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB.mdb"
If rsTbl1.State = 1 Then rsTbl1.Close
rsTbl1.Open "select * from Table1", strCon, adOpenStatic, adLockOptimistic
If rsTbl2.State = 1 Then rsTbl2.Close
rsTbl2.Open "select * from Table2", strCon, adOpenStatic, adLockOptimistic
دکمه New دکمه ای که با علامت نشون دادین :
Private Sub cmdNew_Click()
Call MaxNumberCod
cmdNew.Enabled = False
cmdDel.Enabled = False
End Sub
قسمت MaxNumberCod :
Sub MaxNumberCod()
Dim CodNum As Long
If rsTbl1.State = 1 Then rsTbl1.Close
rsTbl1.Open "SELECT max(Cod) FROM Table1"
CodNum = rsTbl1.Fields(0)
txtcod = CodNum + 1
End Sub
برای قسمت آپدیت اطلاعات هم از این کد استفاده کنین :
Private Sub Command1_Click()
If rsTbl1.State = 1 Then rsTbl1.Close
rsTbl1.Open "select * from Table1", strCon, adOpenStatic, adLockOptimistic
rsTbl1.AddNew
rsTbl1.Fields("cod") = Trim$(txtcod.Text)
rsTbl1.Fields("Name") = Trim$(txtName.Text)
rsTbl1.Fields("Famil") = Trim$(txtFamil.Text)
rsTbl1.Update
cmdNew.Enabled = True
cmdDel.Enabled = True
End Sub
فک کنم یا کمی مطالعه کدها حتما به کاربردشون پی میبرین ، اگه مشکلی بود درخدمتیم اما شاید دیر جواب بدم آخه چند روز دیگه تحویل پایان ناممه.
موفق باشین
look20
سه شنبه 13 بهمن 1388, 23:41 عصر
با سلام و تشکر از شما ببخشید بازم زحمت:
چکار کنم که کد تکراری ایجاد نکنه یعنی وقتی رکورد جدید ساخته می شه ولی روی دکمه prevیا next کلیک می کنم و فرم رو می بیندم وباز که میکنم از رکوردی که ساختم دوتا ایجاد میکنه
کدی هست که بشه این مشکل رو حل کنه
polisoftco
سه شنبه 13 بهمن 1388, 23:46 عصر
دوست عزیز من فقط قسمت کد رو تغییر دادم، قسمتهای بعدی و قبلی برنامه رو ندیدم و تغییری ندادم.
بهتره ارتباط دیتابیست رو به روش من انجام بدین، اینطوری هم راحتره هم قابلیتهای بیشتر و بهتری داره.
یعنی شما وقتی رکورد ساختین و آپدیت کردین، پس از زدن بعدی و قبلی کد تکراری میسازه ...؟؟:متفکر:
look20
سه شنبه 13 بهمن 1388, 23:57 عصر
بله دقیقا همین طوره بهتره بگم رکورد تکراری یعنی دوتا رکورد با تمامی فیلهای یکسان
polisoftco
چهارشنبه 14 بهمن 1388, 00:01 صبح
هیچکدوم از دکمه های بعدی و قبلی کار نمیکنن، شما چطور استفادشون کردین، نکنه کدشو تغییر دادین؟
دکمه قبلی بخاطر اینکه طریقه ارتباط با دیتابیسش ناقصه کار نمیکنه و دکمه بعدی هم بخاطر اینکه ارتباطش با دیتابیس قطعه.
حالا شما چطور کد تکراری ساختین درصورتی که هیچکدومشون کار نمیکنه....!!!؟؟:متفکر::متفکر:
look20
چهارشنبه 14 بهمن 1388, 00:05 صبح
راستش table1 فیلد cod رو بصورت key تعریف کرده بودم دیدم یه پیغام ارور میده که مربوط به همین دلیل بود بعد primekey رو حذف کردم همین مشکل که گفتم پیش اومد حالا دوباره primkey رو تعریف کردم ولی با این مشکل که پیغام میده چکار کنم
polisoftco
چهارشنبه 14 بهمن 1388, 00:16 صبح
راستش من دقیقا نمیدونم مشکل شما چیه آخه تو مال من همچین کد و اروری نمیده.
همچنین نمیدونم برنامت برای چی و کارش چیه، و قسمت پایینی برای چی هستش، اگه قسمت پایینی نسبت به قسمت بالایی برنامت کار میکنه خب کد تیبل 2 رو اتونامبر بزن و کانترشو دیگه نمیدونم برای چیه؟
look20
چهارشنبه 14 بهمن 1388, 00:22 صبح
ببخشید برای دکمه های next و prev , ...چطور از کد شما استفاده کنم
polisoftco
چهارشنبه 14 بهمن 1388, 00:27 صبح
فرقی نمیکنه شبیه همون کدهای شماست منتها :
rsTbl1.MoveNext
rsTbl1.MoveLast
rsTbl1.MovePrevious
rsTbl1.MoveFirst
فقط قبلش چک کن ببینی رکورد کجاست ابتدا و انتهای جدول که رسید یه پیغام مناسب نشون بده.
EOF & BOF
موفق باشین
درود و بدرود
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.