PDA

View Full Version : چند سوال در مورد vb



REZA-007
سه شنبه 28 اسفند 1386, 14:30 عصر
سلام خدمت دوستان گرامی
من چند سوال دارم .من میخواهم برنامه ای بنویسم که اطلاعات مبوط به یک دانشجو را در فرمی وارد و در فرم دیگه ای اطلاعات درسی را وارد میکنیم و در فرم سوم با وارد کردن شماره دانشجویی اطلاعات مربوط به دانشجو را مشاهده و در صورت نیاز اصلاح میکنیم. در این برنامه از اکسسو adodcاستفاده میکنیم
حال سوالات بنده
1_چگونه میشود در فیلدها جستجو کرد و اطلاعات وارد شده را فراخوانی کرد
2_ چگونه میتوان از وارد کردن اطلاعات تکراری جلوگیری کرد
3_در زمان اجرای برنامه پیغام زیر نمایش داده میشود که علتش را نمیدانم
unable to bind to fild or datamember:"name filde"
ممنون از راهنمای همه سروران گرامی
reza_1385_2007@yahoo.com

aidin1386
سه شنبه 28 اسفند 1386, 14:36 عصر
به این تاپیک یه سری بزن!

http://barnamenevis.org/forum/showthread.php?t=98292
(http://barnamenevis.org/forum/showthread.php?t=98292)

فاطمه وطن دوست
چهارشنبه 29 اسفند 1386, 04:54 صبح
سلام ، با تبریک فرا رسیدن سال نو
پاسخ سوال 3
unable to bind to fild or datamember:"name filde"
میگه این فیلدو پیدا نمی کنه .
در واقع شما ، این کارو انجام دادی ، اومدی یه ADOگذاشتی و CONNECTION STRINGو RECORDSOURCE , برای دیتا بیس و جدولت در نظر گرفتی .
ولی برای مثلا (TEXTBOX) ، خصوصیات ،DATASOURCEو Datefield رو تنظیم کردی .
ولی نکته : اینکهDatafield رو به فیلدی نسبت دادی که این فیلد اصلا تو جدولت نیست .
یعنی این فیلدو پیدا نمی کنه از جدولت.( در واقع اصلا این فیلد رو تو جدولت نداری .)

فاطمه وطن دوست
چهارشنبه 29 اسفند 1386, 05:01 صبح
پاسخ سوال 2
منظورتون از وارد کردن اطلاعات تکراری یعنی چی ؟
مثال بزنید . مثلا وقتی دو تا هنرجو نام و نام خانوادگیشون مثل هم باشه برای تفکیک این دو موجودیت از فیلد کلید استفاده می کنیم .
لطفا این لینک رو نگاه کنید .
http://www.myclasses.ir

فاطمه وطن دوست
چهارشنبه 29 اسفند 1386, 05:12 صبح
پاسخ سوال 1
شما می تونید یه دیتا گرید تو فرمتون بزارید و یه Text box (مثلا توی این Textbox، مقدار فیلدتون ، مثلا کد رو وارد می کنید . )
بعد تو قسمت کد می تونی این طوری بنویسید .
حتی می تونید چند تا option بزارید و caption اونارو برابر با نام فیلدهای جدولتون قرار بدید و
که مثلا جستجو بر اساس فیلدهای خاصی صورت بگیره .
بعد تو قسمت کلید سرچ یا رویداد change مربوط به textboxاتون این کدو بنویسید
البته این کد کامل نیست ، فقط قسمت جستجو بر اساس فیلتر کردن . بقیشو خودتون لطف می کنید و می نویسید. :تشویق:





Adodc1.Recordset.Filter = "code =' " + Text1.text + " ' "
Adodc1.Recordset.Filter = " code like '" & Text1.text & "*'"
Set DataGrid1.DataSource = Adodc1

ali_habibi1384
چهارشنبه 29 اسفند 1386, 06:55 صبح
اگه منظورتون از اطلاهات تکراری پیدا کردن اطلاعات تکراری فیلد کلید هست شما باید یه ado دیگه هم به فرم اضافه کنید و اونو به همون جدول قبلی که می خواین اطلاعات تکراری نباشه وصل کنین. با استفاده ار فیلتر و شمردن تعداد رکوردهای باقیمانده پی به تکراری بودن اون خواهید برد . بقیه مطالب رو هم خانوم وطن دوست کاملا صحیح ایراد نمودند.

REZA-007
چهارشنبه 29 اسفند 1386, 20:33 عصر
سلام خدمت تمامی دوستان
سال نو را هم به همه ایرانیان در سرتاسر جهان تبریک میگویم
ممنون از راهنمایی شما
در سوال 3 باید عرض کنم که فیلد مورد نظر درپیغام در جدول وجود دارد ولی این پیغام همچنان ظاهر میشود البته من به اشتباه این فیلد را پاک کردم ولی مجددا آن را درست کردم
در سوال 2 باید بگم منظور من از اطلاعات تکراری این است که مثلا دانشجوی که یک درس را انتخاب کرده اجازه نداشته باشه همان درس را با یک استاد دیگری انتخاب کنه
بازهم سال جدید را به همه دوستان تبریک میگم وآرزوی موفقیت برای همه عزیزان دارم

shahpari
چهارشنبه 29 اسفند 1386, 23:05 عصر
سلام ، با تبریک فرا رسیدن سال نو
پاسخ سوال 3
unable to bind to fild or datamember:"name filde"
میگه این فیلدو پیدا نمی کنه .
در واقع شما ، این کارو انجام دادی ، اومدی یه ADOگذاشتی و CONNECTION STRINGو RECORDSOURCE , برای دیتا بیس و جدولت در نظر گرفتی .
ولی برای مثلا (TEXTBOX) ، خصوصیات ،DATASOURCEو Datefield رو تنظیم کردی .
ولی نکته : اینکهDatafield رو به فیلدی نسبت دادی که این فیلد اصلا تو جدولت نیست .
یعنی این فیلدو پیدا نمی کنه از جدولت.( در واقع اصلا این فیلد رو تو جدولت نداری .)

سلام
فکر نمی کنم مشکل از اینجا باشه

چون در صورتی که اون فیلد رو پیدا نکنه باید این خطا نمایش داده بشه:
item cannot be found in the collection....
البته ادامه داره که باقیش یادم نیست
ولی اینجا از data bind خطا میده
به نظرم ارتباط بین فیلدها و شی مربوطه درست انجام نشده

shahpari
چهارشنبه 29 اسفند 1386, 23:25 عصر
در سوال 2 باید بگم منظور من از اطلاعات تکراری این است که مثلا دانشجوی که یک درس را انتخاب کرده اجازه نداشته باشه همان درس را با یک استاد دیگری انتخاب کنه


پس شما حتما توی بانک اطلاعاتیتون حداقل 3 تا جدول دارید

1-درس
2-استاد
3-دانشجو

با دستورات اس کیو ال می تونید به صورت ترکیبی تو بانک جستجو کنید و اگر recordcount اون رکوردست مورد نظرتون 0 بود یعنی درس مورد نظر غیر تکراریه و انتخاب درس ثبت میشه

امیدوارم متوجه منظورم شده باشید

vahidm
چهارشنبه 29 اسفند 1386, 23:41 عصر
این برای جلوگیری از تکرار وارد کردن مشخصات دانشجو البته باید براساس شماره دانشجویی بزارید
Adodc.Refresh
Do While Adodc.Recordset.EOF = False
If Adodc.Recordset.Fields(0) = Trim(Text1.Text) Then
MsgBox "Repeat Info "
Exit Sub
End If
Adodc.Recordset.MoveNext
Loop

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
برای جستجوی اطلاعات در یک جدول
کنترلهای مورد نیاز :یک عدد دیتا گرید و یک عدد کنترل ارتباط با بانک اطلاعاتی و یک تکست
کد زیر را در خصوصیت
Change
تکست قرار بدید
Data1.RecordSource = "select * from [نام جدول ] where [نام فیلد] like '" + Text1.Text + "*' "
DBGrid1.Refresh
Data1.Refresh

vahidm
چهارشنبه 29 اسفند 1386, 23:42 عصر
توجه در بالا فیلد 0 منظور فیلد شماره دانشجویی هست
اگه متوجه نشدید پیام بزارید تا راهنمایی کنم

فاطمه وطن دوست
چهارشنبه 29 اسفند 1386, 23:53 عصر
سلام ، با تبریک فرا رسیدن سال نو .
میتونید این طوری بررسی کنید .
البته با اجازه سایر دوستان .


On Error Resume Next
address = App.Path + "\db12.mdb"
con.Provider = "Microsoft.Jet.OLEDB.4.0"
con.ConnectionString = "Persist Security Info=False;Data Source=" & address
con.Open
MYrec.CursorLocation = adUseClient
MYrec.Open "select * from moshakhasat where id=" & Val(Text1.Text) AND CODEDARS=" & Val(Text2.Text) , con, adOpenDynamic, adLockOptimistic, adCmdText
IF REC.EOF THEN
MsgBox ("NO")
ELSE
MYrec.addnew
MYrec.Fields("code") = Text1.Text
MYrec.Update
MsgBox ("YES")
End If

************************************************** *************

توضیحات
**********

On Error Resume Next : این یعنی بهت پیغام خطا نداه ( مثلا : وقتی همه فیلدات پر نیست مثلا تو زمان نمایش ، ممکنه بهت پیغام خطا بده مثلا اینو بهت بگه .

Run Time eror 94
invalid Use Of Null
************************************************** *************


در واقع اول با یه دستور SQL میای کل رکوردها ی هنرجوتو انتخاب میکنی بعد ، میای تو فیلد نام درس هنرجوت میبینی اون چیزی که قبلا وجود داشته با مقداری که الآن وارد کردی یکیه یا نه . اگه یکی بود پیغام میده NO اگه یکی نبود میره اطلاعات رو ثبت میکنه تو جدولت . بعدشم پیغام میده YES یعنی عملیات ثبت انجام شد.
************************************************** *************
نکته : خودتون این کد و خوشگل مینویسین ، اینا راهنمائی بود .

فاطمه وطن دوست
پنج شنبه 01 فروردین 1387, 00:07 صبح
سلام ، با تبریک فرا رسیدن سال نو .
در مورد سوال 3 : شما لطفا دوباره تنظیمات رو انجام بدید . ( از اول )
کامپیوتره دیگه :لبخند:
بعدشم لطف کنید بگین دقیقا چه کاری انجام میدید ، تا بتونیم بهتر راهنمائی کنیم .
ممنون.

shahpari
پنج شنبه 01 فروردین 1387, 00:51 صبح
خوب اینا که بازم جستجوی ساده بود

قراره برنامه تشخیص بده آقای x فلان درس رو برداشته و بعد از این دیگه نتونه همون
درس رو با استاد دیگه ای برداره
خوب پس دستورات sql باید با جستجوی ساده فرق داشته باشه یعنی رکوردست موقع باز شدن باید تقریبا از همچین دستوری استفاده کنه


recordset.open "select * from table1,table2 where idtable1=idtable2 AND table1.id=" & text1.text & "",connection

اصلا موقع باز شدن یه رکوردست میشه از دستورات ترکیبی اس کیو ال استفاده کرد؟؟؟؟؟

فاطمه وطن دوست
پنج شنبه 01 فروردین 1387, 05:45 صبح
سلام ، با تبریک فرا رسیدن سال نو.
دوست عزیز شما بهتره اول مفصلا راجع به برنامه ای که قراره بنویسی یه توضیح بدید.
تا بتونیم بهتر کمکتون کنیم.
ممنون.
در ضمن تو سایت نمونه زیاد هست در مورد برنامه های بانک اطلاعاتی ، مطمئنا با سرچ به نتیجه خوبی خواهید رسید.
موفق باشید.

shahpari
جمعه 02 فروردین 1387, 01:35 صبح
سئوال که واضحه!

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

مشکلتون حل بشه

فقط کافیه که اگر نتیجه جستجو مثبت بود از ورود داده جلوگیری بشه

REZA-007
شنبه 03 فروردین 1387, 13:33 عصر
سلام به همه دوستان
من تمام راه حل های که بنظرم میرسید امتحان کردم اما مشکل من در سوال 3 کماکان حل نشد. و به این نتیجه رسیدم که شاید مشکل از خود برنامه vb باشه

REZA-007
شنبه 03 فروردین 1387, 13:45 عصر
دوستshahpari عزیز فایل ضمیمه که فرستادید اجرا نمیشه و پیغام خطای زیر را میده
add this project to sourcesafe
با این وجود از زحمت شما تشکر میکنم

shahpari
یک شنبه 04 فروردین 1387, 11:25 صبح
من دوباره برنامرو نگاه کردم مشکلی نداره

شما که فراموش نکردید موقع اجرا برنامه رو از حالت extract خارج کنید؟؟؟

شاید هم وی بی تون مشکل پیدا کرده.

REZA-007
یک شنبه 04 فروردین 1387, 20:51 عصر
دوستان عزیز سلام
مشکل من در سوال 3 همچنان پا برجاست
دیگه دارم نا امید میشوم کسی نیست که بتونه کمکم کنه حتی vb و win را هم مجددا نصب کردم

REZA-007
یک شنبه 04 فروردین 1387, 21:36 عصر
سلامی دوباره
در پاسخ به دوست گرامی خانم وطن دوست باید بگم که من ابتدا در فرمم چند text box قراردادم و بعد جدولی در اکسس درست کردم و در آخر هم با adodc فیلدهای جدول را به text هام متصل کردم
باید بگم که در ابتدا همه چیز درست بود ومشکلی نبود در حقیقت مشکل من از جای شروع شد کا به اشتباه فیلد شماره دانشجوی و تاریخ ثبت نام را پاک کردم وبا وجود اینکه آنها را مجددا درست کردم وحتی جدولم را هم دوباره درست کردم اما مشکل حل نشد
حتیvbرا مجدد نصب کردم اما...

فاطمه وطن دوست
یک شنبه 04 فروردین 1387, 22:04 عصر
سلام
لطفا اینو نمونه رو نگاه کنید ببینید همون خطائی که به شما هم میده .

shahpari
یک شنبه 04 فروردین 1387, 22:17 عصر
3_در زمان اجرای برنامه پیغام زیر نمایش داده میشود که علتش را نمیدانم
unable to bind to fild or datamember:"name filde"
ممنون از راهنمای همه سروران گرامی
reza_1385_2007@yahoo.com

سلام خانم وطن دوست

error ی که دوستمون میگن اینه که پر رنگ کردم:تشویق:

فاطمه وطن دوست
یک شنبه 04 فروردین 1387, 22:43 عصر
سلام
نمونه ضمیمه شده نیز بیانگر همین خطا هست .

shahpari
یک شنبه 04 فروردین 1387, 23:00 عصر
ولی رو سیستم من خطایی که می ده این تصویری که ضمیمه کردم

فاطمه وطن دوست
یک شنبه 04 فروردین 1387, 23:37 عصر
ببین OK کن ببین درست میشه یا نه
این به خاطره اینه که من از APP.PATH ( در واقع به صورت برنامه نویسی) ADO رو تنظیم نکردم
همین خیلی راحت میتونی حلش کنی.




Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\db12.mdb"
Adodc1.RecordSource = "moshakhasat"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1

shahpari
یک شنبه 04 فروردین 1387, 23:44 عصر
خسته نباشی

مثل این که دوستمون مشکلشون حل شده ولی من و شما هنوز اصرار داریم خطای ایشون رو حل کنیم:قهقهه:

ولی من که ok کردم مشکل کامل حل شده و دیگه از اون خطایی که مد نظر شما بود خبری نیست

REZA-007
یک شنبه 11 فروردین 1387, 20:52 عصر
دست همه درد نکنه
کامپیوترم خراب شد به همین دلیل نتونستم به تاپیک سر بزنم
اما حتما برنامه را مجدد تست میکنم واگه مشکل حل نشده بود حتما مزاحم دوستان میشم