مشاهده نسخه کامل
: پرسش و پاسخ های رایج دیتابیس (FAQ Database)
سلام:5:
در این تاپیک سوال های رایج در مورد دیتابیس های دلفی قرار داده میشه
که دوستان سریع تر به موضوع مورد نظرشون برسن. من خودم
توی هر پست یک فرمان و خاصیتش رو میزارم. اگر چیزی
یادم رفته. لطفآ با پیغام خصوصی بهم اطلاع بدید. تا اضافه بشه.
فعلآ خداحافظ.
سلام
ديتابيسي از نوع SQL وجود نداره .:41:
SQL با بانک اطلاعاتی Sql Server فرق میکنه. که پایین متوجه میشید.
یک زبان پرس و جو از دیتابیس هست و روی خیلی از دیتابیس ها جواب میده.
SQL زبانی که توسط بیشتر پایگاه داده ها Support میشه و زبانی برای کار
با پایگاه داده ها(Access و SQL Server و Oracle و ...) است و تقریبا هر کاری
میشه با پایگاه داده باهاش انجام داد مثل : انتخاب ، حذف ، ویرایش ، Backup و ....
برای اجرای دستورات SQL لازم نیست چیزی نصب بشه و برای استفاده ازش
کافیه که یاد گرفت ازش استفاده کرد.:20:
موفق باشید. خداحافظ
سلام
برای اینکار دو راه وجود داره. اولی Locate هست و بعدی هم Filter
اولي ( Locate ) برای جستجو در بانک اطلاعاتی به کار می ره ...
دومی ( Filter ) برای نمایش رکوردهای خاصی در جدول به کار می رود ...
به یک نکته توجه داشته باشید که Locate فقط رکورد اول رو پیدا میکنه.
اما فیلتر قابلیت پیدا کردن چند رکورد رو داره و میتونید با دستور های خاصی
به رکورد های بعدی که پیدا کرده برید ...
اول فرمان Locate :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا هم فرمان Filter
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این هم برای فیلتر کردن بر اثاث نوشته های یک Edit.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر چیزی یادم رفته با پیغام خصوصی بهم اطلاع بدید.:19:
موفق و سربلند باشید. :46:
سلام
خوب دستور فیلتر رو یاد گرفتید. اما سوال اینه که وقتی
یک کلمه رو فیلتر کردیم و لیستی از رکورد ها انتخاب شد چطور در اون لیست حرکت کنیم؟
با این کدها میشه در لیست فیتلر شده حرکت کنید.
بعدی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
قبلی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اولی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آخری
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید . بای
سلام
خوب سوال خیلی ها هست که چطوری به یه رکورد جهش پیدا کنیم ؟
چند راه هست. که کد رو همراه توضیح نوشتم.:31:
رفتن به رکورد بعدی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رفتن به رکورد قبلی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رفتن به رکورد اول
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رفتن به رکورد آخر
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رفتن به تعداد دلخواه بعد
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توجه : برای رفتن به تعداد دلخواه قبل باید قبل از تعداد منفی "-" بزارید. این هم کد
رفتن به تعداد دلخواه قبل
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فقط به جای "تعداد" عددی بزارید که قبل و بعد برید.:27:
همه این دستور ها برای جهش به رکورد در دیتابیس هستند و ربطی به لیست فیلتر هم نداره.
موفق باشید. خداحافظ:10:
سلام
این هم چندمین پرسش و پاسخ امشب :18:
چرا وقتی رکورد اولی هستیم و دستور میدیم به رکورد قبلی بریم خطای BOF را میگیره ؟
و همچنین آخر باشیم و دستور رکورد بعدی رو بدیم خطای EOF را میگیره؟
خوب BOF مخفف Begin Of File هست ، یعنی در اول هستیم و قبلی وجود نداره
و همچنین EOF هم مخفف End of File هست و در آخر فایل دیتابیس قرار داریم و بعدی وجود نداره
توضیحات کامل تر و بیشتر رو از زبان دوستمان بشنویم.:46:
سلام
EOF و BOF چیه؟
BOF یا (Begin Of File) اشاره گری که قبل از اولین رکورد قرار
می گیره و EOF یا (End Of File) اشاره گری که بعد از آخرین رکورد قرار
می گیره
یه مثال(رنگ آبی رکورد فعال)
BOF
رکورد 1
رکورد 2
رکورد 3
EOF
Table.First
BOF
رکورد 1
رکورد 2
رکورد 3
EOF
Table.Next
BOF
رکورد 1
رکورد 2
رکورد 3
EOF
Table.Next
BOF
رکورد 1
رکورد 2
رکورد 3
EOF
(اطلاعات رکورد 3 رو می ده)
Table.Next
BOF
رکورد 1
رکورد 2
رکورد 3
EOF
روي EOF قرار داره یعنی اطلاعات فایل به آخر
رسیده حالا اگه از FieldByNAme یا FieldValue
استفاده کنی پیغام خطا می ده
در مورد BOF هم دقیقا همین جوریه
چطور میتونیم از این خطاها جلوگیری کنیم؟
قبل از اینکه دستور قبل و بعد رو بدید اول Eof یا Bof را بررسی کنید
بستگی به حرکت داره که کدوم رو بررسی کنید. کد بررسی رو زیر گذاشتم.
یک نمونه برای بررسی Bof
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این هم یک نمونه از بررسی Eof
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یادتون نره بعد از بررسی باید دستور حرکت رو صادر کنید! (انگاری فرمانده لشکر شدید:21: )
موفق باشید. خداحافظ
Payman_62
30-04-2007, 01:47
سلام.
soldier عنوان تاپیک مطابق نظرت ویرایش شد.
از زحمتی که میکشی ممنونم.
سلام
سولجر عزیز من می خواهم با یک Open dialog آدرس یه بانک اطلاعاتی از نوع اکسس رو به برنامه بدم اگه می شه تنظیماتش رو رام بگید .
کل گیر من در اینه که چطور به برنامه بگم بانک از چه نوعیه ، پراوایدر ش چیه و....
اگه یه نمونه هم بزاری ممنونت میشم
منتظرم
ممنون
سلام.
soldier عنوان تاپیک مطابق نظرت ویرایش شد.
از زحمتی که میکشی ممنونم.
سلام پیمان جان
تشکر فراوان.
سلام
سولجر عزیز من می خواهم با یک Open dialog آدرس یه بانک اطلاعاتی از نوع اکسس رو به برنامه بدم اگه می شه تنظیماتش رو رام بگید .
کل گیر من در اینه که چطور به برنامه بگم بانک از چه نوعیه ، پراوایدر ش چیه و....
اگه یه نمونه هم بزاری ممنونت میشم
منتظرم
ممنون
سلام hp جان. کجا بودی نبودی؟
اول از تابع
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فراخوانی تابع
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای دوستانی که میخواهند یک دیتابیس اکسس رو به صورت داینامیک لود کنن
برای فراخوانی تابع آدرسی رو میخواهند بدهند.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دریافت نمونه ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])برای لود کردن دیتابیس اکسس به صورت داینامیک(در برنامه اجرا شده)
نمونه برای دیگران هم بدرد میخوره. :)
موفق باشید.
سلام
دستت درد نکنه سولجر عزیز کارم رو راه انداختی
انشاا... از این به بعد حضوری مستمر و پررنگتر خواهم داشت
موفق باشید
سلام
سولجر عزیز یه دو تاسوال دیگه
اول اینکه این پارامتر هایی رو که برای تابع نوشتی از کجا آمدند . منظورم اینه که شما که همه اینها رو تک تک حفظ نکردی که . احتمالا از یه جا که مربوط به Ado میشه کپی کردی .
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اونجا کجاست که منم برای استفاده های بعدی به همونجا مراجعه کنم
دوم اینکه یه بانک اطلاعاتی از نوع access داریم که شامل چند تا جدوله حالا چطور اسم این جدول ها رو به کاربر نمایش بدم که از بین اونها جدول مورد نظرش رو انتخاب کنه
ممنون
سلام
وقتی با AdoConnection به دیتابیس وصل شدی
تمام اینها رو میتونی توی پروپرتی ConnectionString ببینی و کپی بگیری.
این هم برای گرفتن نام فیلد اول.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای لیست کردن نام تمام فیلد ها . از این کد استفاده کن.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب حالا نام تمامی فیلد ها توی List ذخیره شدن.
میتونی خودت جای دیگه ای که میخواهی ذخیرشون کنی.
موفق باشید.
سلام
خوب این هم یک سوال رایج هست. که خیلی ها باهاش مشکل دارن.
چطور رکورد ایجاد کنیم؟ چطور اطلاعات رو استفاده و یا ویرایش کنیم؟
برای ایجاد رکورد کافیه از این فرمان استفاده کنیم. و یک رکورد خالی به آخر Table اضافه میشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای گرفتن و دادن اطلاعات هم اینطوری عمل کنید.
گرفتن
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دادن یا ویرایش کردم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید
سلام
خوب این هم درد سر خیلی هاست. ساختار دیتابیس چطوریه؟
اینجا ها خیلی وقت ها اشتباه میشه. برای هیمن گفتم خوبه یه توضیح بدم.
اول دیتابیس که معلومه. بانک اطلاعاتی هست که ایجاد میشه و خالی هست.
توی دیتابیس جدول هایی به نام Table هست. که فیلد ها در اون قرار میگیره.
توی جدول ها فیلد هست. که پایین فیلد ها رکورد تعریف میشه.
حالا یک مثال کوچک بزنم. به عکس نگاه کنید.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حالا برای وصل شدن به این بخش ها دقت کنید از چه کمپننت هایی استفاده میشه.
برای دیتابیس. کمپننت هایی مثل AdoConnection و ...
برای جدول ها. کمپننت هایی مثل AdoDataSet , Table و ...
برای رابطه با فیلد ها و رکورد ها از فرمان ها استفاده میشه.
با اینکه خیلی ابتدایی توضیح دادم. میتونید توی آموزش های وصل شدن به دیتابیس های مختلف ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])بیشتر آشنا بشید.
در کل امکانات خیلی فوق العاده ای داره که اگر استفاده نکردید نصف عمرتان بر فناست.
سوالی داشتید ، یا چیزی یادم رفته که بگم به من پیغام خصوصی ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) بزنید.
روز آخر فعالیت.:13: دیگه باید ترک کنم.:2:
موفق باشید. خداحافظ
سلام مجدد
برای گرفتن لیست جداولی که در یک بانک اطلاعاتی از نوع Access قرار دارند میتوان از کد زیر استفاده کرد
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فعلا بای
سلام
این تاپیک رفته بود پایین. گفتم آپدیت بشه.
به زودی چند چیز جدید مینویسم.
سلام:20:
ببخشید مدت هاست که به این تاپیک ادامه ندادم.:11:
خوب برای خیلی ها این سوال پیش میاد! حتی خیلی ها دستورش رو پیدا میکنن اما باز هم مشکل دارن.
اما توی هلپ خود دلفی توضیح داده شده. حالا من هم یه توضیحی بدم به دوستانی که با حذف رکورد مشکل دارن.
قبل از این ما در مورد ف ی ل ت ر کردن دیتابیس آشنا شدیم و حتی انتخاب رکورد مورد نظر. خوب برای حذف آن
خیلی مشکل نداریم. فقط باید از دستور DeleteRecord استفاده کنیم.
اما این دستور تنهایی هیچ کاری نمیکنه. باید مشخص بشه که چه رکورد هایی رو حذف کنه!
توضیحات راهنمای دلفی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توضیحات من در مورد Option های بالا
خوب اولی که arCurrent هست و فقط رکورد مشخص شده رو که روش هستیم رو حذف میکنه.
دومی هم arFiltered که فقط رکورد های از طریق ف ی ل ت ر بهشون دست یافتیم رو حذف میکنه
و سومی هم arAll که همه رکورد های تیبیل ( جدول ) رو حذف میکنه
و آخری هم که مربوط میشه به ADO chapters . که همه رکورد های ....
اما چطوری از اینها استفاده کنیم؟
با توجه به نیازمون یکی از این موارد رو انتخاب میکنیم و داخل پرانتز بعد از دستور مینویسیم.
برای مثال میخواهم از arAll استفاده کنم. و بعد از اجرای این دستور همه رکورد ها حذف میشن.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما ممکنه بعد از اجرا خطا بده. برای اینکه مشکلی پیش نیاد قبل از این دستور باید دستور Edit که به معنی ویرایش هست رو بدید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید:5:
سلام من اومدم دوباره :31:..... خوش اومدم صفا اوردم...
چند تا اشكال دارم البته تو همين 2 صفحه كه خوندم
اصلا فرق delete با delete records چيه ؟؟؟ يا مثلا next باfind next ؟؟؟؟ من 2 تاشم امتحان كردم تازه به نظرم next بهتر اومد حداقلش اينه كه وقتي EOF مي رسيم خطا نميگيره اما خوب وقتي براي Eof ، if ننويسي error ميگيره ؟ insert با append
وقتي اين كد رو مي نويسم مثل شما ، واسم error ميگيره كه undeclared 'arall'
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مي خواستم بپرسم بايد اين كد رو هم اظافه كنم ؟ اگه آره كجا بايد اضافه كنم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
راستي يه پيشنهاد بهتر نيست QuotedStr استفاده كنيم به جاي
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به نظر من كه هم علمي تره فك كنم ايني كه شما نوشتي بيشتر تجربي بوده البته بعضي جا ها تجربه بهتره
ممنون اگه جواب بدين
راستي مشكل ديگم كه اون ور مطرح كرده بودم گفته بودين بيام اين ور مطرح كنم:
همونطر كه قبلا هم گفتم واسه نمايش اطلاعات از dbgrid استفاده كردم كه به يه adodataset.datasource وصله و command text مربوط به اون از Query كه حاصل join دو table هست استفاده ميكنه
وقتي كه ركوردي رو add ميكنم و دكمه show all رو ميزنم واسه نمايش جدولم ركورد اضافه شده رو نشون نميده مگه اين كه دوباره برنامه run شه اما اگه از جدول استفاده كنم به جاي query تغييرات سريع اعمال ميشه و من ميتونم بدون run كردن دوباره برنامه ركوردام رو تمام و كمال ببينم
ميخواستم ببينم اشكال كارم كجاست ؟
بايد از adoquery استفاده ميكردم ؟؟؟ چون اولين برنامه database من هست و تا حالابا adoQ كار نكردم ممكنه بگين چطور ؟
فقط بايد connection و data source رو تنظيم كنم؟ يا چيز ديگه هم لازمه ؟
اينم آخرين مشكلم البته فعلا
مي خوام ركوردي رو كه حذف كردم دوباره بر گردونم ميشه؟
منتظرم ...
آخه من به شما چی بگم.
گفتم بیایید اینجا دستورات اضافه کردن رکورد رو بخونید و عمل کنید اگر حل نشد همونجا بگید...
و گفتم که دستور اضافه کردن رکورد و نمایش DBGrid رو که به کار میبرید رو بنویسید.
مي خواستم بپرسم بايد اين كد رو هم اظافه كنم ؟
نه
راستي يه پيشنهاد بهتر نيست QuotedStr استفاده كنيم به جاي
خوب از این استفاده کن اگر بهتر جواب داد بهم پ خ بده تا توی انجمن مطرح کنم...
مي خوام ركوردي رو كه حذف كردم دوباره بر گردونم ميشه؟
تنها راهش اینه که از دیتابیس BackUp داشته باشی. که توی انجمن جستجو کنی پیدا میکنی...
اصلا فرق delete با delete records چيه ؟؟؟ يا مثلا next باfind next ؟؟؟؟ من 2 تاشم امتحان كردم تازه به نظرم next بهتر اومد حداقلش اينه كه وقتي EOF مي رسيم خطا نميگيره اما خوب وقتي براي find delete ، if ننويسي error ميگيره ؟ add با append
من از Delete استفاده نکردم اما فکر کنم برای فیلد باشه. اما DeleteRecord رو کاملآ توضیح دادم برای حذف رکورد هست.
FindNext برای اینه که وقتی دیتابیس رو Filter کردی و میخواهی توی لیست Filter ها بری جلو.
Next هم برای اینه که همینطوری توی دیتابیس بری به رکورد بعدی...
Append هم برای افزودن رکورد به انتهای رکورد ها که باید بعدش اطلاعات توش بزاری ...
از Add هم استفاده نکردم. اما توی راهنمای دلفی توضیح داده شده...
خوب من تمام اینها رو توی این تاپیک کامل کامل توضیح دادم. شما چطوری متوجه نشدی؟
اول چند بار بخونش. امتحان کن بعد سه پست پشت سر هم بده :D
موفق باشی
خوب مشكلم حل نشد كه اينجا پست دادم ديگه:41:
در ضمن 3 تا مشكل داشتم واسه خاطر اين 3 تا پست دادم اون دفعه قبلي كه همه مشكلاتم رو تو يه پست گفتم ،گفتين يكي يكي مطرح كن منم 3 تا پست دادم كه هر كدوم رو جداگانه آدم حساب كنيد.:31:
در ضمن من پستاتون رو با دقت خوندم و كاملا فهميدم شما چي گفتي اون خط فرمان arall هنوزم مشكل داره
خوب باشه. خیلی هم سخت نگیر. باشه همه پستات آدم های خوبی هستن:D
خوب مشکلت حل شد؟ برای arAll تست میکنم خبرش رو بهتون میدم....
موفق باشید
نه هنوز مشكلم كه مربوط ميشه به Adodataset حل نشده من از طريق adodataset به queryوصل شدم دستوراتشم اينه:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وقتي دكمه ركوردي اضافه ميكنم table ها سريع آپ ميشن اما dbgird ي كه متصل به query آپ نميشه بايد برنامه exit شه يه دور ديگه run شه چي كنم كه همون لحظه آپ شه
از Append به جاي insert هم استفاده كردم نشد ، از دستورات ذخيره سازي هم استفاده كردم (post) بازم نشد
راستي اون دفعه كه گفتم add اشتباه كردم منظورم insert بود :46:
راستي next & findnext ، Delete & deleterecord را هم امتحان كردم فرقي با هم ديگه نداشتند
:27::27::27: دستتون درد نكنه:27::27::27:
ممنون
چرا اينجا رو كسي جواب نميده!!!
سلام
همونطور که میدونید تاپیکی برای سوال کردن داریم
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و اینجا FAQ Database هست که فکر میکنم خیلی ها معنی اون رو نمیدونن...
FAQ = سئوالات رايج پرسيده شده و جواب داده شده.
که من این تاپیک رو ایجاد کردم که سوال و جواب های رایج رو بنویسم که دوستان براحتی
به جواب خودشون برسند و اگر سوال خودشون جز این سوالات نبود. اون رو جداگانه در لینکی که دادم مطرح کنند...
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.