PDA

View Full Version : آموزش: یه برنامه با همه امکانات با دیتابیس Access



ehsanara
جمعه 25 تیر 1389, 01:34 صبح
سلام دوستان
برنامه ای که نوشتم برا دوستانیه که از پایگاه Access استفاده میکنن
شامل:
درج
حذف
ویرایش
و 3نوع جستجو که یکیش real timeهست
تقریبا All in one نوشتم :بامزه:که هرکی هرجا که مشکل داشت بتونه از کدش استفاده کنه

امیدوارم به دردتون بخوره

ehsanara
جمعه 25 تیر 1389, 13:36 عصر
برا Sql هم میشه از همین کد استفاده کرد با یه سری تغییرات

اَرژنگ
جمعه 25 تیر 1389, 14:37 عصر
برا Sql هم میشه از همین کد استفاده کرد با یه سری تغییرات
دوست عزیز،
با تشکر از سعی و زحماتتان.
به این http://barnamenevis.org/forum/showthread.php?p=952137#post952137 یک نگاه بندازید و ازش به عنوان یک حداقل معیار برایه مثالهایه که درست میکنید استفاده کنید، به این شکل سطح یادگیری را در این تالار بالا ببرید.

موفق باشید

ehsanara
جمعه 25 تیر 1389, 14:52 عصر
من متوجه منظورتون نشدم که چیو از اون تالار بعنوان حداقل معیار استفاده کنم!!!

اَرژنگ
جمعه 25 تیر 1389, 15:33 عصر
من متوجه منظورتون نشدم که چیو از اون تالار بعنوان حداقل معیار استفاده کنم!!!
لینک به یک مثال بود.
در ساختن مثالها، داشتن یک حداقل معیار که کدهایه لایه منطقی و کار با داتابیس را در فرم ریخته نشند. اینکه رشته‌هایه کانکشن را در هر فرم کپی و در کل پروژه پخش نشد و داشتن یک حداقل نظم و انظبات در برنامه‌نویسی و دسته بندی کدها.

ehsanara
جمعه 25 تیر 1389, 15:40 عصر
لینک به یک مثال بود.
در ساختن مثالها، داشتن یک حداقل معیار که کدهایه لایه منطقی و کار با داتابیس را در فرم ریخته نشند. اینکه رشته‌هایه کانکشن را در هر فرم کپی و در کل پروژه پخش نشد و داشتن یک حداقل نظم و انظبات در برنامه‌نویسی و دسته بندی کدها.

آرژنگ جان اگه منظورت برنامه نویسی بصورت چند لایه هست درست می گی
من خودم 3لایه برنامه نویسی می کنم ضمنا با پایگاه SQL که 2نوع BackUp میگیره که یه BackUpرو تصورت آنلاین Convert می کنه به Access یعنی هر لحظه که اطلاعات DB تغییر میکنه Access هم تفییر می کنه
من این برنامه رو به این دلیل بصورت تفکیک شده نوشتم که هرکس از هر قسمتی که خواست اسبفاده کنه و بدونه چی به چی شده به این دلیل که سوال در این مورد زیاد میبینم اینجا

اَرژنگ
جمعه 25 تیر 1389, 16:04 عصر
آرژنگ جان اگه منظورت برنامه نویسی بصورت چند لایه هست درست می گی
من خودم 3لایه برنامه نویسی می کنم ضمنا با پایگاه SQL که 2نوع BackUp میگیره که یه BackUpرو تصورت آنلاین Convert می کنه به Access یعنی هر لحظه که اطلاعات DB تغییر میکنه Access هم تفییر می کنه
من این برنامه رو به این دلیل بصورت تفکیک شده نوشتم که هرکس از هر قسمتی که خواست اسبفاده کنه و بدونه چی به چی شده به این دلیل که سوال در این مورد زیاد میبینم اینجا
پس اینکه اینکارها را با روش‌هایه درست چطوری انجام داد فکر کنید. وقتی تازه کارها به کار یک نفر حرفه‌ای نگاه میکنند هرچی را که میبنند دوباره تقلید میکنند. تمام همان سوالات تکراری را میشه با یک مثال که از روشهای اشتباه استفاده نمیکنه نشان داد که سطح یادگیری را بالا ببره.
فکر کنید که یک تازه کار به این مثال نگاه بندازه، تمام اشتباهاتی که در برنامه‌نویسی جایی ندارند را میبینه. به این شکل بیشتر از فایده باعث ضرر میشه، چونکه از سر دراوردن روشهایه اشتباه از همان اول یاد ندادن سختره.

در ضمن منظورتان را از "هر لحظه که اطلاعات DB تغییر میکنه Access هم تفییر می کنه" متوجه نمیشم، ولی هر چی باشد بازهم به روش درست لایه‌‌ای میشه پیادش کرد.

ehsanara
جمعه 25 تیر 1389, 16:13 عصر
پس اینکه اینکارها را با روش‌هایه درست چطوری انجام داد فکر کنید. وقتی تازه کارها به کار یک نفر حرفه‌ای نگاه میکنند هرچی را که میبنند دوباره تقلید میکنند. تمام همان سوالات تکراری را میشه با یک مثال که از روشهای اشتباه استفاده نمیکنه نشان داد که سطح یادگیری را بالا ببره.
فکر کنید که یک تازه کار به این مثال نگاه بندازه، تمام اشتباهاتی که در برنامه‌نویسی جایی ندارند را میبینه. به این شکل بیشتر از فایده باعث ضرر میشه، چونکه از سر دراوردن روشهایه اشتباه از همان اول یاد ندادن سختره.

در ضمن منظورتان را از "هر لحظه که اطلاعات DB تغییر میکنه Access هم تفییر می کنه" متوجه نمیشم، ولی هر چی باشد بازهم به روش درست لایه‌‌ای میشه پیادش کرد.

کسی که میخواد رانندگی یاد بگیره نمیبرنش تو جاده بگن بشین پشت فرمون
پله پله
اول باید درک درستی از برنامه نویسی پیدا کنن بعد بگی سیستم لایه ای چیه و چطور میشه کد های بهتری نوشت
تا حالا برنامه نویسی درس دادی؟

FastCode
جمعه 25 تیر 1389, 16:22 عصر
ممکنه بگید Realtime کجاشه؟
من چیزی پیدا نکردم.

پروژه قبلی من یه برنامه بود که 3 ماه برای realtime کردنش زحمت کشیدم و هنوز هم جای کار داره.
اگر راهی چیزی داره که ما نمیفهمیم و توی کدتون مخفی شده به ما هم بگو.

ehsanara
جمعه 25 تیر 1389, 16:27 عصر
آخرین textBox با اسم Name
اینم کدشه:



privatevoid txtSearchRealTime_TextChanged(object sender, EventArgs e)
{
string phrase = txtSearchRealTime.Text.Trim().ToLower();
if (phrase != string.Empty)
{
DataTable dt = dtMaster.Clone();
for (int i = 0; i < dtMaster.Rows.Count; i++)
{
if (dtMaster.Rows[i][1].ToString().Trim().ToLower().Contains(phrase))
{
object[] row = dtMaster.Rows[i].ItemArray;
dt.Rows.Add(row);
}
}
dgvStudents.DataSource = dt;
}
else
dgvStudents.DataSource = dtMaster;
}

اَرژنگ
جمعه 25 تیر 1389, 16:34 عصر
کسی که میخواد رانندگی یاد بگیره نمیبرنش تو جاده بگن بشین پشت فرمون
پله پله
اول باید درک درستی از برنامه نویسی پیدا کنن بعد بگی سیستم لایه ای چیه و چطور میشه کد های بهتری نوشت
تا حالا برنامه نویسی درس دادی؟
با نشان دادن روشهایه اشتباه درس ندادم.
یا روش درست نشان داده میشه یا هیچ چی، نشان دادن روشهایه اشتباه که نشد یاد دادن!هر پله باید درست باشد، وگرنه با هر پله اشتباه معلومه که نتیجه آخرش چی میشه.

FastCode
جمعه 25 تیر 1389, 16:34 عصر
آخرین textBox با اسم Name
اینم کدشه:



privatevoid txtSearchRealTime_TextChanged(object sender, EventArgs e)
{
string phrase = txtSearchRealTime.Text.Trim().ToLower();
if (phrase != string.Empty)
{
DataTable dt = dtMaster.Clone();
for (int i = 0; i < dtMaster.Rows.Count; i++)
{
if (dtMaster.Rows[i][1].ToString().Trim().ToLower().Contains(phrase))
{
object[] row = dtMaster.Rows[i].ItemArray;
dt.Rows.Add(row);
}
}
dgvStudents.DataSource = dt;
}
else
dgvStudents.DataSource = dtMaster;
}


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

ehsanara
جمعه 25 تیر 1389, 16:38 عصر
با نشان دادن روشهایه اشتباه درس ندادم.
یا روش درست نشان داده میشه یا هیچ چی، نشان دادن روشهایه اشتباه که نشد یاد دادن!
روش اشتباه رو از نظر شما نمیفهمم چیه!!!

باید اول بفهمن کد چیه ، DB چطور در دسترس هست و...
از اول بگی که سیستم 3لایه فرار میکنن مگه این که مثل شما خیلی مخ باشن

ehsanara
جمعه 25 تیر 1389, 16:41 عصر
این رو دیدم.
ولی تا اونجایی که من میدونم تعریف دقیق Realtime در برنامه های پایگاه داده یعنی این که اطلاعات درون برنامه هرگز با دیتابیس تفاوت نداشته باشند.

عزیزم من نوشتم جستجوی RealTime نه RealTime
یعنی در حال نوشتن اطلاعات رو جستجو میکنه
شما هر حرفی که میزنی همون لحظه جستجو میکنه و نشون میده

ehsanara
جمعه 25 تیر 1389, 16:43 عصر
شما RealTime رو چی میدونید توی جستجو

FastCode
جمعه 25 تیر 1389, 16:50 عصر
جست و جوی realtime یعنی شما توی Textbox بنویسی X و بشینی کنار و منتظر بشی تا بقیه کاربرها یه چیزی ثبت کنن که توش X باشه و شما اون رو ببینید.

ehsanara
جمعه 25 تیر 1389, 16:52 عصر
جست و جوی realtime یعنی شما توی Textbox بنویسی X و بشینی کنار و منتظر بشی تا بقیه کاربرها یه چیزی ثبت کنن که توش X باشه و شما اون رو ببینید.
اگه x تو پایگاه بود چی؟

FastCode
جمعه 25 تیر 1389, 16:54 عصر
x نمیتونه توی پایگاه داده باشه برای همین از ORM استفاده میکنیم.

اَرژنگ
جمعه 25 تیر 1389, 16:57 عصر
روش اشتباه رو از نظر شما نمیفهمم چیه!!!

باید اول بفهمن کد چیه ، DB چطور در دسترس هست و...
از اول بگی که سیستم 3لایه فرار میکنن مگه این که مثل شما خیلی مخ باشن
نه به خدا، مخ لازم نیست، من هم با کلی پژوهش و گشت امتحان کردن تونستم همان مثال ساده را سرهم کنم.
ولی اگر از همان اولش یک مثال ساده و درست که خدمتان اراعه دادم داشتم به تمام زمانی که برایه درکش صرف میشد میارزید.
من باورم اینه که تازه‌کارها روشهایه اشتباه را نمیدونند، برایه همین هم به جایه اینکه به امان خدا ولشان کنند که به هردری بزنند که روشهایه درست را پیدا کنند، از همان اول یک چیزی را که ما با بهترین دانشمان میتونیم سرهم کنیم در اختیارشان قرار بدیم که بالاترین پله‌ای که ما بهش رسیدیم بشه پله شروع برایه اونها.
در ریاضیات،شطرنج، کاراته، به اونهایی که شروع میکنند نمیگند فعلاً این روش اشتباه را تمرین کنید تا بعداً روش درست را یادتان بدیم! چرا در برنامه‌نویسی از همین روش استفاده نکنیم؟
باور کنید اونچیزی که به اسمه روشهایه ساده یاد میدن از روشهایه درست لایه‌ای کار کردن پیچیده‌تر نیستند، منتها همه جا اول کلی زمان را با یاد دان روشهایی که در آخر کار باید دور انداخته بشند تلف میکنند! خوب بعد از اینکه یکی کلی با روشهایه اشتباه کار کرد از سرش انداختن سختر میشه.
امتحانی هم که شده به یک گروه فقط روشهایه درست را نشان بدیم و ببینیم بعد از ۳ ماه اونهایی که با روشهایه اشتباه و ساده شروع کردن مقایسه‌شان کنیم، فکر میکنید کدام گروه بهتر باشد؟

ehsanara
جمعه 25 تیر 1389, 17:11 عصر
نه به خدا، مخ لازم نیست، من هم با کلی پژوهش و گشت امتحان کردن تونستم همان مثال ساده را سرهم کنم.
ولی اگر از همان اولش یک مثال ساده و درست که خدمتان اراعه دادم داشتم به تمام زمانی که برایه درکش صرف میشد میارزید.
من باورم اینه که تازه‌کارها روشهایه اشتباه را نمیدونند، برایه همین هم به جایه اینکه به امان خدا ولشان کنند که به هردری بزنند که روشهایه درست را پیدا کنند، از همان اول یک چیزی را که ما با بهترین دانشمان میتونیم سرهم کنیم در اختیارشان قرار بدیم که بالاترین پله‌ای که ما بهش رسیدیم بشه پله شروع برایه اونها.
در ریاضیات،شطرنج، کاراته، به اونهایی که شروع میکنند نمیگند فعلاً این روش اشتباه را تمرین کنید تا بعداً روش درست را یادتان بدیم! چرا در برنامه‌نویسی از همین روش استفاده نکنیم؟
باور کنید اونچیزی که به اسمه روشهایه ساده یاد میدن از روشهایه درست لایه‌ای کار کردن پیچیده‌تر نیستند، منتها همه جا اول کلی زمان را با یاد دان روشهایی که در آخر کار باید دور انداخته بشند تلف میکنند! خوب بعد از اینکه یکی کلی با روشهایه اشتباه کار کرد از سرش انداختن سختر میشه.
امتحانی هم که شده به یک گروه فقط روشهایه درست را نشان بدیم و ببینیم بعد از ۳ ماه اونهایی که با روشهایه اشتباه و ساده شروع کردن مقایسه‌شان کنیم، فکر میکنید کدام گروه بهتر باشد؟

آرژنگ جان توی پست های اول در جوابت گفتم که حرفت درسته
ولی تفاوت توی شروع یادگیری و روش درست کار زیاده
چرا ما میگیم beginner و Developer
من توی اسم تاپیک ننوشتم یه برنامه کامل نوشتم یه برنامه با تمام امکانات یعنی از نظر کد کامل نیست
من برناماه نویسی تدریس میکنم و خودمم جزء یکی از شرکت های بزرگ برنامه نویسی ایران هستم که داریم میریم سمت برنامه نویسی 5لایه
اگه با کسی که برنامه نویسی رو از پایه بخواد شروع کنه نمیشه حرفه ای کار کرد چون معنیش براش قابل لمس نیست
شما الان به سطحی رسیدی که تفاوت خوب و بد رو توی کد متوجه میشی ولی اگه روز اول بهت میگفتن 3لایه شرووع کن مطمئن باش الانم درک درستی ازش پیدا نمیکردی

ehsanara
جمعه 25 تیر 1389, 17:20 عصر
x نمیتونه توی پایگاه داده باشه برای همین از ORM استفاده میکنیم.
اگه منظورت Object-Relational Mapping هست ایو ببین:
http://en.wikipedia.org/wiki/Object-relational_mapping

اگه منظورت Object Role Modeling هست که یه متد برای طراحی و پرس و جو های پایگاه داده هست و ربسی به این موضوع نداره
احتمالا به همین دلیل هست که 3ماه روش فکر کردی بی نتیجه بوده

FastCode
جمعه 25 تیر 1389, 17:33 عصر
اگه منظورت Object-Relational Mapping هست ایو ببین:
http://en.wikipedia.org/wiki/Object-relational_mapping

اگه منظورت Object Role Modeling هست که یه متد برای طراحی و پرس و جو های پایگاه داده هست و ربسی به این موضوع نداره
احتمالا به همین دلیل هست که 3ماه روش فکر کردی بی نتیجه بوده

منظورم همون اولیه.
در ضمن کاملا" نتیجه داده.
کد های realtime خیلی پراکنده هستند ولی شماره خط چیز خوبیه.

اَرژنگ
شنبه 26 تیر 1389, 03:29 صبح
آرژنگ جان توی پست های اول در جوابت گفتم که حرفت درسته
ولی تفاوت توی شروع یادگیری و روش درست کار زیاده
چرا ما میگیم beginner و Developer
من توی اسم تاپیک ننوشتم یه برنامه کامل نوشتم یه برنامه با تمام امکانات یعنی از نظر کد کامل نیست
من برناماه نویسی تدریس میکنم و خودمم جزء یکی از شرکت های بزرگ برنامه نویسی ایران هستم که داریم میریم سمت برنامه نویسی 5لایه
اگه با کسی که برنامه نویسی رو از پایه بخواد شروع کنه نمیشه حرفه ای کار کرد چون معنیش براش قابل لمس نیست
شما الان به سطحی رسیدی که تفاوت خوب و بد رو توی کد متوجه میشی ولی اگه روز اول بهت میگفتن 3لایه شرووع کن مطمئن باش الانم درک درستی ازش پیدا نمیکردی

لزم نیست کامل باشد، فقط ساده و از روشهایه درست استفاده کند کافیه که یک اصلوب پایگذاری کند که بقیه بقیه بتونند در همان اصلوب پیش برند و کاملش کنند. و یاد دادن هم میشه نظارتکردن به اینکه روشهایه که استفاده میکنند درست هست و یانه.
چند تا از اصول اولیه برنامه نویسی اینها بود:
کم کردن وابستگی بینه کلاسها و یکتا کردن منطق، منتها حتی برایه شروع این اصولها را که باید رعایت بشه را نادیده میگیرند، وگرنه با رعایت این اصولها هر برنامه‌ای به شکل لایه‌ای سعود میکرد.
وقتی که از اول کار شکستن اصولها را نشان میدن، پایبندی به اصول را کی میخواهند یاد بدن؟ شاگرد نمیپرسه الان ۳ ماه به این شکل بهم یاد دادین حالا میخواهید روش را عوض کنم؟ چرا از همان اول روش درست را یاد نمیدین؟


اگر از روز اول میگفتند:
۱.این لایه برایه کار با داتابیس است و فقط کدهایه مربوط به داتبایس در این قسمت قرار میگیره.
۲.این قسمت برایه منطق برنامه است و هیچ چی از قسمت داتابیس و یا یینترفیس در این قسمت قرار میگیره.
۳.این قسمت برایه اینترفیس است و هیچ منطق و یا کارهایه داتابیس را در اینجا انجام نمیدیم.
در ضمن یک مثال ساده که برایه شروع هر ۳ لایه را نمایش داده باشد در اختیار بزارند ، نه اینکه فقط رو هوا بگند برو ۳ لایه بنویس ، بدثنه اینکه یک مثال ساده که شروع کردن کار را آسان کند، اونموقع داستان فرق میکند.
همه جا که برنامه نویسی یاد میدن اول شروع میکنند با یاد دادن چیزهایی که ۳۰ سال پیش یاد میداند، انگاری که هیچ پیش رفتی نشده، زمان و پولی که برایه یاد دادن خورده کاری از مردم میگیرند واقعاً مضحکه. این داستان در مورد دانشگاههایه خارجی هم صدق میکنه، من با دانشجوها در ارتباط هستم و اینکه چقدر از زمانشان مثائل بی‌اهمیت که به کار نمیاند تلف میشه دیدم.
یک مثال ساده ۵ لایه درست اراعه داده بشه که تازه کارها از همون اول روش کار کنند و سوال بپرسند بهتر از اینکه ولشان کند به امان خدا که خودشان راههایه درست را از هوا یاد بگیرند. اگر کسی یاد میده باید نظارت کند و همان زمان اشکلات را بگیره، شاید تکنولوژی برنامه نویسی الان از ۳۰ سال پیش خیلی پیرفت کرده ولی روشهایه یاد دادن عوض نشده.