PDA

View Full Version : مشکل در مورد بانکهای اطلاعاتی



harry potter
دوشنبه 26 دی 1384, 08:45 صبح
سلام دوست عزیز
من یه مشکل دارم
که وقتی من یه رکورد به بانک اطلاعاتی اضافه میکنم آخرین رکورد من از بین میره
مشکل 2

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

meh_secure
دوشنبه 26 دی 1384, 12:53 عصر
سلام دوست عزیز
من یه مشکل دارم
که وقتی من یه رکورد به بانک اطلاعاتی اضافه میکنم آخرین رکورد من از بین میره

میشه SQL ی که با اون به جدول وصل میشی رو اینجا بزاری و اون کدی که با استفاده از اون اطلاعات رو اضافه می کنی.

ardvisoor
دوشنبه 26 دی 1384, 13:03 عصر
عمل جستجو بسادگی انجام میشه ، با باز کردن یک رکوردست از جدول مربوطه و یک حلقه While

meh_secure
دوشنبه 26 دی 1384, 13:12 عصر
ولی فکر می کنم استفاده از متد Find در رکوردست خیلی ساده تر باشه و خیلی هم بهتر. چرا؟
چون میشه جستجو با شرطهای ترکیبی و ... رو بکار گرفت و سرعتش هم خیلی بالاتر میره.

ardvisoor
دوشنبه 26 دی 1384, 13:18 عصر
در Find شما از شرطهای ترکیبی نمیتوانید استفاده کنید ، filter اجازه شرطهای ترکیبی را می دهد.

rtech
دوشنبه 26 دی 1384, 13:48 عصر
دوستان میشه بیشتر در مورد جستجو توضیح بدید .
ما برای جستجو در بانک اطلاعاتی آیا باید در اکسس هم چیزی تعریف کنیم .
من فقط میخوام شماره پرسنلی در پنجره Find کاربر وارد کنه بعد رکوردهای مربوط به اون شماره رو نشون بده میشه یک مثال بزنید ممنون میشم

ardvisoor
دوشنبه 26 دی 1384, 13:56 عصر
در اکسس نیازی نیست کاری انجام دهید، اگر عمل جستجو را با یک Recordest انجام می دهید دستور زیر را تایپ کنید
rs.find "fldpersonNo=255
اگر دستور rs.eofنتیجه اش False بود یعنی رکوردهای شما را ÷یدا کرده ولی اینطوری یکی یکی میرود جلو می توانید از filter استفاده کنید
rs.Filter="fldpersonNo=255
یا اصلا موقعی که Recordset را باز می کنید در شرطWhereآن بگذارید.

rtech
دوشنبه 26 دی 1384, 14:09 عصر
من برای ارتباط با بانک اطلاعاتی اکسس از Microsoft Ado Data Control(OLEDB استفاده کردم
اگر نام این آبجکت OLEDB1 باشد برای جستجو باید از دستور OLEDB.recordset.find استفاده کنیم درسته ؟
و اگر فیلد شماره پرسنلی Pnumber باشد باید از چه دستوری بنویسیم تا شماره پرسنلی را وارد و مشخصات آن را جستجو کند .

ardvisoor
دوشنبه 26 دی 1384, 14:18 عصر
راستش من بصورت کامپوننتی Ado Ctrl کار نکردم بلکه بطورت کدی از توی برنامه باهاش کار میکنم یعنی Connection تعریف می کنم و بعد Recordsetو .... به اون صورت مطمئن هستم درست کار می کند اما اینطوری نمیدونم، قائدتا باید درست کار کند اما دستورش رو مطمئن نیستم

harry potter
دوشنبه 26 دی 1384, 21:31 عصر
من یه مشکل دیگه هم دارم:
هر موقع میام یه رکورد اضافه کنم آخرین رکوردم که تو بانک اطلاعاتی هست حذف میشه
و مشکل دوم:هر موقع میام که چند بار با هم رکورد add کنم فقط آخرین رکوردم که زدم add میشه رکوردهای قبلی که با این صفحه add کردم add نمیشن
ممنون اگه راهنماییم کنید:تشویق:

ehsan_ansaripoor
سه شنبه 27 دی 1384, 00:27 صبح
دوست عزیز استفاده از OLEDB برای کار با بانکهای اطلاعاتی بزرگ کنده و به اعتقاد بنده بهتره از DAO استفاده کنی.
در مورد جستجوی یک رکورد به طوری که شما اشاره کردید بهترین راه استفاده از دستورات SQL هستش به صورت زیر :


Data1.DataSource="Select * from from Table Where Filed1=" & Text1.Text

در مورد حذف شدن آخرین رکورد هم باید خدمت شما عرض کنم که اضافه کردن چندین رکورد باید پس از هر بار اضافه کردن رکورد Update کنید در غیر اینصورت باید از دستورات SQL استفاده کنید

meh_secure
سه شنبه 27 دی 1384, 00:48 صبح
بنظر من هم addnew نکرده.

harry potter
سه شنبه 27 دی 1384, 10:50 صبح
نه من از addnew استفاده کردم ولی جواب نداد
مثلا موقع وارد کردن چند رکورد فقط رکورد آخر رو وارد میکنه
و اگه دوباره از برنامه خارج شی و دوباره بخای رکورد وارد کنی آخرین رکورد بانک اطلاعاتی رو پاک میکنه:لبخند:

ardvisoor
سه شنبه 27 دی 1384, 12:32 عصر
اگر امکان دارد SOurce را بگذار چون اینطوری معلوم نمیشه کجای کارت اشتباه است

meh_secure
چهارشنبه 28 دی 1384, 11:15 صبح
بعد از addnew کردن باید یک movefirst انجام بدی تا update بشه.
هر addnew یک update نیاز داره. واگر شما update نکنی اطلاعاتت ذخیره نخواهد شد.

ardvisoor
چهارشنبه 28 دی 1384, 12:02 عصر
بعد از Addnew اصلا نیازی به Movefirst نیست، اما به Update نیاز است.

meh_secure
چهارشنبه 28 دی 1384, 15:29 عصر
دوستمون ardvisoor درست میگن. بنده اشتباها movefirst رو نوشتم ولی اگر از movefirst برای edit استفاده کنی اونوقت اونم عمل میکنه.

ehsan_ansaripoor
چهارشنبه 28 دی 1384, 19:50 عصر
نه من از addnew استفاده کردم ولی جواب نداد
مثلا موقع وارد کردن چند رکورد فقط رکورد آخر رو وارد میکنه
و اگه دوباره از برنامه خارج شی و دوباره بخای رکورد وارد کنی آخرین رکورد بانک اطلاعاتی رو پاک میکنه:لبخند:

دوست عزیز این مساله که می فرمایید ممکنه به خاطر استفاده از منابع OLEDB هم باشه.

همین طوری که دوستمون اشاره کرد اگه امکان داره برنامه یا حداقل نمونه ای را Attach کن تا بهتر بتونیم کمک کنیم.

meh_secure
چهارشنبه 28 دی 1384, 22:06 عصر
دوست عزیز این مساله که می فرمایید ممکنه به خاطر استفاده از منابع OLEDB هم باشه.



یعنی Bug به این بزرگی ؟؟؟
اگه سورس باشه خیلی بهتر میشه روش اظهار نظر کرد. سورس هم نشد تکه کد کافیه...

harry potter
پنج شنبه 29 دی 1384, 13:58 عصر
من تونستم با استفاده از کمک شما دوستان مشکلم رو حل کنم
حلا من یه مشکل دیگه دارم:
چطوری میتونم به یه رکورد در یه فیلد مقدار بدم
من کد زیر رو بکار میبرم ولی اشکال میگیره لطفآ بگید اشکال از کجاست

Data1.Recordset.Fields !a ="ali"
مثلا من میخوام به فیلد a رشته ali رو اختصاص بدم:لبخند:

rtech
پنج شنبه 29 دی 1384, 16:52 عصر
دوستان من برای کار با بانک اطلاعاتی در وی بی از Microsoft Data Control استفاده میکنم آیا روش دیگری هم هست که بشه باهاش کار کرد
میشه یک کتاب در مورد بانک اطلاعاتی معرفی کنید

harry potter
پنج شنبه 29 دی 1384, 17:20 عصر
آره راه دیگه ای هم هست از activex زیر استفاده کن
microsoft active data control 6.0:لبخند:

rtech
پنج شنبه 29 دی 1384, 21:12 عصر
میشه طرز استفادشو بگی آیا در خود VB وجود داره یا باید به صورت جداگانه بگیرم
من زیاد از کدهای SQL سر در نمیارم و میخوام به صورت ساده تری و با استفاده از ابزارهای دیگه از بانک اطلاعاتی MDB استفاده کنم
مشکل من بیشتر در مورد جستجو با ابزار Microsoft ADO Data میباشد .
با تشکر از شما

meh_secure
جمعه 30 دی 1384, 10:58 صبح
در Refrence ها موجوده و باید به برنامه ات اضافه کنی مثل File system object

rtech
جمعه 30 دی 1384, 20:27 عصر
جستجوی من در مورد شماره پرسنلی میباشد یعنی فقط شمارست چه دستوری باید بنویسم که عدد یا شماره پرسنلی را جستجو و فیلدهای مربوط به آن را نمایش دهد

meh_secure
جمعه 30 دی 1384, 22:13 عصر
خب بهتره کدهای Sql رو یاد بگیری چون واقعا لازمه.
در مورد اون دستور هم باید اینطور عمل کنی.

adodc.recordsource = "select * from YOURTABLE where PERSONID = SOMEVALUE